[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "DiamondWritable__InvalidInitializationParameters", "type": "error" }, { "inputs": [], "name": "DiamondWritable__RemoveTargetNotZeroAddress", "type": "error" }, { "inputs": [], "name": "DiamondWritable__ReplaceTargetIsIdentical", "type": "error" }, { "inputs": [], "name": "DiamondWritable__SelectorAlreadyAdded", "type": "error" }, { "inputs": [], "name": "DiamondWritable__SelectorIsImmutable", "type": "error" }, { "inputs": [], "name": "DiamondWritable__SelectorNotFound", "type": "error" }, { "inputs": [], "name": "DiamondWritable__SelectorNotSpecified", "type": "error" }, { "inputs": [], "name": "DiamondWritable__TargetHasNoCode", "type": "error" }, { "inputs": [], "name": "ERC165Base__InvalidInterfaceId", "type": "error" }, { "inputs": [], "name": "Ownable__NotOwner", "type": "error" }, { "inputs": [], "name": "Ownable__NotTransitiveOwner", "type": "error" }, { "inputs": [], "name": "Proxy__ImplementationIsNotContract", "type": "error" }, { "inputs": [], "name": "SafeOwnable__NotNomineeOwner", "type": "error" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "enum IDiamondWritableInternal.FacetCutAction", "name": "action", "type": "uint8" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "indexed": false, "internalType": "struct IDiamondWritableInternal.FacetCut[]", "name": "facetCuts", "type": "tuple[]" }, { "indexed": false, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "DiamondCut", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "enum IDiamondWritableInternal.FacetCutAction", "name": "action", "type": "uint8" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "internalType": "struct IDiamondWritableInternal.FacetCut[]", "name": "facetCuts", "type": "tuple[]" }, { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "diamondCut", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "selector", "type": "bytes4" } ], "name": "facetAddress", "outputs": [ { "internalType": "address", "name": "facet", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "facetAddresses", "outputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "facet", "type": "address" } ], "name": "facetFunctionSelectors", "outputs": [ { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "facets", "outputs": [ { "components": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "internalType": "struct IDiamondReadable.Facet[]", "name": "diamondFacets", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFallbackAddress", "outputs": [ { "internalType": "address", "name": "fallbackAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nomineeOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fallbackAddress", "type": "address" } ], "name": "setFallbackAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506040516200366e3803806200366e833981016040819052620000349162000e79565b60408051600c8082526101a0820190925260009160208201610180803683370190505090506000632c40805960e01b8282620000708162000ee3565b93508151811062000085576200008562000f0b565b6001600160e01b031990921660209283029190910190910152639142376560e01b8282620000b38162000ee3565b935081518110620000c857620000c862000f0b565b6001600160e01b031990921660209283029190910190910152620000f5632f40adcf60e21b6001620004e6565b6307e4c70760e21b82826200010a8162000ee3565b9350815181106200011f576200011f62000f0b565b6001600160e01b0319909216602092830291909101909101526200014c6307e4c70760e21b6001620004e6565b637a0ed62760e01b8282620001618162000ee3565b93508151811062000176576200017662000f0b565b6001600160e01b0319909216602092830291909101909101526356fe50af60e11b8282620001a48162000ee3565b935081518110620001b957620001b962000f0b565b6001600160e01b0319909216602092830291909101909101526314bbdacb60e21b8282620001e78162000ee3565b935081518110620001fc57620001fc62000f0b565b6001600160e01b0319909216602092830291909101909101526366ffd66360e11b82826200022a8162000ee3565b9350815181106200023f576200023f62000f0b565b6001600160e01b0319909216602092830291909101909101526200026c6348e2b09360e01b6001620004e6565b6301ffc9a760e01b8282620002818162000ee3565b93508151811062000296576200029662000f0b565b6001600160e01b031990921660209283029190910190910152620002c36301ffc9a760e01b6001620004e6565b638da5cb5b60e01b8282620002d88162000ee3565b935081518110620002ed57620002ed62000f0b565b6001600160e01b03199092166020928302919091019091015263455a8a8560e11b82826200031b8162000ee3565b93508151811062000330576200033062000f0b565b6001600160e01b03199092166020928302919091019091015263f2fde38b60e01b82826200035e8162000ee3565b93508151811062000373576200037362000f0b565b6001600160e01b0319909216602092830291909101909101526379ba509760e01b8282620003a18162000ee3565b935081518110620003b657620003b662000f0b565b6001600160e01b031990921660209283029190910190910152620003e36307f5828d60e41b6001620004e6565b604080516001808252818301909252600091816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620003fa5790505060408051606081019091523081529091506020810160008152602001848152508160008151811062000460576200046062000f0b565b60200260200101819052506200048e816000604051806020016040528060008152506200055d60201b60201c565b62000499336200075e565b5050506000620004ae620007d860201b60201c565b905080620004bd848262000fc5565b5060018101620004ce838262000fc5565b50600201805460ff1916601217905550620011e49050565b6001600160e01b03198083169003620005125760405163b0a19dd560e01b815260040160405180910390fd5b6001600160e01b03199190911660009081527ffc606c433378e3a7e0a6a531deac289b66caa1b4aa8554fd4ab2c6f1570f92d860205260409020805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc94547f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc939061ffff811690819060009060071615620005cd5750600381901c60009081526002840160205260409020545b60005b8751811015620006cc576000888281518110620005f157620005f162000f0b565b602002602001015190506000816020015190508160400151516000036200062b5760405163eb6c3aeb60e01b815260040160405180910390fd5b600081600281111562000642576200064262000f21565b0362000661576200065687868685620007fc565b9095509350620006c1565b600181600281111562000678576200067862000f21565b0362000690576200068a878362000944565b620006c1565b6002816002811115620006a757620006a762000f21565b03620006c157620006bb8786868562000a93565b90955093505b5050600101620005d0565b50828214620006e95760018401805461ffff191661ffff84161790555b60078216156200070c57600382901c600090815260028501602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738787876040516200074193929190620010bf565b60405180910390a162000755868662000cbf565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046080546040516001600160a01b038481169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a380546001600160a01b0319166001600160a01b0392909216919091179055565b7f2967a798b92539a1b9eefe4d8eb931f96b68d27665e276f1bee2d5db7f74304790565b805160009081906001600160a01b0316301480159062000825575082516001600160a01b03163b155b156200084457604051633ddc5cab60e21b815260040160405180910390fd5b60005b836040015151811015620009375760008460400151828151811062000870576200087062000f0b565b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c15620008bd57604051634923a77160e11b815260040160405180910390fd5b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c199990991617978190036200092757600389901c600090815260028b0160205260408120989098555b5050506001958601950162000847565b5093959294509192505050565b80516001600160a01b03163b6200096e57604051633ddc5cab60e21b815260040160405180910390fd5b60005b81604001515181101562000a8e576000826040015182815181106200099a576200099a62000f0b565b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c80620009e7576040516337e25a9760e11b815260040160405180910390fd5b306001600160a01b0382160362000a115760405163e983573160e01b815260040160405180910390fd5b84600001516001600160a01b0316816001600160a01b03160362000a48576040516330baabf360e11b815260040160405180910390fd5b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166001600160601b039190911617905560010162000971565b505050565b805160009081906001600160a01b03161562000ac257604051633ab3490960e21b815260040160405180910390fd5b600385901c6007861660005b85604001515181101562000cab5760008660400151828151811062000af75762000af762000f0b565b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c62000b43576040516337e25a9760e11b815260040160405180910390fd5b30606082901c0362000b685760405163e983573160e01b815260040160405180910390fd5b600089900362000b9657600019909401600081815260028c0160205260409020549850936007935062000b9e565b600019909301925b600584901b89901b6000806001600160e01b03198084169086161462000bf1576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166001600160601b0386161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b1687821462000c5657600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c17905562000c7a565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8660000362000c9957600088815260028f01602052604081208190559b505b50506001909301925062000ace915050565b5060039190911b1796939550929350505050565b8051156001600160a01b038316151462000cec576040516326df4ccd60e01b815260040160405180910390fd5b6001600160a01b0382161562000da8576001600160a01b038216301462000d36576001600160a01b0382163b62000d3657604051633ddc5cab60e21b815260040160405180910390fd5b6000826001600160a01b03168260405162000d529190620011c6565b600060405180830381855af49150503d806000811462000d8f576040519150601f19603f3d011682016040523d82523d6000602084013e62000d94565b606091505b505090508062000a8e573d6000803e3d6000fd5b5050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000ddf57818101518382015260200162000dc5565b50506000910152565b600082601f83011262000dfa57600080fd5b81516001600160401b038082111562000e175762000e1762000dac565b604051601f8301601f19908116603f0116810190828211818310171562000e425762000e4262000dac565b8160405283815286602085880101111562000e5c57600080fd5b62000e6f84602083016020890162000dc2565b9695505050505050565b6000806040838503121562000e8d57600080fd5b82516001600160401b038082111562000ea557600080fd5b62000eb38683870162000de8565b9350602085015191508082111562000eca57600080fd5b5062000ed98582860162000de8565b9150509250929050565b60006001820162000f0457634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600181811c9082168062000f4c57607f821691505b60208210810362000f6d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a8e57600081815260208120601f850160051c8101602086101562000f9c5750805b601f850160051c820191505b8181101562000fbd5782815560010162000fa8565b505050505050565b81516001600160401b0381111562000fe15762000fe162000dac565b62000ff98162000ff2845462000f37565b8462000f73565b602080601f831160018114620010315760008415620010185750858301515b600019600386901b1c1916600185901b17855562000fbd565b600085815260208120601f198616915b82811015620010625788860151825594840194600190910190840162001041565b5085821015620010815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008151808452620010ab81602086016020860162000dc2565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200119457898403607f19018652815180516001600160a01b031685528381015189860190600381106200113057634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156200117e5783516001600160e01b031916825292860192600192909201919086019062001152565b50978501979550505090820190600101620010e8565b50506001600160a01b038a16908801528681036040880152620011b8818962001091565b9a9950505050505050505050565b60008251620011da81846020870162000dc2565b9190910192915050565b61247a80620011f46000396000f3fe6080604052600436106100cb5760003560e01c80638ab5150a11610074578063adfca15e1161004e578063adfca15e146102d5578063cdffacc614610302578063f2fde38b14610373576100d2565b80638ab5150a1461028b5780638da5cb5b146102a057806391423765146102b5576100d2565b806352ef6b2c116100a557806352ef6b2c1461023257806379ba5097146102545780637a0ed62714610269576100d2565b806301ffc9a7146101525780631f931c1c146101d85780632c408059146101f8576100d2565b366100d257005b60006100dc610393565b905073ffffffffffffffffffffffffffffffffffffffff81163b61012c576040517f87c9fc3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e80801561014b573d6000f35b3d6000fd5b005b34801561015e57600080fd5b506101c361016d366004611ca8565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527ffc606c433378e3a7e0a6a531deac289b66caa1b4aa8554fd4ab2c6f1570f92d8602052604090205460ff1690565b60405190151581526020015b60405180910390f35b3480156101e457600080fd5b506101506101f3366004611d37565b6103a2565b34801561020457600080fd5b5061020d61045f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cf565b34801561023e57600080fd5b5061024761049f565b6040516101cf9190611de9565b34801561026057600080fd5b506101506106b4565b34801561027557600080fd5b5061027e61072a565b6040516101cf9190611ea0565b34801561029757600080fd5b5061020d610c18565b3480156102ac57600080fd5b5061020d610c22565b3480156102c157600080fd5b506101506102d0366004611f48565b610c2c565b3480156102e157600080fd5b506102f56102f0366004611f48565b610cfd565b6040516101cf9190611f63565b34801561030e57600080fd5b5061020d61031d366004611ca8565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc93602052604090205460601c90565b34801561037f57600080fd5b5061015061038e366004611f48565b610eb9565b600061039d610f2e565b905090565b6103aa610fc6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040e576040517f2f7a8ee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61045861041b8587612088565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061100692505050565b5050505050565b600061039d7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc965473ffffffffffffffffffffffffffffffffffffffff1690565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc94546060907f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc939061ffff1667ffffffffffffffff81111561050257610502611fbd565b60405190808252806020026020018201604052801561052b578160200160208202803683370190505b50915060008060005b600184015461ffff168210156106ac576000818152600285016020526040812054905b6008811015610697578361056a816121eb565b600188015490955061ffff168511905061069757600581901b82901b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020889052604081205460601c90805b8881101561062d578a81815181106105d8576105d8612223565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361061b576001915061062d565b80610625816121eb565b9150506105be565b50801561063c57505050610685565b818a898151811061064f5761064f612223565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101528761067e816121eb565b9850505050505b8061068f816121eb565b915050610557565b505080806106a4906121eb565b915050610534565b505082525090565b6106bc61121c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610720576040517fefd1052d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610728611244565b565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc94546060907f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc939061ffff1667ffffffffffffffff81111561078d5761078d611fbd565b6040519080825280602002602001820160405280156107d357816020015b6040805180820190915260008152606060208201528152602001906001900390816107ab5790505b50600182015490925060009061ffff1667ffffffffffffffff8111156107fb576107fb611fbd565b604051908082528060200260200182016040528015610824578160200160208202803683370190505b50905060008060005b600185015461ffff16821015610ba6576000818152600286016020526040812054905b6008811015610b915783610863816121eb565b600189015490955061ffff1685119050610b9157600581901b82901b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020899052604081205460601c90805b88811015610a18578273ffffffffffffffffffffffffffffffffffffffff168c82815181106108e8576108e8612223565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1603610a0657838c828151811061092257610922612223565b6020026020010151602001518b838151811061094057610940612223565b602002602001015160ff168151811061095b5761095b612223565b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060ff8a82815181106109bb576109bb612223565b602002602001015160ff16106109d057600080fd5b8981815181106109e2576109e2612223565b6020026020010180518091906109f790612252565b60ff1690525060019150610a18565b80610a10816121eb565b9150506108b7565b508015610a2757505050610b7f565b818b8981518110610a3a57610a3a612223565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff909116905260018a015461ffff1667ffffffffffffffff811115610a8057610a80611fbd565b604051908082528060200260200182016040528015610aa9578160200160208202803683370190505b508b8981518110610abc57610abc612223565b602002602001015160200181905250828b8981518110610ade57610ade612223565b602002602001015160200151600081518110610afc57610afc612223565b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506001898981518110610b5c57610b5c612223565b60ff9092166020928302919091019091015287610b78816121eb565b9850505050505b80610b89816121eb565b915050610850565b50508080610b9e906121eb565b91505061082d565b5060005b82811015610c0d576000848281518110610bc657610bc6612223565b602002602001015160ff1690506000878381518110610be757610be7612223565b602002602001015160200151905081815250508080610c05906121eb565b915050610baa565b508185525050505090565b600061039d61121c565b600061039d610fc6565b610c34610fc6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c98576040517f2f7a8ee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905550565b50565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc94546060907f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc939061ffff1667ffffffffffffffff811115610d6057610d60611fbd565b604051908082528060200260200182016040528015610d89578160200160208202803683370190505b50915060008060005b600184015461ffff16821015610eaf576000818152600285016020526040812054905b6008811015610e9a5783610dc8816121eb565b600188015490955061ffff1685119050610e9a57600581901b82901b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020889052604090205460601c73ffffffffffffffffffffffffffffffffffffffff8a1603610e875780888781518110610e4857610e48612223565b7fffffffff000000000000000000000000000000000000000000000000000000009092166020928302919091019091015285610e83816121eb565b9650505b5080610e92816121eb565b915050610db5565b50508080610ea7906121eb565b915050610d92565b5050825250919050565b610ec1610fc6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f2f7a8ee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cfa81611296565b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc93602052604090205460601c80610fc357507f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc965473ffffffffffffffffffffffffffffffffffffffff1690565b90565b60007f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f6716804605b5473ffffffffffffffffffffffffffffffffffffffff16919050565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc94547f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc939061ffff8116908190600090600716156110755750600381901c60009081526002840160205260409020545b60005b875181101561117357600088828151811061109557611095612223565b602002602001015190506000816020015190508160400151516000036110e7576040517feb6c3aeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160028111156110fb576110fb612271565b036111165761110c878686856112fe565b9095509350611169565b600181600281111561112a5761112a612271565b0361113e5761113987836114d1565b611169565b600281600281111561115257611152612271565b0361116957611163878686856116fc565b90955093505b5050600101611078565b508282146111ac576001840180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff84161790555b60078216156111ce57600382901c600090815260028501602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738787876040516112019392919061230e565b60405180910390a16112138686611a70565b50505050505050565b60007f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890610fea565b61124d33611bc7565b7f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce661789080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce661789080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055610cfa81818181565b8051600090819073ffffffffffffffffffffffffffffffffffffffff1630148015906113405750825173ffffffffffffffffffffffffffffffffffffffff163b155b15611377576040517ff77172ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8360400151518110156114c45760008460400151828151811061139f5761139f612223565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000081166000908152918a9052604090912054909150606081901c1561141c576040517f92474ee200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85517fffffffff00000000000000000000000000000000000000000000000000000000838116600081815260208d90526040902060609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168b1790925560058a901b60e090811692831c91831c199990991617978190036114b557600389901c600090815260028b0160205260408120989098555b5050506001958601950161137a565b5093959294509192505050565b805173ffffffffffffffffffffffffffffffffffffffff163b611520576040517ff77172ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160400151518110156116f75760008260400151828151811061154857611548612223565b6020908102919091018101517fffffffff000000000000000000000000000000000000000000000000000000008116600090815291869052604090912054909150606081901c806115c5576040517f6fc4b52e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff821603611614576040517fe983573100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167d576040517f617557e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083517fffffffff0000000000000000000000000000000000000000000000000000000092909216600090815260208690526040902060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116179055600101611523565b505050565b8051600090819073ffffffffffffffffffffffffffffffffffffffff1615611750576040517feacd242400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600385901c6007861660005b856040015151811015611a5c5760008660400151828151811061178157611781612223565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000081166000908152918c9052604090912054909150606081901c6117fd576040517f6fc4b52e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b30606082901c0361183a576040517fe983573100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000899003611884577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909401600081815260028c016020526040902054985093600793506118aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909301925b600584901b89901b6000807fffffffff0000000000000000000000000000000000000000000000000000000080841690861614611949577fffffffff000000000000000000000000000000000000000000000000000000008316600090815260208f90526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555b50507fffffffff000000000000000000000000000000000000000000000000000000008316600090815260208d90526040812055611fff600383901c1660e0600584901b168782146119dc57600082815260028f016020526040902080547fffffffff0000000000000000000000000000000000000000000000000000000080841c19909116908516831c179055611a2d565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198d16179b505b86600003611a4b57600088815260028f01602052604081208190559b505b50506001909301925061175c915050565b5060039190911b1796939550929350505050565b80511573ffffffffffffffffffffffffffffffffffffffff83161514611ac2576040517f26df4ccd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615611bc35773ffffffffffffffffffffffffffffffffffffffff82163014611b495773ffffffffffffffffffffffffffffffffffffffff82163b611b49576040517ff77172ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611b709190612428565b600060405180830381855af49150503d8060008114611bab576040519150601f19603f3d011682016040523d82523d6000602084013e611bb0565b606091505b50509050806116f7573d6000803e3d6000fd5b5050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f671680460805460405173ffffffffffffffffffffffffffffffffffffffff8481169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ca357600080fd5b919050565b600060208284031215611cba57600080fd5b611cc382611c73565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ca357600080fd5b60008083601f840112611d0057600080fd5b50813567ffffffffffffffff811115611d1857600080fd5b602083019150836020828501011115611d3057600080fd5b9250929050565b600080600080600060608688031215611d4f57600080fd5b853567ffffffffffffffff80821115611d6757600080fd5b818801915088601f830112611d7b57600080fd5b813581811115611d8a57600080fd5b8960208260051b8501011115611d9f57600080fd5b60208301975080965050611db560208901611cca565b94506040880135915080821115611dcb57600080fd5b50611dd888828901611cee565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015611e3757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611e05565b50909695505050505050565b600081518084526020808501945080840160005b83811015611e955781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101611e57565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611f3a578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052611f2787850182611e43565b9588019593505090860190600101611ec7565b509098975050505050505050565b600060208284031215611f5a57600080fd5b611cc382611cca565b6020808252825182820181905260009190848201906040850190845b81811015611e375783517fffffffff000000000000000000000000000000000000000000000000000000001683529284019291840191600101611f7f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561200f5761200f611fbd565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561205c5761205c611fbd565b604052919050565b600067ffffffffffffffff82111561207e5761207e611fbd565b5060051b60200190565b600061209b61209684612064565b612015565b83815260208082019190600586811b8601368111156120b957600080fd5b865b818110156121af57803567ffffffffffffffff808211156120dc5760008081fd5b818a019150606082360312156120f25760008081fd5b6120fa611fec565b61210383611cca565b815286830135600381106121175760008081fd5b818801526040838101358381111561212f5760008081fd5b939093019236601f85011261214657600092508283fd5b8335925061215661209684612064565b83815292871b840188019288810190368511156121735760008081fd5b948901945b848610156121985761218986611c73565b82529489019490890190612178565b9183019190915250885250509483019483016120bb565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361221c5761221c6121bc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff8103612268576122686121bc565b60010192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60005b838110156122bb5781810151838201526020016122a3565b50506000910152565b600081518084526122dc8160208601602086016122a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000606080830181845280875180835260808601915060808160051b87010192506020808a016000805b848110156123eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8803018652825173ffffffffffffffffffffffffffffffffffffffff815116885284810151600381106123bc577f4e487b710000000000000000000000000000000000000000000000000000000084526021600452602484fd5b888601526040908101519088018990526123d889890182611e43565b9750509483019491830191600101612338565b50505073ffffffffffffffffffffffffffffffffffffffff8916908701525050838103604085015261241d81866122c4565b979650505050505050565b6000825161243a8184602087016122a0565b919091019291505056fea264697066735822122076853cd43cb7e9ebcdedf6f1260207f37dfb97ecc834f670e6189a453c6d015164736f6c634300081300330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044d494e54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005244d494e54000000000000000000000000000000000000000000000000000000
0xa264697066735822122076853cd43cb7e9ebcdedf6f1260207f37dfb97ecc834f670e6189a453c6d015164736f6c634300081300330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044d494e54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005244d494e54000000000000000000000000000000000000000000000000000000