UNPKG

@settlemint/solidity-diamond-bond

Version:

Smart contract set to build an enterprise bond usecase in SettleMint

1 lines 107 kB
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testBurn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInitialSupply","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testMint","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testPauseAndUnpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testTransfer","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60808060405234602f57600160ff19600c541617600c55600160ff19601f541617601f55612ed590816100348239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e414611629575080631ed7831c146115ab5780632ade3880146113f45780633e5e3c23146113765780633f7286f4146112f857806352c498ff14610df357806366d9a9a014610cd257806385226c8114610c4857806387d251af14610b6e578063916a17c614610ac65780639642ddaf14610909578063b0464fdc14610861578063b5508aa9146107d7578063ba414fa6146107b2578063d591221f1461048e578063e13aba4814610197578063e20c9f71146101095763fa7626d4146100e4575f80fd5b34610106578060031936011261010657602060ff601f54166040519015158152f35b80fd5b503461010657806003193601126101065760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610178576101748561016881870382611abf565b60405191829182611916565b0390f35b82546001600160a01b0316845260209093019260019283019201610151565b5034610106578060031936011261010657601f5460405163313ce56760e01b8152906020908290600490829060081c6001600160a01b03165afa80156103d5576101e891839161045f575b50611e17565b806101f402906101f482040361044b576020548291906001600160a01b03165f516020612e805f395f51905f523b156103f5576040519063ca669fa760e01b825260048201528281602481835f516020612e805f395f51905f525af1908115610411578391610436575b5050601f546021546001600160a01b039081169160081c16803b15610431576040516340c10f1960e01b81526001600160a01b039290921660048301526024820183905283908290604490829084905af190811561041157839161041c575b50506021546001600160a01b03165f516020612e805f395f51905f523b156103f5576040519063ca669fa760e01b825260048201528281602481835f516020612e805f395f51905f525af19081156104115783916103f9575b5050601f5460081c6001600160a01b031690813b156103f5578291602483926040519485938492630852cd8d60e31b845260048401525af180156103d5576103e0575b5050601f546021546040516370a0823160e01b81526001600160a01b039182166004820152916020918391602491839160081c165afa80156103d557829061039d575b61039a9150611ed7565b80f35b506020813d6020116103cd575b816103b760209383611abf565b810103126103c95761039a9051610390565b5f80fd5b3d91506103aa565b6040513d84823e3d90fd5b816103ea91611abf565b61010657805f61034d565b5050fd5b8161040391611abf565b61040e57815f61030a565b50fd5b6040513d85823e3d90fd5b8161042691611abf565b61040e57815f6102b1565b505050fd5b8161044091611abf565b61040e57815f610252565b634e487b7160e01b82526011600452602482fd5b610481915060203d602011610487575b6104798183611abf565b810190611dfe565b5f6101e2565b503d61046f565b5034610106578060031936011261010657601f5460405163313ce56760e01b8152906020908290600490829060081c6001600160a01b03165afa80156103d5576104de91839161045f5750611e17565b8060c8029060c882040361044b5760205482906001600160a01b03165f516020612e805f395f51905f523b15610780576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d55761079d575b50601f546021546001600160a01b039081169160081c16803b15610799576040516340c10f1960e01b81526001600160a01b039290921660048301526024820184905282908290604490829084905af180156103d557610784575b506021546001600160a01b03165f516020612e805f395f51905f523b15610780576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d55761076b575b5050601f5460225460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291602091839160081c168186816044810103925af180156104115761073e575b50601f546021546040516370a0823160e01b81526001600160a01b03918216600482015260089290921c169190602081602481865afa90811561070157849161070c575b50602060018060a01b03602254166024604051809681936370a0823160e01b835260048301525afa9283156107015784936106cb575b50916106c661039a93611ed7565b611f38565b92506020833d6020116106f9575b816106e660209383611abf565b810103126103c9579151916106c66106b8565b3d91506106d9565b6040513d86823e3d90fd5b90506020813d602011610736575b8161072760209383611abf565b810103126103c957515f610682565b3d915061071a565b61075f9060203d602011610764575b6107578183611abf565b810190611be4565b61063e565b503d61074d565b8161077591611abf565b61078057815f6105f2565b5080fd5b8161078e91611abf565b61078057815f61059d565b8280fd5b816107a791611abf565b61078057815f610542565b503461010657806003193601126101065760206107cd611e3c565b6040519015158152f35b50346101065780600319360112610106576019546107f481611b00565b916108026040519384611abf565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610844576040518061017487826119b9565b60016020819261085385611b18565b81520192019201919061082f565b5034610106578060031936011261010657601c5461087e81611b00565b9161088c6040519384611abf565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106108ce57604051806101748782611a18565b600260206001926040516108e181611a8f565b848060a01b0386541681526108f7858701611bfc565b838201528152019201920191906108b9565b5034610106578060031936011261010657601f5460405163313ce56760e01b8152906020908290600490829060081c6001600160a01b03165afa80156103d55761095991839161045f5750611e17565b806103e802906103e882040361044b5760205482906001600160a01b03165f516020612e805f395f51905f523b15610780576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d557610ab1575b50601f546021546001600160a01b039081169160081c16803b15610799576040516340c10f1960e01b81526001600160a01b039290921660048301526024820184905282908290604490829084905af180156103d557610a9c575b5050601f546021546040516370a0823160e01b81526001600160a01b03918216600482015292916020918491602491839160081c165afa8015610411578390610a68575b61039a9250611f38565b506020823d602011610a94575b81610a8260209383611abf565b810103126103c95761039a9151610a5e565b3d9150610a75565b81610aa691611abf565b61078057815f610a1a565b81610abb91611abf565b61078057815f6109bf565b5034610106578060031936011261010657601d54610ae381611b00565b91610af16040519384611abf565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310610b3357604051806101748782611a18565b60026020600192604051610b4681611a8f565b848060a01b038654168152610b5c858701611bfc565b83820152815201920192019190610b1e565b5034610106578060031936011261010657601f546040516318160ddd60e01b81529060081c6001600160a01b0316602082600481845afa918215610411578392610c13575b5060206004916040519283809263313ce56760e01b82525afa801561041157610be291849161045f5750611e17565b9081620f42400291620f4240830403610bff579061039a91611f38565b634e487b7160e01b83526011600452602483fd5b9091506020813d602011610c40575b81610c2f60209383611abf565b810103126103c95751906020610bb3565b3d9150610c22565b5034610106578060031936011261010657601a54610c6581611b00565b91610c736040519384611abf565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610cb5576040518061017487826119b9565b600160208192610cc485611b18565b815201920192019190610ca0565b5034610106578060031936011261010657601b54610cef81611b00565b610cfc6040519182611abf565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310610db857868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210610d6957505050500390f35b91936001919395506020610da88192603f198a820301865288519083610d988351604084526040840190611958565b920151908481840391015261197c565b9601920192018594939192610d5a565b60026020600192604051610dcb81611a8f565b610dd486611b18565b8152610de1858701611bfc565b83820152815201920192019190610d2c565b503461010657806003193601126101065760205481906001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d5576112e3575b50601f5460081c6001600160a01b0316803b1561040e57818091600460405180948193638456cb5960e01b83525af180156103d5576112ce575b50601f54604051635c975abb60e01b8152906020908290600490829060081c6001600160a01b03165afa9081156103d55782916112af575b5015156001810361124c575b506020546001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d557611237575b50505f516020612e805f395f51905f523b1561010657604051633d21120560e21b815281908181600481835f516020612e805f395f51905f525af180156103d557611222575b50601f546021546001600160a01b0360089290921c82169116813b156103f55782916044839260405194859384926340c10f1960e01b84526004840152600a60248401525af180156103d55761120d575b506020546001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d5576111f8575b50601f5460081c6001600160a01b0316803b1561040e57818091600460405180948193631fa5d41d60e11b83525af180156103d5576111e3575b50601f54604051635c975abb60e01b8152906020908290600490829060081c6001600160a01b03165afa9081156103d55782916111c4575b50151580611162575b506020546001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d55761114d575b50601f546021546001600160a01b0360089290921c82169116813b156103f55782916044839260405194859384926340c10f1960e01b84526004840152600a60248401525af180156103d55761113c5750f35b8161114691611abf565b6101065780f35b8161115791611abf565b61010657805f6110e9565b5f516020612e805f395f51905f523b1561040e576040519063f7fe347760e01b8252600482015281602482015281816044815f516020612e805f395f51905f525afa80156103d5571561109457816111b991611abf565b61010657805f611094565b6111dd915060203d602011610764576107578183611abf565b5f61108b565b816111ed91611abf565b61010657805f611053565b8161120291611abf565b61010657805f611019565b8161121791611abf565b61010657805f610fc4565b8161122c91611abf565b61010657805f610f73565b8161124191611abf565b61010657805f610f2d565b5f516020612e805f395f51905f523b1561040e576040519063f7fe347760e01b825260048201526001602482015281816044815f516020612e805f395f51905f525afa80156103d55715610ed857816112a491611abf565b61010657805f610ed8565b6112c8915060203d602011610764576107578183611abf565b5f610ecc565b816112d891611abf565b61010657805f610e94565b816112ed91611abf565b61010657805f610e5a565b503461010657806003193601126101065760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110611357576101748561016881870382611abf565b82546001600160a01b0316845260209093019260019283019201611340565b503461010657806003193601126101065760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106113d5576101748561016881870382611abf565b82546001600160a01b03168452602090930192600192830192016113be565b5034610106578060031936011261010657601e5461141181611b00565b61141e6040519182611abf565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b8383106115225786858760405192839260208401906020855251809152604084019160408260051b8601019392815b83831061148a5786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106114f75750505050506020806001929701930193019092869594929361147d565b9091929394602080611515600193605f198782030189528951611958565b97019501939291016114d3565b60405161152e81611a8f565b82546001600160a01b0316815260018301805461154a81611b00565b916115586040519384611abf565b8183528a526020808b20908b9084015b83821061158e57505050506001928260209283600295015281520192019201919061144e565b60016020819261159d86611b18565b815201930191019091611568565b503461010657806003193601126101065760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b81811061160a576101748561016881870382611abf565b82546001600160a01b03168452602090930192600192830192016115f3565b9050346103c9575f3660031901126103c9576001625e79b760e01b03198152600160048201526020816024815f516020612e805f395f51905f525afa90811561189e575f916118f7575b50602080546001600160a01b0319166001600160a01b039290921691821781556040516001625e79b760e01b031981526002600482015290816024815f516020612e805f395f51905f525afa90811561189e575f916118d8575b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b03198152600360048201526020816024815f516020612e805f395f51905f525afa90811561189e575f916118a9575b5060018060a01b03166bffffffffffffffffffffffff60a01b60225416176022555f516020612e805f395f51905f523b156103c957604051906303223eab60e11b825260048201525f81602481835f516020612e805f395f51905f525af1801561189e5761188b575b50604051610eed8082019082821067ffffffffffffffff8311176118775760c0918391611f93833960408152600c60408201526b23b2b732b934b1aa37b5b2b760a11b606082015260806020820152600360808201526223a2a760e91b60a082015203019082f0801561186a57601f8054610100600160a81b03191660089290921b610100600160a81b03169190911790555f516020612e805f395f51905f523b15610106576040516390c5013b60e01b815281908181600481835f516020612e805f395f51905f525af180156103d55761113c5750f35b50604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b61189791505f90611abf565b5f5f611792565b6040513d5f823e3d90fd5b6118cb915060203d6020116118d1575b6118c38183611abf565b810190611ae1565b5f611729565b503d6118b9565b6118f1915060203d6020116118d1576118c38183611abf565b5f6116cd565b611910915060203d6020116118d1576118c38183611abf565b5f611673565b60206040818301928281528451809452019201905f5b8181106119395750505090565b82516001600160a01b031684526020938401939092019160010161192c565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106119995750505090565b82516001600160e01b03191684526020938401939092019160010161198c565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106119eb57505050505090565b9091929394602080611a09600193603f198682030187528951611958565b970193019301919392906119dc565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611a4a57505050505090565b9091929394602080611a80600193603f198682030187526040838b51878060a01b0381511684520151918185820152019061197c565b97019301930191939290611a3b565b6040810190811067ffffffffffffffff821117611aab57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611aab57604052565b908160209103126103c957516001600160a01b03811681036103c95790565b67ffffffffffffffff8111611aab5760051b60200190565b90604051915f8154908160011c9260018316928315611bda575b602085108414611bc6578487528693908115611ba45750600114611b60575b50611b5e92500383611abf565b565b90505f9291925260205f20905f915b818310611b88575050906020611b5e928201015f611b51565b6020919350806001915483858901015201910190918492611b6f565b905060209250611b5e94915060ff191682840152151560051b8201015f611b51565b634e487b7160e01b5f52602260045260245ffd5b93607f1693611b32565b908160209103126103c9575180151581036103c95790565b90604051918281549182825260208201905f5260205f20925f905b806007830110611d5957611b5e945491818110611d3a575b818110611d1b575b818110611cfc575b818110611cdd575b818110611cbe575b818110611c9f575b818110611c82575b10611c6d575b500383611abf565b6001600160e01b03191681526020015f611c65565b602083811b6001600160e01b031916855290930192600101611c5f565b604083901b6001600160e01b0319168452602090930192600101611c57565b606083901b6001600160e01b0319168452602090930192600101611c4f565b608083901b6001600160e01b0319168452602090930192600101611c47565b60a083901b6001600160e01b0319168452602090930192600101611c3f565b60c083901b6001600160e01b0319168452602090930192600101611c37565b60e083901b6001600160e01b0319168452602090930192600101611c2f565b916008919350610100600191865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920185929391611c17565b908160209103126103c9575160ff811681036103c95790565b60ff16604d8111611e2857600a0a90565b634e487b7160e01b5f52601160045260245ffd5b60085460ff1615611e4c57600190565b604051630667f9d760e41b81525f516020612e805f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020612e805f395f51905f525afa90811561189e575f91611ea5575b50151590565b90506020813d602011611ecf575b81611ec060209383611abf565b810103126103c957515f611e9f565b3d9150611eb3565b80611edf5750565b5f516020612e805f395f51905f523b156103c9576040519063260a5b1560e21b825260048201525f60248201525f816044815f516020612e805f395f51905f525afa801561189e57611f2e5750565b5f611b5e91611abf565b90808203611f44575050565b5f516020612e805f395f51905f523b156103c9576040519163260a5b1560e21b8352600483015260248201525f816044815f516020612e805f395f51905f525afa801561189e57611f2e575056fe60806040523461041857610eed803803806100198161041c565b9283398101906040818303126104185780516001600160401b0381116104185782610045918301610441565b60208201519092906001600160401b038111610418576100659201610441565b81516001600160401b03811161032b57600354600181811c9116801561040e575b602082101461030d57601f81116103ab575b50602092601f821160011461034a57928192935f9261033f575b50508160011b915f199060031b1c1916176003555b80516001600160401b03811161032b57600454600181811c91168015610321575b602082101461030d57601f81116102aa575b50602091601f821160011461024a579181925f9261023f575b50508160011b915f199060031b1c1916176004555b331561022c5760058054610100600160a81b0319811633600881811b610100600160a81b03169290921790935560ff929082901c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a31661021d5760025469d3c21bcecceda1000000810180911161020957600255335f525f60205260405f2069d3c21bcecceda1000000815401905560405169d3c21bcecceda100000081525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3604051610a5a90816104938239f35b634e487b7160e01b5f52601160045260245ffd5b63d93c066560e01b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b015190505f80610113565b601f1982169260045f52805f20915f5b8581106102925750836001951061027a575b505050811b01600455610128565b01515f1960f88460031b161c191690555f808061026c565b9192602060018192868501518155019401920161025a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610303575b601f0160051c01905b8181106102f857506100fa565b5f81556001016102eb565b90915081906102e2565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b2565b601f1982169360035f52805f20915f5b868110610393575083600195961061037b575b505050811b016003556100c7565b01515f1960f88460031b161c191690555f808061036d565b9192602060018192868501518155019401920161035a565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410610404575b601f0160051c01905b8181106103f95750610098565b5f81556001016103ec565b90915081906103e3565b90607f1690610086565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761032b57604052565b81601f82011215610418578051906001600160401b03821161032b57610470601f8301601f191660200161041c565b928284526020838301011161041857815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146106d957508063095ea7b31461063157806318160ddd1461061457806323b872dd146105dc578063313ce567146105c15780633f4ba83a1461055b57806340c10f19146104a757806342966c681461048a5780635c975abb1461046857806370a0823114610431578063715018a6146103d257806379cc6790146103a05780638456cb59146103475780638da5cb5b1461031b57806395d89b4114610200578063a9059cbb146101cf578063dd62ed3e1461017f5763f2fde38b146100e2575f80fd5b3461017b57602036600319011261017b576100fb6107d2565b610103610953565b6001600160a01b0381169081156101685760058054610100600160a81b03198116600893841b610100600160a81b031617909155901c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b3461017b57604036600319011261017b576101986107d2565b6101a06107e8565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b3461017b57604036600319011261017b576101f56101eb6107d2565b60243590336108a1565b602060405160018152f35b3461017b575f36600319011261017b576040515f6004548060011c90600181168015610311575b6020831081146102fd578285529081156102e1575060011461028c575b50819003601f01601f191681019067ffffffffffffffff82118183101761027857610274829182604052826107a8565b0390f35b634e487b7160e01b5f52604160045260245ffd5b905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5f905b8282106102cb57506020915082010182610244565b60018160209254838588010152019101906102b6565b90506020925060ff191682840152151560051b82010182610244565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610227565b3461017b575f36600319011261017b5760055460405160089190911c6001600160a01b03168152602090f35b3461017b575f36600319011261017b5761035f610953565b61036761097d565b600160ff1960055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461017b57604036600319011261017b576103d06103bc6107d2565b602435906103cb8233836107fe565b610998565b005b3461017b575f36600319011261017b576103ea610953565b60058054610100600160a81b031981169091555f9060081c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017b57602036600319011261017b576001600160a01b036104526107d2565b165f525f602052602060405f2054604051908152f35b3461017b575f36600319011261017b57602060ff600554166040519015158152f35b3461017b57602036600319011261017b576103d060043533610998565b3461017b57604036600319011261017b576104c06107d2565b602435906104cc61097d565b6001600160a01b0316908115610548576104e461097d565b600254908082018092116105345760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b3461017b575f36600319011261017b57610573610953565b60055460ff8116156105b25760ff19166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461017b575f36600319011261017b57602060405160128152f35b3461017b57606036600319011261017b576101f56105f86107d2565b6106006107e8565b6044359161060f8333836107fe565b6108a1565b3461017b575f36600319011261017b576020600254604051908152f35b3461017b57604036600319011261017b5761064a6107d2565b6024359033156106c6576001600160a01b03169081156106b357335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b3461017b575f36600319011261017b575f6003548060011c9060018116801561079e575b6020831081146102fd578285529081156102e157506001146107495750819003601f01601f191681019067ffffffffffffffff82118183101761027857610274829182604052826107a8565b905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5f905b82821061078857506020915082010182610244565b6001816020925483858801015201910190610773565b91607f16916106fd565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361017b57565b602435906001600160a01b038216820361017b57565b6001600160a01b039081165f818152600160209081526040808320948616835293905291909120549291905f198410610838575b50505050565b82841061087e5780156106c6576001600160a01b038216156106b3575f52600160205260405f209060018060a01b03165f5260205260405f20910390555f808080610832565b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115610940576001600160a01b0316918215610548576108c961097d565b815f525f60205260405f205481811061092757817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b60055460081c6001600160a01b0316330361096a57565b63118cdaa760e01b5f523360045260245ffd5b60ff6005541661098957565b63d93c066560e01b5f5260045ffd5b9091906001600160a01b03168015610940576109b261097d565b805f525f60205260405f2054838110610a0a576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffdfea2646970667358221220901524f503272dba2e15bcf138ec6990ebfcc7454588808aadd8b083e681d80364736f6c634300081e00330000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12da26469706673582212208703081278edd95d08b2be8381b7731025edb74c68462fbf5c01e8359a671df064736f6c634300081e0033","sourceMap":"128:1914:95:-:0;;;;;;;3200:4:23;128:1914:95;;3200:4:23;128:1914:95;;;3200:4:23;128:1914:95;3200:4:23;128:1914:95;;1087:4:34;128:1914:95;;;1087:4:34;128:1914:95;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e414611629575080631ed7831c146115ab5780632ade3880146113f45780633e5e3c23146113765780633f7286f4146112f857806352c498ff14610df357806366d9a9a014610cd257806385226c8114610c4857806387d251af14610b6e578063916a17c614610ac65780639642ddaf14610909578063b0464fdc14610861578063b5508aa9146107d7578063ba414fa6146107b2578063d591221f1461048e578063e13aba4814610197578063e20c9f71146101095763fa7626d4146100e4575f80fd5b34610106578060031936011261010657602060ff601f54166040519015158152f35b80fd5b503461010657806003193601126101065760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b818110610178576101748561016881870382611abf565b60405191829182611916565b0390f35b82546001600160a01b0316845260209093019260019283019201610151565b5034610106578060031936011261010657601f5460405163313ce56760e01b8152906020908290600490829060081c6001600160a01b03165afa80156103d5576101e891839161045f575b50611e17565b806101f402906101f482040361044b576020548291906001600160a01b03165f516020612e805f395f51905f523b156103f5576040519063ca669fa760e01b825260048201528281602481835f516020612e805f395f51905f525af1908115610411578391610436575b5050601f546021546001600160a01b039081169160081c16803b15610431576040516340c10f1960e01b81526001600160a01b039290921660048301526024820183905283908290604490829084905af190811561041157839161041c575b50506021546001600160a01b03165f516020612e805f395f51905f523b156103f5576040519063ca669fa760e01b825260048201528281602481835f516020612e805f395f51905f525af19081156104115783916103f9575b5050601f5460081c6001600160a01b031690813b156103f5578291602483926040519485938492630852cd8d60e31b845260048401525af180156103d5576103e0575b5050601f546021546040516370a0823160e01b81526001600160a01b039182166004820152916020918391602491839160081c165afa80156103d557829061039d575b61039a9150611ed7565b80f35b506020813d6020116103cd575b816103b760209383611abf565b810103126103c95761039a9051610390565b5f80fd5b3d91506103aa565b6040513d84823e3d90fd5b816103ea91611abf565b61010657805f61034d565b5050fd5b8161040391611abf565b61040e57815f61030a565b50fd5b6040513d85823e3d90fd5b8161042691611abf565b61040e57815f6102b1565b505050fd5b8161044091611abf565b61040e57815f610252565b634e487b7160e01b82526011600452602482fd5b610481915060203d602011610487575b6104798183611abf565b810190611dfe565b5f6101e2565b503d61046f565b5034610106578060031936011261010657601f5460405163313ce56760e01b8152906020908290600490829060081c6001600160a01b03165afa80156103d5576104de91839161045f5750611e17565b8060c8029060c882040361044b5760205482906001600160a01b03165f516020612e805f395f51905f523b15610780576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d55761079d575b50601f546021546001600160a01b039081169160081c16803b15610799576040516340c10f1960e01b81526001600160a01b039290921660048301526024820184905282908290604490829084905af180156103d557610784575b506021546001600160a01b03165f516020612e805f395f51905f523b15610780576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d55761076b575b5050601f5460225460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291602091839160081c168186816044810103925af180156104115761073e575b50601f546021546040516370a0823160e01b81526001600160a01b03918216600482015260089290921c169190602081602481865afa90811561070157849161070c575b50602060018060a01b03602254166024604051809681936370a0823160e01b835260048301525afa9283156107015784936106cb575b50916106c661039a93611ed7565b611f38565b92506020833d6020116106f9575b816106e660209383611abf565b810103126103c9579151916106c66106b8565b3d91506106d9565b6040513d86823e3d90fd5b90506020813d602011610736575b8161072760209383611abf565b810103126103c957515f610682565b3d915061071a565b61075f9060203d602011610764575b6107578183611abf565b810190611be4565b61063e565b503d61074d565b8161077591611abf565b61078057815f6105f2565b5080fd5b8161078e91611abf565b61078057815f61059d565b8280fd5b816107a791611abf565b61078057815f610542565b503461010657806003193601126101065760206107cd611e3c565b6040519015158152f35b50346101065780600319360112610106576019546107f481611b00565b916108026040519384611abf565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610844576040518061017487826119b9565b60016020819261085385611b18565b81520192019201919061082f565b5034610106578060031936011261010657601c5461087e81611b00565b9161088c6040519384611abf565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106108ce57604051806101748782611a18565b600260206001926040516108e181611a8f565b848060a01b0386541681526108f7858701611bfc565b838201528152019201920191906108b9565b5034610106578060031936011261010657601f5460405163313ce56760e01b8152906020908290600490829060081c6001600160a01b03165afa80156103d55761095991839161045f5750611e17565b806103e802906103e882040361044b5760205482906001600160a01b03165f516020612e805f395f51905f523b15610780576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d557610ab1575b50601f546021546001600160a01b039081169160081c16803b15610799576040516340c10f1960e01b81526001600160a01b039290921660048301526024820184905282908290604490829084905af180156103d557610a9c575b5050601f546021546040516370a0823160e01b81526001600160a01b03918216600482015292916020918491602491839160081c165afa8015610411578390610a68575b61039a9250611f38565b506020823d602011610a94575b81610a8260209383611abf565b810103126103c95761039a9151610a5e565b3d9150610a75565b81610aa691611abf565b61078057815f610a1a565b81610abb91611abf565b61078057815f6109bf565b5034610106578060031936011261010657601d54610ae381611b00565b91610af16040519384611abf565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310610b3357604051806101748782611a18565b60026020600192604051610b4681611a8f565b848060a01b038654168152610b5c858701611bfc565b83820152815201920192019190610b1e565b5034610106578060031936011261010657601f546040516318160ddd60e01b81529060081c6001600160a01b0316602082600481845afa918215610411578392610c13575b5060206004916040519283809263313ce56760e01b82525afa801561041157610be291849161045f5750611e17565b9081620f42400291620f4240830403610bff579061039a91611f38565b634e487b7160e01b83526011600452602483fd5b9091506020813d602011610c40575b81610c2f60209383611abf565b810103126103c95751906020610bb3565b3d9150610c22565b5034610106578060031936011261010657601a54610c6581611b00565b91610c736040519384611abf565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610cb5576040518061017487826119b9565b600160208192610cc485611b18565b815201920192019190610ca0565b5034610106578060031936011261010657601b54610cef81611b00565b610cfc6040519182611abf565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310610db857868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210610d6957505050500390f35b91936001919395506020610da88192603f198a820301865288519083610d988351604084526040840190611958565b920151908481840391015261197c565b9601920192018594939192610d5a565b60026020600192604051610dcb81611a8f565b610dd486611b18565b8152610de1858701611bfc565b83820152815201920192019190610d2c565b503461010657806003193601126101065760205481906001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d5576112e3575b50601f5460081c6001600160a01b0316803b1561040e57818091600460405180948193638456cb5960e01b83525af180156103d5576112ce575b50601f54604051635c975abb60e01b8152906020908290600490829060081c6001600160a01b03165afa9081156103d55782916112af575b5015156001810361124c575b506020546001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d557611237575b50505f516020612e805f395f51905f523b1561010657604051633d21120560e21b815281908181600481835f516020612e805f395f51905f525af180156103d557611222575b50601f546021546001600160a01b0360089290921c82169116813b156103f55782916044839260405194859384926340c10f1960e01b84526004840152600a60248401525af180156103d55761120d575b506020546001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d5576111f8575b50601f5460081c6001600160a01b0316803b1561040e57818091600460405180948193631fa5d41d60e11b83525af180156103d5576111e3575b50601f54604051635c975abb60e01b8152906020908290600490829060081c6001600160a01b03165afa9081156103d55782916111c4575b50151580611162575b506020546001600160a01b03165f516020612e805f395f51905f523b1561040e576040519063ca669fa760e01b825260048201528181602481835f516020612e805f395f51905f525af180156103d55761114d575b50601f546021546001600160a01b0360089290921c82169116813b156103f55782916044839260405194859384926340c10f1960e01b84526004840152600a60248401525af180156103d55761113c5750f35b8161114691611abf565b6101065780f35b8161115791611abf565b61010657805f6110e9565b5f516020612e805f395f51905f523b1561040e576040519063f7fe347760e01b8252600482015281602482015281816044815f516020612e805f395f51905f525afa80156103d5571561109457816111b991611abf565b61010657805f611094565b6111dd915060203d602011610764576107578183611abf565b5f61108b565b816111ed91611abf565b61010657805f611053565b8161120291611abf565b61010657805f611019565b8161121791611abf565b61010657805f610fc4565b8161122c91611abf565b61010657805f610f73565b8161124191611abf565b61010657805f610f2d565b5f516020612e805f395f51905f523b1561040e576040519063f7fe347760e01b825260048201526001602482015281816044815f516020612e805f395f51905f525afa80156103d55715610ed857816112a491611abf565b61010657805f610ed8565b6112c8915060203d602011610764576107578183611abf565b5f610ecc565b816112d891611abf565b61010657805f610e94565b816112ed91611abf565b61010657805f610e5a565b503461010657806003193601126101065760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110611357576101748561016881870382611abf565b82546001600160a01b0316845260209093019260019283019201611340565b503461010657806003193601126101065760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106113d5576101748561016881870382611abf565b82546001600160a01b03168452602090930192600192830192016113be565b5034610106578060031936011261010657601e5461141181611b00565b61141e6040519182611abf565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b8383106115225786858760405192839260208401906020855251809152604084019160408260051b8601019392815b83831061148a5786860387f35b919395509193603f198782030183528551906020604082019260018060a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106114f75750505050506020806001929701930193019092869594929361147d565b9091929394602080611515600193605f198782030189528951611958565b97019501939291016114d3565b60405161152e81611a8f565b82546001600160a01b0316815260018301805461154a81611b00565b916115586040519384611abf565b8183528a526020808b20908b9084015b83821061158e57505050506001928260209283600295015281520192019201919061144e565b60016020819261159d86611b18565b815201930191019091611568565b503461010657806003193601126101065760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b81811061160a576101748561016881870382611abf565b82546001600160a01b03168452602090930192600192830192016115f3565b9050346103c9575f3660031901126103c9576001625e79b760e01b03198152600160048201526020816024815f516020612e805f395f51905f525afa90811561189e575f916118f7575b50602080546001600160a01b0319166001600160a01b039290921691821781556040516001625e79b760e01b031981526002600482015290816024815f516020612e805f395f51905f525afa90811561189e575f916118d8575b50602180546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b03198152600360048201526020816024815f516020612e805f395f51905f525afa90811561189e575f916118a9575b5060018060a01b03166bffffffffffffffffffffffff60a01b60225416176022555f516020612e805f395f51905f523b156103c957604051906303223eab60e11b825260048201525f81602481835f516020612e805f395f51905f525af1801561189e5761188b575b50604051610eed8082019082821067ffffffffffffffff8311176118775760c0918391611f93833960408152600c60408201526b23b2b732b934b1aa37b5b2b760a11b606082015260806020820152600360808201526223a2a760e91b60a082015203019082f0801561186a57601f8054610100600160a81b03191660089290921b610100600160a81b03169190911790555f516020612e805f395f51905f523b15610106576040516390c5013b60e01b815281908181600481835f516020612e805f395f51905f525af180156103d55761113c5750f35b50604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b61189791505f90611abf565b5f5f611792565b6040513d5f823e3d90fd5b6118cb915060203d6020116118d1575b6118c38183611abf565b810190611ae1565b5f611729565b503d6118b9565b6118f1915060203d6020116118d1576118c38183611abf565b5f6116cd565b611910915060203d6020116118d1576118c38183611abf565b5f611673565b60206040818301928281528451809452019201905f5b8181106119395750505090565b82516001600160a01b031684526020938401939092019160010161192c565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106119995750505090565b82516001600160e01b03191684526020938401939092019160010161198c565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106119eb57505050505090565b9091929394602080611a09600193603f198682030187528951611958565b970193019301919392906119dc565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611a4a57505050505090565b9091929394602080611a80600193603f198682030187526040838b51878060a01b0381511684520151918185820152019061197c565b97019301930191939290611a3b565b6040810190811067ffffffffffffffff821117611aab57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611aab57604052565b908160209103126103c957516001600160a01b03811681036103c95790565b67ffffffffffffffff8111611aab5760051b60200190565b90604051915f8154908160011c9260018316928315611bda575b602085108414611bc6578487528693908115611ba45750600114611b60575b50611b5e92500383611abf565b565b90505f9291925260205f20905f915b818310611b88575050906020611b5e928201015f611b51565b6020919350806001915483858901015201910190918492611b6f565b905060209250611b5e94915060ff191682840152151560051b8201015f611b51565b634e487b7160e01b5f52602260045260245ffd5b93607f1693611b32565b908160209103126103c9575180151581036103c95790565b90604051918281549182825260208201905f5260205f20925f905b806007830110611d5957611b5e945491818110611d3a575b818110611d1b575b818110611cfc575b818110611cdd575b818110611cbe575b818110611c9f575b818110611c82575b10611c6d575b500383611abf565b6001600160e01b03191681526020015f611c65565b602083811b6001600160e01b031916855290930192600101611c5f565b604083901b6001600160e01b0319168452602090930192600101611c57565b606083901b6001600160e01b0319168452602090930192600101611c4f565b608083901b6001600160e01b0319168452602090930192600101611c47565b60a083901b6001600160e01b0319168452602090930192600101611c3f565b60c083901b6001600160e01b0319168452602090930192600101611c37565b60e083901b6001600160e01b0319168452602090930192600101611c2f565b916008919350610100600191865463ffffffff60e01b8160e01b16825263ffffffff60e01b8160c01b16602083015263ffffffff60e01b8160a01b16604083015263ffffffff60e01b8160801b16606083015263ffffffff60e01b8160601b16608083015263ffffffff60e01b8160401b1660a083015263ffffffff60e01b8160201b1660c083015263ffffffff60e01b1660e0820152019401920185929391611c17565b908160209103126103c9575160ff811681036103c95790565b60ff16604d8111611e2857600a0a90565b634e487b7160e01b5f52601160045260245ffd5b60085460ff1615611e4c57600190565b604051630667f9d760e41b81525f516020612e805f395f51905f5260048201526519985a5b195960d21b60248201526020816044815f516020612e805f395f51905f525afa90811561189e575f91611ea5575b50151590565b90506020813d602011611ecf575b81611ec060209383611abf565b810103126103c957515f611e9f565b3d9150611eb3565b80611edf5750565b5f516020612e805f395f51905f523b156103c9576040519063260a5b1560e21b825260048201525f60248201525f816044815f516020612e805f395f51905f525afa801561189e57611f2e5750565b5f611b5e91611abf565b90808203611f44575050565b5f516020612e805f395f51905f523b156103c9576040519163260a5b1560e21b8352600483015260248201525f816044815f516020612e805f395f51905f525afa801561189e57611f2e575056fe60806040523461041857610eed803803806100198161041c565b9283398101906040818303126104185780516001600160401b0381116104185782610045918301610441565b60208201519092906001600160401b038111610418576100659201610441565b81516001600160401b03811161032b57600354600181811c9116801561040e575b602082101461030d57601f81116103ab575b50602092601f821160011461034a57928192935f9261033f575b50508160011b915f199060031b1c1916176003555b80516001600160401b03811161032b57600454600181811c91168015610321575b602082101461030d57601f81116102aa575b50602091601f821160011461024a579181925f9261023f575b50508160011b915f199060031b1c1916176004555b331561022c5760058054610100600160a81b0319811633600881811b610100600160a81b03169290921790935560ff929082901c6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a31661021d5760025469d3c21bcecceda1000000810180911161020957600255335f525f60205260405f2069d3c21bcecceda1000000815401905560405169d3c21bcecceda100000081525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3604051610a5a90816104938239f35b634e487b7160e01b5f52601160045260245ffd5b63d93c066560e01b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b015190505f80610113565b601f1982169260045f52805f20915f5b8581106102925750836001951061027a575b505050811b01600455610128565b01515f1960f88460031b161c191690555f808061026c565b9192602060018192868501518155019401920161025a565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610303575b601f0160051c01905b8181106102f857506100fa565b5f81556001016102eb565b90915081906102e2565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100e8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b2565b601f1982169360035f52805f20915f5b868110610393575083600195961061037b575b505050811b016003556100c7565b01515f1960f88460031b161c191690555f808061036d565b9192602060018192868501518155019401920161035a565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410610404575b601f0160051c01905b8181106103f95750610098565b5f81556001016103ec565b90915081906103e3565b90607f1690610086565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761032b57604052565b81601f82011215610418578051906001600160401b03821161032b57610470601f83016