0 txs
1 call
constructor
constructor(address delegateRegistry_)
functions
delegateRegistry
viewfunction delegateRegistry() view returns (address)
DELEGATION_REGISTRY_TOKEN_OWNER_RIGHTS
viewfunction DELEGATION_REGISTRY_TOKEN_OWNER_RIGHTS() view returns (bytes32)
getProjectConfig
viewfunction getProjectConfig(address coreContract, uint256 projectId) view returns (string[] pmpKeys, uint8 configNonce, address tokenPMPPostConfigHook, address tokenPMPReadAugmentationHook)
getProjectPMPConfig
viewfunction getProjectPMPConfig(address coreContract, uint256 projectId, string pmpKey) view returns (tuple pmpConfigView)
getTokenParams
viewfunction getTokenParams(address coreContract, uint256 tokenId) view returns (tuple[] tokenParams)
getTokenPMPStorage
viewfunction getTokenPMPStorage(address coreContract, uint256 tokenId, string pmpKey) view returns (tuple pmp)
isTokenOwnerOrDelegate
viewfunction isTokenOwnerOrDelegate(address wallet, address coreContract, uint256 tokenId) view returns (bool isTokenOwnerOrDelegate_)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
configureProject
nonpayablefunction configureProject(address coreContract, uint256 projectId, tuple[] pmpInputConfigs)
configureProjectHooks
nonpayablefunction configureProjectHooks(address coreContract, uint256 projectId, address tokenPMPPostConfigHook, address tokenPMPReadAugmentationHook)
configureTokenParams
nonpayablefunction configureTokenParams(address coreContract, uint256 tokenId, tuple[] pmpInputs)
events
DelegationRegistryUpdated
event DelegationRegistryUpdated(address delegationRegistry)
ProjectConfigured
event ProjectConfigured(address coreContract, uint256 projectId, (string key, (uint8 authOption, uint8 paramType, uint48 pmpLockedAfterTimestamp, address authAddress, string[] selectOptions, bytes32 minRange, bytes32 maxRange) pmpConfig)[] pmpInputConfigs, uint8 projectConfigNonce)
ProjectHooksConfigured
event ProjectHooksConfigured(address coreContract, uint256 projectId, address tokenPMPPostConfigHook, address tokenPMPReadAugmentationHook)
TokenParamsConfigured
event TokenParamsConfigured(address coreContract, uint256 tokenId, (string key, uint8 configuredParamType, bytes32 configuredValue, bool configuringArtistString, string configuredValueString)[] pmpInputs, address[] authAddresses)
errors
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162004ea438038062004ea4833981016040819052620000349162000082565b60016000556001600160a01b03811660808190526040519081527f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b9060200160405180910390a150620000b4565b6000602082840312156200009557600080fd5b81516001600160a01b0381168114620000ad57600080fd5b9392505050565b608051614dce620000d66000396000818160cb0152612c060152614dce6000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806313bfffac146100c65780633c303afb1461010557806354ca22371461011a5780636f8637a01461013d57806398a6e11814610150578063af544a611461017a578063b69c984d1461018d578063ba8dba48146101a0578063c2b4f411146101c0578063dc809b1a146101e0575b600080fd5b6100b16100ac3660046138a9565b610200565b60405190151581526020015b60405180910390f35b6100ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100bd565b61011861011336600461393f565b610237565b005b61012d61012836600461399a565b610719565b6040516100bd9493929190613a16565b61011861014b36600461393f565b61077c565b61016c71706f73746d696e74706172616d657465727360701b81565b6040519081526020016100bd565b6100b1610188366004613a9d565b610a9a565b61011861019b366004613ade565b610ab0565b6101b36101ae366004613c3e565b610ca4565b6040516100bd9190613d2a565b6101d36101ce36600461399a565b610e0c565b6040516100bd9190613e4b565b6101f36101ee366004613c3e565b61102c565b6040516100bd9190613e5e565b60006001600160e01b0319821663c2b4f41160e01b148061023157506301ffc9a760e01b6001600160e01b03198316145b92915050565b61023f611202565b61024a84843361122c565b8061010081111561029d5760405162461bcd60e51b8152602060048201526018602482015277504d503a204f6e6c79203c3d2032353620636f6e6669677360401b60448201526064015b60405180910390fd5b60005b818110156103925760008484838181106102bc576102bc613ebb565b90506020028101906102ce9190613ed1565b6102d89080613ef1565b91505080158015906102eb575061010081105b61034f5760405162461bcd60e51b815260206004820152602f60248201527f504d503a20706d704b65792063616e6e6f7420626520656d707479206f72206560448201526e78636565642032353520627974657360881b6064820152608401610294565b61038985858481811061036457610364613ebb565b90506020028101906103769190613ed1565b610384906020810190613f37565b6112e8565b506001016102a0565b506001600160a01b0385166000908152600160208181526040808420888552909152822060028101549092916103cb9160ff1690613f63565b60028301805460ff191660ff831617905590506000836001600160401b038111156103f8576103f8613b31565b60405190808252806020026020018201604052801561042b57816020015b60608152602001906001900390816104165790505b50905060005b848110156104c25786868281811061044b5761044b613ebb565b905060200281019061045d9190613ed1565b6104679080613ef1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845185925084915081106104af576104af613ebb565b6020908102919091010152600101610431565b506104cd8184611a61565b60005b848110156106c55760008460010160006105028585815181106104f5576104f5613ebb565b6020026020010151611af9565b8152602081019190915260400160002080549091506301000000900465ffffffffffff1680158061053257504281115b61058f5760405162461bcd60e51b815260206004820152602860248201527f504d503a20706d70206973206c6f636b656420616e642063616e6e6f74206265604482015267081d5c19185d195960c21b6064820152608401610294565b50805460ff191660ff851617815560008888848181106105b1576105b1613ebb565b90506020028101906105c39190613ed1565b6105d1906020810190613f37565b6105da9061405d565b8051835491925090839061ff0019166101008360068111156105fe576105fe613c96565b021790555060208101518254839062ff000019166201000083600881111561062857610628613c96565b02179055506040810151825460608301516080840151805160ff16600160e81b0260ff60e81b196001600160a01b03909316600160481b02600160481b600160e81b031965ffffffffffff909616630100000002959095166301000000600160e81b03199094169390931793909317161783556106a9906001840190611b29565b60a0810151600283015560c001516003909101556001016104d0565b507f935e8b8dc0c19500cc0d4c29698f1af13be297f62b71eda8dd0e1a0bc6927fca88888888866040516106fd9594939291906141bf565b60405180910390a1505050506107136001600055565b50505050565b6001600160a01b03821660009081526001602090815260408083208484529091528120606091908190819061074d81611deb565b6002820154600390920154909860ff831698506001600160a01b03610100909304831697509116945092505050565b610784611202565b6001600160a01b0384166000908152600160205260408120816107a686612015565b815260200190815260200160002090506000838390506001600160401b038111156107d3576107d3613b31565b6040519080825280602002602001820160405280156107fc578160200160208202803683370190505b50905060005b83811015610a4e57600061087786868481811061082157610821613ebb565b9050602002810190610833919061435e565b61083d9080613ef1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611af992505050565b9050600086868481811061088d5761088d613ebb565b905060200281019061089f919061435e565b6108a890614382565b6001600160a01b038a1660009081526002602081815260408084208d85528252808420878552825280842060018b019092529092209088015492935090916108fa908b908d908690859060ff16612024565b86868151811061090c5761090c613ebb565b6001600160a01b039290921660209283029190910190910152805482546201000090910460ff1690839060ff1916600183600881111561094e5761094e613c96565b02179055506008815462010000900460ff16600881111561097157610971613c96565b036109ae5782606001511561099a576080830151600283019061099490826144c2565b506109b9565b6080830151600383019061099490826144c2565b604083015160018301555b600287015461010090046001600160a01b031615610a3e57600287015460405163677e713560e01b81526101009091046001600160a01b03169063677e713590610a0b908e908e908890600401614581565b600060405180830381600087803b158015610a2557600080fd5b505af1158015610a39573d6000803e3d6000fd5b505050505b5050600190920191506108029050565b507f3dfcd927ac9e2552184b368328e6cca04f875ef453930277d7dfa53f40dbeac48686868685604051610a8695949392919061463d565b60405180910390a150506107136001600055565b6000610aa7828486612b2a565b50949350505050565b610ab8611202565b610ac384843361122c565b6001600160a01b03821615610b5757610ae38263677e713560e01b612c7b565b610b57576040805162461bcd60e51b81526020600482015260248101919091527f504d503a20746f6b656e504d50506f7374436f6e666967486f6f6b20646f657360448201527f206e6f7420696d706c656d656e742049504d50436f6e666967757265486f6f6b6064820152608401610294565b6001600160a01b03811615610bf757610b77816358f8699f60e01b612c7b565b610bf75760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20746f6b656e504d50526561644175676d656e746174696f6e486f6f908201527f6b20646f6573206e6f7420696d706c656d656e742049504d504175676d656e74606482015263486f6f6b60e01b608482015260a401610294565b6001600160a01b038481166000818152600160209081526040808320888452825291829020600281018054610100600160a81b031916610100898816908102919091179091556003820180546001600160a01b031916968816968717905583519485529184018890529183015260608201929092527fd7a93580965b5dbb5c8a723af5a48167de5f41dc65e456be819bf739da05ce389060800160405180910390a1506107136001600055565b610cf360408051610120810190915260008082526020820190815260200160008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b6001600160a01b038416600090815260016020818152604080842087855290915282200181610d2185611af9565b8152602080820192909252604001600020805460ff8082168652919350918401916101009004166006811115610d5957610d59613c96565b90816006811115610d6c57610d6c613c96565b9052508054604083019062010000900460ff166008811115610d9057610d90613c96565b90816008811115610da357610da3613c96565b90525080546301000000810465ffffffffffff166060840152600160481b81046001600160a01b03166080840152600160e81b900460ff1660a0830152610dec60018201611deb565b60c0830152600281015460e0830152600301546101008201529392505050565b60606000610e1983612015565b6001600160a01b03851660009081526001602090815260408083208484529091528120919250610e4882611deb565b8051909150806001600160401b03811115610e6557610e65613b31565b604051908082528060200260200182016040528015610eaa57816020015b6040805180820190915260608082526020820152815260200190600190039081610e835790505b5094506000805b82811015610f8c576000610ed08583815181106104f5576104f5613ebb565b600081815260018801602090815260408083206001600160a01b038f168452600283528184208e85528352818420858552909252822092935090918291610f1691612c9e565b9150915081610f2757505050610f84565b6040518060400160405280888681518110610f4457610f44613ebb565b60200260200101518152602001828152508a8681518110610f6757610f67613ebb565b60200260200101819052508480610f7d9061474b565b9550505050505b600101610eb1565b5080865260038401546001600160a01b0316156110215760038401546040516358f8699f60e01b81526001600160a01b03909116906358f8699f90610fd9908b908b908b90600401614764565b600060405180830381865afa158015610ff6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101e91908101906147d8565b95505b505050505092915050565b61105660408051608081019091528060008152600060208201526060604082018190529081015290565b6001600160a01b038416600090815260026020908152604080832086845290915281209061108384611af9565b8152602081019190915260409081016000208151608081019092528054829060ff1660088111156110b6576110b6613c96565b60088111156110c7576110c7613c96565b8152602001600182015481526020016002820180546110e590614438565b80601f016020809104026020016040519081016040528092919081815260200182805461111190614438565b801561115e5780601f106111335761010080835404028352916020019161115e565b820191906000526020600020905b81548152906001019060200180831161114157829003601f168201915b5050505050815260200160038201805461117790614438565b80601f01602080910402602001604051908101604052809291908181526020018280546111a390614438565b80156111f05780601f106111c5576101008083540402835291602001916111f0565b820191906000526020600020905b8154815290600101906020018083116111d357829003601f168201915b50505050508152505090509392505050565b60026000540361122557604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60405163a47d29cb60e01b8152600481018390526001600160a01b03808316919085169063a47d29cb90602401602060405180830381865afa158015611276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129a91906148e3565b6001600160a01b0316146112e35760405162461bcd60e51b815260206004820152601060248201526f1413540e881bdb9b1e48185c9d1a5cdd60821b6044820152606401610294565b505050565b60006112fa6040830160208401614900565b9050600061130b602084018461491b565b9050600082600881111561132157611321613c96565b0361136e5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20706172616d5479706520697320756e636f6e6669677572656400006044820152606401610294565b61137e6060840160408501614936565b65ffffffffffff1615806113a857504261139e6060850160408601614936565b65ffffffffffff16115b6114285760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20706d704c6f636b6564416674657254696d657374616d7020697320908201527f696e20746865207061737420616e64206e6f7420756e6c696d6974656420287a60648201526365726f2960e01b608482015260a401610294565b600681600681111561143c5761143c613c96565b11156114845760405162461bcd60e51b81526020600482015260176024820152762826a81d1024b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b600882600881111561149857611498613c96565b11156114b65760405162461bcd60e51b815260040161029490614951565b60088260088111156114ca576114ca613c96565b036115a05760008160068111156114e3576114e3613c96565b1480611500575060038160068111156114fe576114fe613c96565b145b8061151c5750600681600681111561151a5761151a613c96565b145b806115385750600481600681111561153657611536613c96565b145b6115a05760405162461bcd60e51b815260206004820152603360248201527f504d503a20537472696e6720706172616d73206d75737420686176652061727460448201527234b9ba159030baba3432b73a34b1b0ba34b7b760691b6064820152608401610294565b60028160068111156115b4576115b4613c96565b14806115d1575060058160068111156115cf576115cf613c96565b145b806115ed575060048160068111156115eb576115eb613c96565b145b806116095750600681600681111561160757611607613c96565b145b156116765760006116206080850160608601614981565b6001600160a01b0316036116715760405162461bcd60e51b8152602060048201526018602482015277504d503a206175746841646472657373206973207a65726f60401b6044820152606401610294565b6116dd565b60006116886080850160608601614981565b6001600160a01b0316146116dd5760405162461bcd60e51b815260206004820152601c60248201527b504d503a206175746841646472657373206973206e6f74207a65726f60201b6044820152606401610294565b60028260088111156116f1576116f1613c96565b148061170e5750600882600881111561170c5761170c613c96565b145b8061172a5750600682600881111561172857611728613c96565b145b156117f95761173c608084018461499e565b15905061175b5760405162461bcd60e51b8152600401610294906149e7565b60a0830135156117aa5760405162461bcd60e51b815260206004820152601a602482015279504d503a206d696e52616e6765206973206e6f7420656d70747960301b6044820152606401610294565b60c0830135156112e35760405162461bcd60e51b815260206004820152601a602482015279504d503a206d617852616e6765206973206e6f7420656d70747960301b6044820152606401610294565b600182600881111561180d5761180d613c96565b036118cd576000611821608085018561499e565b90501161186e5760405162461bcd60e51b815260206004820152601b60248201527a504d503a2073656c6563744f7074696f6e7320697320656d70747960281b6044820152606401610294565b61010061187e608085018561499e565b90501061175b5760405162461bcd60e51b815260206004820152601f60248201527f504d503a2073656c6563744f7074696f6e73206c656e677468203e20323535006044820152606401610294565b60038260088111156118e1576118e1613c96565b14806118fe575060048260088111156118fc576118fc613c96565b145b8061191a5750600582600881111561191857611918613c96565b145b806119365750600782600881111561193457611934613c96565b145b15611a4957611948608084018461499e565b1590506119675760405162461bcd60e51b8152600401610294906149e7565b600482600881111561197b5761197b613c96565b036119b05760a083013560c08401358082126119a95760405162461bcd60e51b815260040161029490614a1e565b5050505050565b60a083013560c08401358082106119d95760405162461bcd60e51b815260040161029490614a1e565b60078460088111156119ed576119ed613c96565b036119a9576001600160401b038111156119a95760405162461bcd60e51b815260206004820152601e60248201527f504d503a206d617852616e6765203e205f54494d455354414d505f4d415800006044820152606401610294565b60405162461bcd60e51b815260040161029490614951565b6000611a6c82611deb565b905060008151845114611a8157506001611ae9565b60005b8451811015611ae757611ad2838281518110611aa257611aa2613ebb565b6020026020010151868381518110611abc57611abc613ebb565b602002602001015161311190919063ffffffff16565b611adf5760019150611ae7565b600101611a84565b505b8015610713576107138385611b29565b600081604051602001611b0c9190614a51565b604051602081830303815290604052805190602001209050919050565b80516000819003611b4657505080546001600160a01b0319169055565b6000816001600160401b03811115611b6057611b60613b31565b604051908082528060200260200182016040528015611b89578160200160208202803683370190505b5090506000805b83811015611bfb5781838281518110611bab57611bab613ebb565b60200260200101906001600160401b031690816001600160401b031681525050848181518110611bdd57611bdd613ebb565b60200260200101515182611bf19190614a64565b9150600101611b90565b506001600160401b03811115611c515760405162461bcd60e51b815260206004820152601b60248201527a13d9999cd95d08195e18d959591cc81d5a5b9d0d8d081b1a5b5a5d602a1b6044820152606401610294565b600081611c5f856008614a77565b611c6a906008614a64565b611c749190614a64565b90506000611c83826020614a64565b6001600160401b03811115611c9a57611c9a613b31565b6040519080825280601f01601f191660200182016040528015611cc4576020820181803683370190505b5060c086901b602082015290506028810160005b86811015611d1d576000868281518110611cf457611cf4613ebb565b602090810291909101015160c01b6001600160c01b031916835250600890910190600101611cd8565b5060005b86811015611db7576000888281518110611d3d57611d3d613ebb565b6020026020010151905060008151905060006020830190506000602083611d649190614aa4565b90506000611d73602085614ab8565b905060005b82811015611d96578351885260209788019790930192600101611d78565b508015611da65782518752958601955b505060019093019250611d21915050565b505081815280611dc681613136565b88546001600160a01b0319166001600160a01b03919091161790975550505050505050565b80546060906001600160a01b0316611e2f576040805160008082526020820190925290611e28565b6060815260200190600190039081611e135790505b5092915050565b8154600090611e46906001600160a01b03166131db565b602081015190915060c01c806001600160401b03811115611e6957611e69613b31565b604051908082528060200260200182016040528015611e9c57816020015b6060815260200190600190039081611e875790505b50925060005b8181101561200d576000808084611eba856001614a64565b03611ee8576000865190506028870193506008850284015160c01c9250600886026008018103915050611f0a565b6028860192506008840283015160c01c91506008600185010283015160c01c90505b6000611f168383614acc565b6001600160401b031690506000611f2e826020614a64565b6001600160401b03811115611f4557611f45613b31565b6040519080825280601f01601f191660200182016040528015611f6f576020820181803683370190505b5090506020810160005b83811015611fd5576000816001600160401b038816611f998c6008614a77565b611fa4906028614a64565b611fae9190614a64565b611fb89190614a64565b8b0151835250602091820191611fce9082614a64565b9050611f79565b50819050828152818a8881518110611fef57611fef613ebb565b60200260200101819052505050505050508080600101915050611ea2565b505050919050565b6000610231620f424083614aa4565b815460009060ff8381169116146120a05760405162461bcd60e51b815260206004820152603a60248201527f504d503a20706172616d206e6f742070617274206f66206d6f737420726563656044820152796e746c7920636f6e6669677572656420504d5020706172616d7360301b6064820152608401610294565b825462010000900460ff1660088111156120bc576120bc613c96565b846020015160088111156120d2576120d2613c96565b146121195760405162461bcd60e51b81526020600482015260176024820152760a09aa07440e0c2e4c2daa8f2e0ca40dad2e6dac2e8c6d604b1b6044820152606401610294565b60008460200151600881111561213157612131613c96565b0361218a5760405162461bcd60e51b8152602060048201526024808201527f504d503a20696e70757420706172616d5479706520697320756e636f6e6669676044820152631d5c995960e21b6064820152608401610294565b8254600090610100900460ff16818160068111156121aa576121aa613c96565b14806121c7575060048160068111156121c5576121c5613c96565b145b806121e3575060038160068111156121e1576121e1613c96565b145b806121ff575060068160068111156121fd576121fd613c96565b145b156122175760006122118989336131fc565b94509250505b811580156122895750600281600681111561223457612234613c96565b14806122515750600581600681111561224f5761224f613c96565b145b8061226d5750600481600681111561226b5761226b613c96565b145b806122895750600681600681111561228757612287613c96565b145b156122a8578454600160481b90046001600160a01b0316925033831491505b8115801561231a575060018160068111156122c5576122c5613c96565b14806122e2575060038160068111156122e0576122e0613c96565b145b806122fe575060058160068111156122fc576122fc613c96565b145b8061231a5750600681600681111561231857612318613c96565b145b1561233257600061232c898933612b2a565b94509250505b5080612675578354610100900460ff16600081600681111561235657612356613c96565b0361239f5760405162461bcd60e51b81526020600482015260196024820152781413540e88185c9d1a5cdd08185d5d1a081c995c5d5a5c9959603a1b6044820152606401610294565b60018160068111156123b3576123b3613c96565b036124005760405162461bcd60e51b815260206004820152601e60248201527f504d503a20746f6b656e206f776e6572206175746820726571756972656400006044820152606401610294565b600381600681111561241457612414613c96565b036124735760405162461bcd60e51b815260206004820152602960248201527f504d503a2061727469737420616e6420746f6b656e206f776e65722061757468604482015268081c995c5d5a5c995960ba1b6064820152608401610294565b600281600681111561248757612487613c96565b036124d15760405162461bcd60e51b815260206004820152601a6024820152791413540e881859191c995cdcc8185d5d1a081c995c5d5a5c995960321b6044820152606401610294565b60068160068111156124e5576124e5613c96565b036125505760405162461bcd60e51b815260206004820152603560248201527f504d503a2061727469737420616e6420746f6b656e206f776e657220616e64206044820152741859191c995cdcc8185d5d1a081c995c5d5a5c9959605a1b6064820152608401610294565b600481600681111561256457612564613c96565b036125bf5760405162461bcd60e51b815260206004820152602560248201527f504d503a2061727469737420616e6420616464726573732061757468207265716044820152641d5a5c995960da1b6064820152608401610294565b60058160068111156125d3576125d3613c96565b036126335760405162461bcd60e51b815260206004820152602a60248201527f504d503a20746f6b656e206f776e657220616e642061646472657373206175746044820152691a081c995c5d5a5c995960b21b6064820152608401610294565b60405162461bcd60e51b81526020600482015260176024820152762826a81d1034b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b835462010000900460ff16600881600881111561269457612694613c96565b146129265760018160088111156126ad576126ad613c96565b036127255784546040870151600160e81b90910460ff16116127205760405162461bcd60e51b815260206004820152602660248201527f504d503a2073656c6563744f7074696f6e7320696e646578206f7574206f6620604482015265626f756e647360d01b6064820152608401610294565b612926565b600281600881111561273957612739613c96565b036127ab5760408601511580612753575060408601516001145b6127205760405162461bcd60e51b8152602060048201526024808201527f504d503a20626f6f6c20706172616d2076616c7565206d7573742062652030206044820152636f72203160e01b6064820152608401610294565b60038160088111156127bf576127bf613c96565b14806127dc575060058160088111156127da576127da613c96565b145b1561281d57846002015486604001511015801561280157508460030154866040015111155b6127205760405162461bcd60e51b815260040161029490614aec565b600481600881111561283157612831613c96565b0361287157600285015460408701511280159061280157506003850154604087015113156127205760405162461bcd60e51b815260040161029490614aec565b600781600881111561288557612885613c96565b036128a55760408601516001600160401b03108015906128015750612926565b60068160088111156128b9576128b9613c96565b036128e557604086015162ffffff10156127205760405162461bcd60e51b815260040161029490614b23565b60405162461bcd60e51b8152602060048201526016602482015275504d503a20696e76616c696420706172616d5479706560501b6044820152606401610294565b6008855462010000900460ff16600881111561294457612944613c96565b03612a39576040860151156129ae5760405162461bcd60e51b815260206004820152602a60248201527f504d503a2076616c7565206d75737420626520656d70747920666f7220737472604482015269696e6720706172616d7360b01b6064820152608401610294565b856060015115612a345760006129c58989336131fc565b50905080612a325760405162461bcd60e51b815260206004820152603460248201527f504d503a20617274697374206175746820726571756972656420746f20636f6e6044820152736669677572652061727469737420737472696e6760601b6064820152608401610294565b505b612b1f565b60808601515115612aa75760405162461bcd60e51b815260206004820152603260248201527f504d503a206e6f6e2d737472696e6720706172616d206d757374206861766520604482015271656d70747920737472696e672076616c756560701b6064820152608401610294565b856060015115612b1f5760405162461bcd60e51b815260206004820152603d60248201527f504d503a2061727469737420737472696e672063616e6e6f7420626520636f6e60448201527f6669677572656420666f72206e6f6e2d737472696e6720706172616d730000006064820152608401610294565b505095945050505050565b6040516331a9108f60e11b81526004810184905260009081906001600160a01b03851690636352211e90602401602060405180830381865afa158015612b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9891906148e3565b9050826001600160a01b0316816001600160a01b03161480612c715750604051632e7cda1d60e21b81526001600160a01b038481166004830152828116602483015285811660448301526064820187905271706f73746d696e74706172616d657465727360701b60848301527f0000000000000000000000000000000000000000000000000000000000000000169063b9f368749060a401602060405180830381865afa158015612c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c719190614b53565b9150935093915050565b6000612c8683613298565b8015612c975750612c9783836132cb565b9392505050565b805460009060609060ff1682816008811115612cbc57612cbc613c96565b1480612cf45750845462010000900460ff166008811115612cdf57612cdf613c96565b816008811115612cf157612cf1613c96565b14155b15612d1257505060408051602081019091526000808252915061310a565b6008855462010000900460ff166008811115612d3057612d30613c96565b03612e2e576000846002018054612d4690614438565b90501115612dea57600184600201808054612d6090614438565b80601f0160208091040260200160405190810160405280929190818152602001828054612d8c90614438565b8015612dd95780601f10612dae57610100808354040283529160200191612dd9565b820191906000526020600020905b815481529060010190602001808311612dbc57829003601f168201915b50505050509050925092505061310a565b6000846003018054612dfb90614438565b90501115612e1557600184600301808054612d6090614438565b505060408051602081019091526000808252915061310a565b6001816008811115612e4257612e42613c96565b03612e945784546001850154600160e81b90910460ff1611612e7757505060408051602081019091526000808252915061310a565b600184810154612e8a9087830190613355565b925092505061310a565b6002816008811115612ea857612ea8613c96565b03612f025760018481015415612eda57604051806040016040528060048152602001637472756560e01b815250612e8a565b6040518060400160405280600581526020016466616c736560d81b815250925092505061310a565b6003816008811115612f1657612f16613c96565b1480612f3357506006816008811115612f3157612f31613c96565b145b80612f4f57506007816008811115612f4d57612f4d613c96565b145b80612f6b57506005816008811115612f6957612f69613c96565b145b1561305c57600184015460006006836008811115612f8b57612f8b613c96565b14612f9a576003870154612f9f565b62ffffff5b905060006006846008811115612fb757612fb7613c96565b14612fc6576002880154612fc9565b60005b905080831080612fd857508183115b15612ffc57600060405180602001604052806000815250955095505050505061310a565b600584600881111561301057613010613c96565b0361302d576001613020846134ff565b955095505050505061310a565b600684600881111561304157613041613c96565b03613051576001613020846135ac565b600161302084613695565b600481600881111561307057613070613c96565b036130c7576001840154600286015481128061308f5750600386015481135b156130b15760006040518060200160405280600081525093509350505061310a565b60016130bc82613727565b93509350505061310a565b60405162461bcd60e51b8152602060048201526018602482015277504d503a20556e68616e646c656420506172616d5479706560401b6044820152606401610294565b9250929050565b600081518351148015612c975750508051602091820120825192909101919091201490565b6000808260405160200161314a9190614b70565b604051602081830303815290604052905060008160405160200161316e9190614b96565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166131d45760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606401610294565b5050919050565b60606102318260016131f7816001600160a01b0384163b614bca565b613799565b600080600061320a86612015565b60405163a47d29cb60e01b8152600481018290529091506001600160a01b0386169063a47d29cb90602401602060405180830381865afa158015613252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327691906148e3565b9150836001600160a01b0316826001600160a01b031614925050935093915050565b60006132ab826301ffc9a760e01b6132cb565b801561023157506132c4826001600160e01b03196132cb565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d9150600051905082801561333e575060208210155b801561334a5750600081115b979650505050505050565b81546060906001600160a01b031661337f5760405162461bcd60e51b815260040161029490614bdd565b8254600090613396906001600160a01b03166131db565b9050600080600080602085015160c01c90508087106133c75760405162461bcd60e51b815260040161029490614bdd565b806133d3886001614a64565b03613401576000855190506028860194506008880285015160c01c9350600882026008018103925050613423565b6028850193506008870284015160c01c92506008600188010284015160c01c91505b600061342f8484614acc565b6001600160401b031690506000613447826020614a64565b6001600160401b0381111561345e5761345e613b31565b6040519080825280601f01601f191660200182016040528015613488576020820181803683370190505b5090506020810160005b838110156134ee576000816001600160401b0389166134b2886008614a77565b6134bd906028614a64565b6134c79190614a64565b6134d19190614a64565b8a01518352506020918201916134e79082614a64565b9050613492565b505090815298975050505050505050565b6060600061350e600a80614cee565b6135189084614aa4565b90506000613527600a80614cee565b6135319085614ab8565b9050600061353e83613695565b9050600061354b83613695565b90505b600a8151101561357f57806040516020016135699190614cfa565b604051602081830303815290604052905061354e565b8181604051602001613592929190614d16565b604051602081830303815290604052945050505050919050565b6040805160078082528183019092526060918391600091602082018180368337019050509050602360f81b816000815181106135ea576135ea613ebb565b60200101906001600160f81b031916908160001a90535060065b8015613676576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061363257613632613ebb565b1a60f81b82828151811061364857613648613ebb565b60200101906001600160f81b031916908160001a90535060049290921c9161366f81614d52565b9050613604565b508115612c975760405162461bcd60e51b815260040161029490614b23565b606060006136a2836137bc565b60010190506000816001600160401b038111156136c1576136c1613b31565b6040519080825280601f01601f1916602001820160405280156136eb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846136f557509392505050565b6060600082126137465760405180602001604052806000815250613761565b604051806040016040528060018152602001602d60f81b8152505b61377261376d84613892565b613695565b604051602001613783929190614d69565b6040516020818303038152906040529050919050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106137fb5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613825576904ee2d6d415b85acef8160201b830492506020015b662386f26fc10000831061384357662386f26fc10000830492506010015b6305f5e100831061385b576305f5e100830492506008015b612710831061386f57612710830492506004015b60648310613881576064830492506002015b600a83106102315760010192915050565b6000808212156138a55781600003610231565b5090565b6000602082840312156138bb57600080fd5b81356001600160e01b031981168114612c9757600080fd5b6001600160a01b03811681146138e857600080fd5b50565b80356138f6816138d3565b919050565b60008083601f84011261390d57600080fd5b5081356001600160401b0381111561392457600080fd5b6020830191508360208260051b850101111561310a57600080fd5b6000806000806060858703121561395557600080fd5b8435613960816138d3565b93506020850135925060408501356001600160401b0381111561398257600080fd5b61398e878288016138fb565b95989497509550505050565b600080604083850312156139ad57600080fd5b82356139b8816138d3565b946020939093013593505050565b60005b838110156139e15781810151838201526020016139c9565b50506000910152565b60008151808452613a028160208601602086016139c6565b601f01601f19169290920160200192915050565b6000608082016080835280875180835260a08501915060a08160051b86010192506020808a0160005b83811015613a6d57609f19888703018552613a5b8683516139ea565b95509382019390820190600101613a3f565b5050505060ff9690961660208401526001600160a01b039485166040840152929093166060909101529392505050565b600080600060608486031215613ab257600080fd5b8335613abd816138d3565b92506020840135613acd816138d3565b929592945050506040919091013590565b60008060008060808587031215613af457600080fd5b8435613aff816138d3565b9350602085013592506040850135613b16816138d3565b91506060850135613b26816138d3565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613b6957613b69613b31565b60405290565b604080519081016001600160401b0381118282101715613b6957613b69613b31565b604051601f8201601f191681016001600160401b0381118282101715613bb957613bb9613b31565b604052919050565b60006001600160401b03821115613bda57613bda613b31565b50601f01601f191660200190565b600082601f830112613bf957600080fd5b8135613c0c613c0782613bc1565b613b91565b818152846020838601011115613c2157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613c5357600080fd5b8335613c5e816138d3565b92506020840135915060408401356001600160401b03811115613c8057600080fd5b613c8c86828701613be8565b9150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613cbc57613cbc613c96565b9052565b60098110613cbc57613cbc613c96565b60008282518085526020808601955060208260051b8401016020860160005b84811015613d1d57601f19868403018952613d0b8383516139ea565b98840198925090830190600101613cef565b5090979650505050505050565b60208152613d3e60208201835160ff169052565b60006020830151613d526040840182613cac565b506040830151613d656060840182613cc0565b50606083015165ffffffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c08301516101208060e0850152613dba610140850183613cd0565b60e086015161010086810191909152909501519301929092525090919050565b600082825180855260208086019550808260051b84010181860160005b84811015613d1d57601f19868403018952815160408151818652613e1d828701826139ea565b91505085820151915084810386860152613e3781836139ea565b9a86019a9450505090830190600101613df7565b602081526000612c976020830184613dda565b60208152613e70602082018351613cc0565b602082015160408201526000604083015160806060840152613e9560a08401826139ea565b90506060840151601f19848303016080850152613eb282826139ea565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112613ee757600080fd5b9190910192915050565b6000808335601e19843603018112613f0857600080fd5b8301803591506001600160401b03821115613f2257600080fd5b60200191503681900382131561310a57600080fd5b6000823560de19833603018112613ee757600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561023157610231613f4d565b8035600781106138f657600080fd5b8035600981106138f657600080fd5b803565ffffffffffff811681146138f657600080fd5b60006001600160401b03821115613fc957613fc9613b31565b5060051b60200190565b600082601f830112613fe457600080fd5b81356020613ff4613c0783613fb0565b82815260059290921b8401810191818101908684111561401357600080fd5b8286015b848110156140525780356001600160401b038111156140365760008081fd5b6140448986838b0101613be8565b845250918301918301614017565b509695505050505050565b600060e0823603121561406f57600080fd5b614077613b47565b61408083613f7c565b815261408e60208401613f8b565b602082015261409f60408401613f9a565b60408201526140b0606084016138eb565b606082015260808301356001600160401b038111156140ce57600080fd5b6140da36828601613fd3565b60808301525060a083013560a082015260c083013560c082015280915050919050565b6000808335601e1984360301811261411457600080fd5b83016020810192503590506001600160401b0381111561413357600080fd5b80360382131561310a57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b87811015613d1d57848303601f190189526141a082886140fd565b6141ab858284614142565b9a86019a9450505090830190600101614185565b6001600160a01b038681168252602080830187905260806040808501829052848201879052600093919260a0929183870160058a901b880185018b885b8c81101561433b578a8303609f190184528135368f9003603e1901811261422257600080fd5b8e0161422e81806140fd565b87865261423e8887018284614142565b9150508782013560de1983360301811261425757600080fd5b858203898701529091019060e06142768261427185613f7c565b613cac565b614281898401613f8b565b61428d8a840182613cc0565b5065ffffffffffff6142a0898501613f9a565b16888301526060808401356142b4816138d3565b8b1690830152828c013536849003601e190181126142d157600080fd5b830189810190356001600160401b038111156142ec57600080fd5b8060051b36038213156142fe57600080fd5b828e850152614310838501828461416b565b858e0135858f015260c0958601359590940194909452505094870194935050908501906001016141fc565b505060ff8a1660608a0152965061435495505050505050565b9695505050505050565b60008235609e19833603018112613ee757600080fd5b80151581146138e857600080fd5b600060a0823603121561439457600080fd5b60405160a081016001600160401b0380821183831017156143b7576143b7613b31565b8160405284359150808211156143cc57600080fd5b6143d836838701613be8565b83526143e660208601613f8b565b6020840152604085013560408401526060850135915061440582614374565b816060840152608085013591508082111561441f57600080fd5b5061442c36828601613be8565b60808301525092915050565b600181811c9082168061444c57607f821691505b60208210810361446c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156112e3576000816000526020600020601f850160051c8101602086101561449b5750805b601f850160051c820191505b818110156144ba578281556001016144a7565b505050505050565b81516001600160401b038111156144db576144db613b31565b6144ef816144e98454614438565b84614472565b602080601f831160018114614524576000841561450c5750858301515b600019600386901b1c1916600185901b1785556144ba565b600085815260208120601f198616915b8281101561455357888601518255948401946001909101908401614534565b50858210156145715787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60018060a01b0384168152826020820152606060408201526000825160a060608401526145b26101008401826139ea565b905060208401516145c66080850182613cc0565b50604084015160a08401526060840151151560c08401526080840151838203605f190160e085015261334a82826139ea565b60008151808452602080850194506020840160005b838110156146325781516001600160a01b03168752958201959082019060010161460d565b509495945050505050565b6001600160a01b038616815260208082018690526080604080840182905283820186905260009260a091828601600589901b870184018a87805b8c811015614725578a8403609f190185528235368f9003609e1901811261469c578283fd5b8e016146a881806140fd565b8a87526146b88b88018284614142565b9150506146c6898301613f8b565b6146d28a880182613cc0565b5087820135888701526060808301356146ea81614374565b1515908701526146fc828c01836140fd565b92508682038c880152614710828483614142565b978a0197965050509287019250600101614677565b505050878103606089015261473a818a6145f8565b9d9c50505050505050505050505050565b60006001820161475d5761475d613f4d565b5060010190565b60018060a01b0384168152826020820152606060408201526000613eb26060830184613dda565b600082601f83011261479c57600080fd5b81516147aa613c0782613bc1565b8181528460208386010111156147bf57600080fd5b6147d08260208301602087016139c6565b949350505050565b600060208083850312156147eb57600080fd5b82516001600160401b038082111561480257600080fd5b818501915085601f83011261481657600080fd5b8151614824613c0782613fb0565b81815260059190911b8301840190848101908883111561484357600080fd5b8585015b838110156148d65780518581111561485f5760008081fd5b86016040818c03601f19018113156148775760008081fd5b61487f613b6f565b89830151888111156148915760008081fd5b61489f8e8c8387010161478b565b8252509082015190878211156148b55760008081fd5b6148c38d8b8486010161478b565b818b015285525050918601918601614847565b5098975050505050505050565b6000602082840312156148f557600080fd5b8151612c97816138d3565b60006020828403121561491257600080fd5b612c9782613f8b565b60006020828403121561492d57600080fd5b612c9782613f7c565b60006020828403121561494857600080fd5b612c9782613f9a565b602080825260169082015275504d503a20496e76616c696420706172616d5479706560501b604082015260600190565b60006020828403121561499357600080fd5b8135612c97816138d3565b6000808335601e198436030181126149b557600080fd5b8301803591506001600160401b038211156149cf57600080fd5b6020019150600581901b360382131561310a57600080fd5b6020808252601f908201527f504d503a2073656c6563744f7074696f6e73206973206e6f7420656d70747900604082015260600190565b602080825260199082015278504d503a206d696e52616e6765203e3d206d617852616e676560381b604082015260600190565b602081526000612c9760208301846139ea565b8082018082111561023157610231613f4d565b808202811582820484141761023157610231613f4d565b634e487b7160e01b600052601260045260246000fd5b600082614ab357614ab3614a8e565b500490565b600082614ac757614ac7614a8e565b500690565b6001600160401b03828116828216039080821115611e2857611e28613f4d565b6020808252601e908201527f504d503a20706172616d2076616c7565206f7574206f6620626f756e64730000604082015260600190565b6020808252601690820152752826a81d1034b73b30b634b2103432bc1031b7b637b960511b604082015260600190565b600060208284031215614b6557600080fd5b8151612c9781614374565b6000815260008251614b898160018501602087016139c6565b9190910160010192915050565b6a600b5981380380925939f360a81b81528151600090614bbd81600b8501602087016139c6565b91909101600b0192915050565b8181038181111561023157610231613f4d565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b600181815b80851115614c45578160001904821115614c2b57614c2b613f4d565b80851615614c3857918102915b93841c9390800290614c0f565b509250929050565b600082614c5c57506001610231565b81614c6957506000610231565b8160018114614c7f5760028114614c8957614ca5565b6001915050610231565b60ff841115614c9a57614c9a613f4d565b50506001821b610231565b5060208310610133831016604e8410600b8410161715614cc8575081810a610231565b614cd28383614c0a565b8060001904821115614ce657614ce6613f4d565b029392505050565b6000612c978383614c4d565b600360fc1b815260008251614b898160018501602087016139c6565b60008351614d288184602088016139c6565b601760f91b9083019081528351614d468160018401602088016139c6565b01600101949350505050565b600081614d6157614d61613f4d565b506000190190565b60008351614d7b8184602088016139c6565b835190830190614d8f8183602088016139c6565b0194935050505056fea26469706673582212200bede6c2fd14d9777b1f2a93c2b7e9c38cd1e28475e132481a6b6b474e0a5f9064736f6c6343000816003300000000000000000000000000000000000000447e69651d841bd8d104bed493