UNPKG

@settlemint/solidity-zeto

Version:

Smart contract set to build Zero Knowledge tokens in SettleMint

1 lines 174 kB
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deployer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"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":"factory","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ZetoTokenFactory"}],"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":"test_DeployAndRegisterImplementation","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":"0x60808060405234602f57600160ff19600c541617600c55600160ff19601f541617601f55615dba90816100348239f35b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c80630a9254e41461172f5780631ed7831c146116a45780632ade3880146114965780633e5e3c231461140b5780633f7286f41461138057806366d9a9a01461124357806385226c81146111b9578063916a17c614611102578063b0464fdc1461104b578063b5508aa914610fc1578063ba414fa614610f9c578063c45a015514610f65578063d5f3948814610f32578063d7b90d401461018a578063e20c9f71146100ef5763fa7626d4146100ca575f80fd5b346100ec57806003193601126100ec57602060ff601f54166040519015158152f35b80fd5b50346100ec57806003193601126100ec5760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061015e5761015a8561014e81870382611cb0565b60405191829182611a7d565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610137565b50346100ec57806003193601126100ec578073ffffffffffffffffffffffffffffffffffffffff60205416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f2f57604051907f06447d560000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610cf557610f1a575b50506040516129c18082019082821067ffffffffffffffff831117610eed579082916133c48339039082f0908115610ee157604051610264604082611cb0565b60088152602081017f766572696669657200000000000000000000000000000000000000000000000081526040516102b86020828181019486518091875e810187838201520301601f198101835282611cb0565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610eb7578391610ec2575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e70578273ffffffffffffffffffffffffffffffffffffffff61038c9260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521695866004840152604060248401526044830190611acc565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610eb757908391610e9e575b5050604051906103c5604083611cb0565b600d8252602082017f626174636856657269666965720000000000000000000000000000000000000081526040516104196020828181019487518091875e810188838201520301601f198101835282611cb0565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610e74578491610e7f575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e2d578373ffffffffffffffffffffffffffffffffffffffff6104ed9260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521696876004840152604060248401526044830190611acc565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610e7457908491610e5b575b505060405190610526604083611cb0565b600f8252602082017f6465706f73697456657269666965720000000000000000000000000000000000815260405161057a6020828181019487518091875e810189838201520301601f198101835282611cb0565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610e31578591610e3c575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610dea578473ffffffffffffffffffffffffffffffffffffffff61064e9260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521696876004840152604060248401526044830190611acc565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610e3157908591610e18575b505060405191610687604084611cb0565b60108352602083017f776974686472617756657269666965720000000000000000000000000000000081526040516106db6020828181019488518091875e81018a838201520301601f198101835282611cb0565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610dee578691610df9575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610da3578573ffffffffffffffffffffffffffffffffffffffff6107af9260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521697886004840152604060248401526044830190611acc565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610dee57908691610dd5575b5050604051926107e8604085611cb0565b60158452602084017f6261746368576974686472617756657269666965720000000000000000000000815260405161083c6020828181019489518091875e81018b838201520301601f198101835282611cb0565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115610da7578791610db6575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610db2578673ffffffffffffffffffffffffffffffffffffffff6109109260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521698896004840152604060248401526044830190611acc565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610da757908791610d8e575b50506040519360c0850185811067ffffffffffffffff821117610d6157879873ffffffffffffffffffffffffffffffffffffffff916040521685526020850192835260408501918252606085019384526080850195865260a0850190815273ffffffffffffffffffffffffffffffffffffffff601f5460081c1692833b15610d5d5787958692604051988997889687957fe83b3f660000000000000000000000000000000000000000000000000000000087526004870160e0905260e48701610a2c90604090600481527f746573740000000000000000000000000000000000000000000000000000000060208201520190565b955173ffffffffffffffffffffffffffffffffffffffff1660248801525173ffffffffffffffffffffffffffffffffffffffff1660448701525173ffffffffffffffffffffffffffffffffffffffff1660648601525173ffffffffffffffffffffffffffffffffffffffff1660848501525173ffffffffffffffffffffffffffffffffffffffff1660a48401525173ffffffffffffffffffffffffffffffffffffffff1660c483015203925af18015610cf557610d48575b5080602073ffffffffffffffffffffffffffffffffffffffff601f5460081c1673ffffffffffffffffffffffffffffffffffffffff8254169060405180948180947fd7c567d600000000000000000000000000000000000000000000000000000000825260406004830152610b8760448301604090600481527f746573740000000000000000000000000000000000000000000000000000000060208201520190565b90602483015203925af1908115610cf5578291610d19575b5060405190610baf604083611cb0565b601782527f546f6b656e206465706c6f796d656e74206661696c65640000000000000000006020830152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610d155773ffffffffffffffffffffffffffffffffffffffff8391610c5260405194859384937fa34edc030000000000000000000000000000000000000000000000000000000085521615156004840152604060248401526044830190611acc565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610cf557610d00575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100ec57806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610cf557610ce45750f35b81610cee91611cb0565b6100ec5780f35b6040513d84823e3d90fd5b81610d0a91611cb0565b6100ec57805f610c76565b5050fd5b610d3b915060203d602011610d41575b610d338183611cb0565b81019061216b565b5f610b9f565b503d610d29565b81610d5291611cb0565b6100ec57805f610ae4565b8780fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b81610d9891611cb0565b610da357855f610938565b8580fd5b6040513d89823e3d90fd5b8680fd5b610dcf915060203d602011610d4157610d338183611cb0565b5f610896565b81610ddf91611cb0565b610dea57845f6107d7565b8480fd5b6040513d88823e3d90fd5b610e12915060203d602011610d4157610d338183611cb0565b5f610735565b81610e2291611cb0565b610e2d57835f610676565b8380fd5b6040513d87823e3d90fd5b610e55915060203d602011610d4157610d338183611cb0565b5f6105d4565b81610e6591611cb0565b610e7057825f610515565b8280fd5b6040513d86823e3d90fd5b610e98915060203d602011610d4157610d338183611cb0565b5f610473565b81610ea891611cb0565b610eb357815f6103b4565b5080fd5b6040513d85823e3d90fd5b610edb915060203d602011610d4157610d338183611cb0565b5f610312565b604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b81610f2491611cb0565b6100ec57805f610224565b50fd5b50346100ec57806003193601126100ec57602073ffffffffffffffffffffffffffffffffffffffff815416604051908152f35b50346100ec57806003193601126100ec57602073ffffffffffffffffffffffffffffffffffffffff601f5460081c16604051908152f35b50346100ec57806003193601126100ec576020610fb7612092565b6040519015158152f35b50346100ec57806003193601126100ec57601954610fde81611cd3565b91610fec6040519384611cb0565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b83831061102e576040518061015a8782611b46565b60016020819261103d85611ceb565b815201920192019190611019565b50346100ec57806003193601126100ec57601c5461106881611cd3565b916110766040519384611cb0565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106110b8576040518061015a8782611bc3565b600260206001926040516110cb81611c67565b73ffffffffffffffffffffffffffffffffffffffff86541681526110f0858701611dee565b838201528152019201920191906110a3565b50346100ec57806003193601126100ec57601d5461111f81611cd3565b9161112d6040519384611cb0565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b83831061116f576040518061015a8782611bc3565b6002602060019260405161118281611c67565b73ffffffffffffffffffffffffffffffffffffffff86541681526111a7858701611dee565b8382015281520192019201919061115a565b50346100ec57806003193601126100ec57601a546111d681611cd3565b916111e46040519384611cb0565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611226576040518061015a8782611b46565b60016020819261123585611ceb565b815201920192019190611211565b50346100ec57806003193601126100ec57601b5461126081611cd3565b61126d6040519182611cb0565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b83831061134557868587604051928392602084019060208552518091526040840160408260051b8601019392905b8282106112da57505050500390f35b91936020611335827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06001959799849503018652885190836113258351604084526040840190611acc565b9201519084818403910152611af1565b96019201920185949391926112cb565b6002602060019260405161135881611c67565b61136186611ceb565b815261136e858701611dee565b8382015281520192019201919061129d565b50346100ec57806003193601126100ec5760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106113df5761015a8561014e81870382611cb0565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016113c8565b50346100ec57806003193601126100ec5760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061146a5761015a8561014e81870382611cb0565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611453565b50346100ec57806003193601126100ec57601e546114b381611cd3565b6114c06040519182611cb0565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b83831061160e5786858760405192839260208401906020855251809152604084019160408260051b8601019392815b83831061152c5786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106115c55750505050506020806001929701930193019092869594929361151f565b9091929394602080611601837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951611acc565b97019501939291016115a1565b60405161161a81611c67565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461164381611cd3565b916116516040519384611cb0565b8183528a526020808b20908b9084015b8382106116875750505050600192826020928360029501528152019201920191906114f0565b60016020819261169686611ceb565b815201930191019091611661565b50346100ec57806003193601126100ec5760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b8181106117035761015a8561014e81870382611cb0565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016116ec565b5034611a5a575f600319360112611a5a576040519061174f604083611cb0565b60088252602082017f6465706c6f79657200000000000000000000000000000000000000000000000081526040516117a36020828181019487518091875e81015f838201520301601f198101835282611cb0565b519020604051907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115611a4f575f91611a5e575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15611a5a575f73ffffffffffffffffffffffffffffffffffffffff6118779260405193849283927fc657c7180000000000000000000000000000000000000000000000000000000084521696876004840152604060248401526044830190611acc565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015611a4f57611a3c575b508181927fffffffffffffffffffffffff00000000000000000000000000000000000000006020541617602055737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f2f57604051907f06447d560000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610cf557611a27575b505060405161122c8082019082821067ffffffffffffffff831117610eed579082916121988339039082f08015611a1a577fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff00601f549260081b16911617601f55737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156100ec57806040517f90c5013b000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610cf557610ce45750f35b50604051903d90823e3d90fd5b81611a3191611cb0565b6100ec57805f611938565b611a4891505f90611cb0565b5f5f61189c565b6040513d5f823e3d90fd5b5f80fd5b611a77915060203d602011610d4157610d338183611cb0565b5f6117fd565b60206040818301928281528451809452019201905f5b818110611aa05750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611a93565b90601f19601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110611b0e5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611b01565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611b7857505050505090565b9091929394602080611bb4837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951611acc565b97019301930191939290611b69565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611bf557505050505090565b9091929394602080611c58837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611af1565b97019301930191939290611be6565b6040810190811067ffffffffffffffff821117611c8357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff821117611c8357604052565b67ffffffffffffffff8111611c835760051b60200190565b90604051915f8154908160011c9260018316928315611de4575b602085108414611db7578487528693908115611d775750600114611d33575b50611d3192500383611cb0565b565b90505f9291925260205f20905f915b818310611d5b575050906020611d31928201015f611d24565b6020919350806001915483858901015201910190918492611d42565b60209350611d319592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f611d24565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693611d05565b90604051918281549182825260208201905f5260205f20925f905b80600783011061200557611d31945491818110611fcf575b818110611f99575b818110611f63575b818110611f2d575b818110611ef7575b818110611ec1575b818110611e8c575b10611e5f575b500383611cb0565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611e57565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611e51565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611e49565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611e41565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611e39565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611e31565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611e29565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611e21565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611e09565b60085460ff1680156120a15790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa908115611a4f575f91612139575b50151590565b90506020813d602011612163575b8161215460209383611cb0565b81010312611a5a57515f612133565b3d9150612147565b90816020910312611a5a575173ffffffffffffffffffffffffffffffffffffffff81168103611a5a579056fe608080604052346071573315605e575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36111b690816100768239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c8063157d4e2114610c59578063715018a614610bbd5780638da5cb5b14610b6c578063d7c567d61461064d578063e83b3f66146101515763f2fde38b1461005c575f80fd5b3461014e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014e5760043573ffffffffffffffffffffffffffffffffffffffff811680910361014c576100b4611134565b80156101205773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b505b80fd5b503461014e5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014e5760043567ffffffffffffffff811161014c576101a1903690600401610f3d565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261014c57604051906101d882610eb3565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361064957825260443573ffffffffffffffffffffffffffffffffffffffff81168103610649576020830190815260643573ffffffffffffffffffffffffffffffffffffffff8116810361064557604084019081526084359073ffffffffffffffffffffffffffffffffffffffff82168203610641576060850191825260a4359273ffffffffffffffffffffffffffffffffffffffff8416840361063d576080860193845260c4359473ffffffffffffffffffffffffffffffffffffffff861686036106395760a087019586526102c8611134565b73ffffffffffffffffffffffffffffffffffffffff875116156105b55773ffffffffffffffffffffffffffffffffffffffff8451161561053157604051818192516020819201835e810160018152036020019020955173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1686547fffffffffffffffffffffffff0000000000000000000000000000000000000000161786555173ffffffffffffffffffffffffffffffffffffffff16600186019073ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790555173ffffffffffffffffffffffffffffffffffffffff16600285019073ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790555173ffffffffffffffffffffffffffffffffffffffff16600384019073ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790555173ffffffffffffffffffffffffffffffffffffffff16600483019073ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790555173ffffffffffffffffffffffffffffffffffffffff16906005019073ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905580f35b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f466163746f72793a20766572696669657220616464726573732069732072657160448201527f75697265640000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f466163746f72793a20696d706c656d656e746174696f6e20616464726573732060448201527f69732072657175697265640000000000000000000000000000000000000000006064820152fd5b8780fd5b8680fd5b8580fd5b8480fd5b8380fd5b503461014e5760208061065f36610fb1565b9290604051928184925191829101835e81016001815203019020906040519161068783610eb3565b73ffffffffffffffffffffffffffffffffffffffff81541680845273ffffffffffffffffffffffffffffffffffffffff600183015416916020850192835273ffffffffffffffffffffffffffffffffffffffff6002820154166040860190815273ffffffffffffffffffffffffffffffffffffffff600383015416956060810196875261074573ffffffffffffffffffffffffffffffffffffffff60058160048701541695608085019687520154169460a08301958652151561101e565b73ffffffffffffffffffffffffffffffffffffffff85511615610ae85773ffffffffffffffffffffffffffffffffffffffff82511615610a645773ffffffffffffffffffffffffffffffffffffffff835116156109e05773ffffffffffffffffffffffffffffffffffffffff8451161561095c577fffffffffffffffffffffffffffffffffff0000000000000000000000000000006e5af43d82803e903d91602b57fd5bf39151763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16178a5260781b161760205273ffffffffffffffffffffffffffffffffffffffff6037600989f0169586156109345773ffffffffffffffffffffffffffffffffffffffff808080809461085f60016110a9565b511697511693511693511693511693863b156106395773ffffffffffffffffffffffffffffffffffffffff604051967fcc2a9a5b000000000000000000000000000000000000000000000000000000008852166004870152602486015260448501526064840152608483015260a4820152828160c48183865af1801561092957610914575b60208383807f61a122822c33eb587240ac03c263df8e525c975793c9d3118d54888abdb036276040519380a28152f35b61091f838092610efc565b61014c575f6108e4565b6040513d85823e3d90fd5b6004887fb06ebf3d000000000000000000000000000000000000000000000000000000008152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f466163746f72793a20626174636857697468647261775665726966696572206160448201527f64647265737320697320726571756972656400000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f466163746f72793a20626174636856657269666965722061646472657373206960448201527f73207265717569726564000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f466163746f72793a20776974686472617756657269666965722061646472657360448201527f73206973207265717569726564000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f466163746f72793a206465706f7369745665726966696572206164647265737360448201527f20697320726571756972656400000000000000000000000000000000000000006064820152fd5b503461014e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014e5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461014e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014e57610bf4611134565b8073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610e875760209081610c6c36610fb1565b9390604051928184925191829101835e810160018152030190206e5af43d82803e903d91602b57fd5bf37fffffffffffffffffffffffffffffffffff000000000000000000000000000000604051610cc381610eb3565b610d6273ffffffffffffffffffffffffffffffffffffffff85541680835273ffffffffffffffffffffffffffffffffffffffff600187015416602084015273ffffffffffffffffffffffffffffffffffffffff600287015416604084015273ffffffffffffffffffffffffffffffffffffffff600581600389015416976060860198895282600482015416608087015201541660a0840152151561101e565b51763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b161760205273ffffffffffffffffffffffffffffffffffffffff603760095ff016908115610e8b5773ffffffffffffffffffffffffffffffffffffffff90610dd260016110a9565b5116813b15610e875773ffffffffffffffffffffffffffffffffffffffff604051947f485cc95500000000000000000000000000000000000000000000000000000000865216600485015260248401525f8360448183855af1928315610e7c57602093610e67575b50807f61a122822c33eb587240ac03c263df8e525c975793c9d3118d54888abdb036276040519380a28152f35b610e749192505f90610efc565b5f905f610e3a565b6040513d5f823e3d90fd5b5f80fd5b7fb06ebf3d000000000000000000000000000000000000000000000000000000005f5260045ffd5b60c0810190811067ffffffffffffffff821117610ecf57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610ecf57604052565b81601f82011215610e875780359067ffffffffffffffff8211610ecf5760405192610f9060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185610efc565b82845260208383010111610e8757815f926020809301838601378301015290565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610e87576004359067ffffffffffffffff8211610e8757610ffa91600401610f3d565b9060243573ffffffffffffffffffffffffffffffffffffffff81168103610e875790565b1561102557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f466163746f72793a206661696c656420746f2066696e6420696d706c656d656e60448201527f746174696f6e00000000000000000000000000000000000000000000000000006064820152fd5b156110b057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f466163746f72793a206661696c656420746f20636c6f6e6520696d706c656d6560448201527f6e746174696f6e000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff5f5416330361115457565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffdfea2646970667358221220c570f3d4d723586d3c2196160a4f0f31dbe870f8e43690d9eb9febb4b387c0a164736f6c634300081b003360a0806040523460295730608052612993908161002e823960805181818161069e01526116e30152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80630107eb4a1461013457806312c0fed21461012f5780633e96e2731461012a5780634ad89929146101255780634f1ef2861461012057806352d1902d1461011b578063715018a614610116578063788c0456146101115780638bb2513b1461010c5780638da5cb5b146101075780639b2e8b52146101025780639fcc50af146100fd578063ad3cb1cc146100f8578063c29a6fda146100f3578063cc2a9a5b146100ee578063d5b5cc23146100e9578063f2fde38b146100e45763f756356a146100df575f80fd5b610db8565b610d8b565b610d23565b610a86565b610a29565b6109b3565b610956565b6108d4565b610882565b61081f565b6107c7565b610716565b610677565b6105fc565b6105c6565b6104bd565b61025b565b61015b565b73ffffffffffffffffffffffffffffffffffffffff81160361015757565b5f80fd5b346101575760606003193601126101575773ffffffffffffffffffffffffffffffffffffffff60043561018d81610139565b8160243561019a81610139565b81604435936101a885610139565b6101b0611bb5565b6101b8611bb5565b1673ffffffffffffffffffffffffffffffffffffffff1960025416176002551673ffffffffffffffffffffffffffffffffffffffff1960045416176004551673ffffffffffffffffffffffffffffffffffffffff1960055416176005555f80f35b60031961010091011261015757600490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261015757604490565b34610157576101206003193601126101575761027636610219565b61028c610104359161028783610139565b611c38565b90815f525f60205273ffffffffffffffffffffffffffffffffffffffff60405f20541615801561038b575b15610307576102d0610305925f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff19825416179055565b005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b50815f525f60205273ffffffffffffffffffffffffffffffffffffffff60405f20541633146102b7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff82111761040557604052565b6103b5565b9061041860405192836103e2565b565b67ffffffffffffffff81116104055760051b60200190565b9080601f830112156101575781356104498161041a565b9261045760405194856103e2565b81845260208085019260051b82010192831161015757602001905b82821061047f5750505090565b8135815260209182019101610472565b9181601f840112156101575782359167ffffffffffffffff8311610157576020838186019501011161015757565b34610157576101606003193601126101575760043567ffffffffffffffff8111610157576104ef903690600401610432565b60243567ffffffffffffffff81116101575761050f903690600401610432565b906105193661022b565b91610144359167ffffffffffffffff83116101575761055d9361054361054b94369060040161048f565b9390926110fd565b60405190151581529081906020820190565b0390f35b90610160600319830112610157576004359160243567ffffffffffffffff8111610157578161059291600401610432565b916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c60443593011261015757606490565b34610157576103056105d736610561565b92919091611476565b67ffffffffffffffff811161040557601f01601f191660200190565b60406003193601126101575760043561061481610139565b6024359067ffffffffffffffff8211610157573660238301121561015757816004013590610641826105e0565b9161064f60405193846103e2565b8083523660248286010111610157576020815f926024610305970183870137840101526116ca565b34610157575f6003193601126101575773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106ee5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610157575f6003193601126101575761072e6123ce565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1981167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610157576107d536610561565b6107e2839492935161103e565b9081511561081a576108008261030596866020610815960152611cce565b9490809461080f848884611e44565b50611476565b61225e565b610e94565b346101575760406003193601126101575760043567ffffffffffffffff811161015757610850903690600401610432565b6024359067ffffffffffffffff82116101575761087461030592369060040161048f565b9161087d6123ce565b61245f565b34610157575f60031936011261015757602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461015757610160600319360112610157576024356004356108f53661022b565b906101443567ffffffffffffffff811161015757839261091c61092492369060040161048f565b949093611aac565b604080519061093381836103e2565b60018252601f190136602083013780511561081a5761030593602082015261245f565b346101575760206003193601126101575773ffffffffffffffffffffffffffffffffffffffff60043561098881610139565b610990611bb5565b1673ffffffffffffffffffffffffffffffffffffffff1960025416176002555f80f35b34610157575f6003193601126101575760408051906109d281836103e2565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b346101575760206003193601126101575773ffffffffffffffffffffffffffffffffffffffff600435610a5b81610139565b610a636123ce565b1673ffffffffffffffffffffffffffffffffffffffff1960035416176003555f80f35b346101575760c060031936011261015757600435610aa381610139565b60243590610ab082610139565b604435610abc81610139565b606435610ac881610139565b60843590610ad582610139565b60a43592610ae284610139565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff610b2860ff60408a901c16159867ffffffffffffffff1690565b1680159081610d1b575b6001149081610d11575b159081610d08575b50610ce057610bc59587610bbc60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610c6557611884565b610bcb57005b610c367fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b610cdb680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b611884565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610b44565b303b159150610b3c565b889150610b32565b34610157576020600319360112610157576004355f52600160205260ff60405f2054166003811015610d5e5760405160029091148152602090f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b3461015757602060031936011261015757610305600435610dab81610139565b610db36123ce565b61197e565b346101575761014060031936011261015757610305600435602435610ddc3661022b565b91611aac565b15610de957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b60405190610e566080836103e2565b6080368337565b60405190610280610e6e81846103e2565b368337565b60405190610180610e6e81846103e2565b604090815191610e6e81846103e2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805182101561081a5760209160051b010190565b90600481101561081a5760051b0190565b90816020910312610157575180151581036101575790565b905f905b60028210610f0f57505050565b6040808281866001953701930191019091610f02565b90949392604090610f456101009483610180860199863783850190610efe565b60c0830137015f905b60048210610f5b57505050565b6020806001928551815201930191019091610f4e565b6040513d5f823e3d90fd5b15610f8357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b90601481101561081a5760051b0190565b909493926040906110126101009483610380860199863783850190610efe565b60c0830137015f905b6014821061102857505050565b602080600192855181520193019101909161101b565b906110488261041a565b61105560405191826103e2565b828152601f19611065829461041a565b0190602036910137565b90602080835192838152019201905f5b81811061108c5750505090565b825184526020938401939092019160010161107f565b601f8260209493601f1993818652868601375f8582860101520116010190565b92906110fa94926110de6110ec9260608752606087019061106f565b90858203602087015261106f565b9260408185039101526110a2565b90565b9061110a91959295611cce565b9461111e611119828885611e44565b610de2565b600282511180156113a9575b156112e25761113986836121f5565b90611142610e5d565b915f5b601481106112c35750506111d19160209161119161117860075473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fe56ac42f00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601610ff2565b03915afa80156112be576111ec915f9161128f575b50610f7c565b6111f6858261225e565b611200815161103e565b9161120b865161103e565b935f5b835181101561124c578061122460019286610ec1565b5161122f8288610ec1565b5261123a818a610ec1565b516112458289610ec1565b520161120e565b5092946112879196507fcb56a7130431b68e0e636f24584d40580490c1bf882bef3701f317d47ba98c389492506040519384933397856110c2565b0390a2600190565b6112b1915060203d6020116112b7575b6112a981836103e2565b810190610ee6565b5f6111e6565b503d61129f565b610f71565b806112d060019284610ec1565b516112db8287610fe1565b5201611145565b6112ec8683612177565b906112f5610e47565b915f5b6004811061138a57505061136b9160209161132b61117860065473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f5fe8c13b00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601610f25565b03915afa80156112be57611385915f9161128f5750610f7c565b6111ec565b8061139760019284610ec1565b516113a28287610ed5565b52016112f8565b50600286511161112a565b90600c81101561081a5760051b0190565b909493926040906113e56101009483610280860199863783850190610efe565b60c0830137015f905b600c82106113fb57505050565b60208060019285518152019301910190916113ee565b1561141857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4661696c656420746f207472616e7366657220455243323020746f6b656e73006044820152fd5b929160028251115f1461163b57600c82511161160d576114969184612377565b9061149f610e73565b915f5b600c81106115ee575050611515916020916114d561117860055473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f8cbac0fa00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016113c5565b03915afa80156112be575f9261153761159d9260209486916115d75750610f7c565b61155961117860035473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101929092529093849283919082906044820190565b03925af180156112be57610418915f916115b8575b50611411565b6115d1915060203d6020116112b7576112a981836103e2565b5f6115b2565b6112b19150853d87116112b7576112a981836103e2565b806115fb60019284610ec1565b5161160682876113b4565b52016114a2565b7f71798fb5000000000000000000000000000000000000000000000000000000005f52600c60045260245b5ffd5b6116459184612311565b9061164e610e47565b915f5b600481106116ab5750506116849160209161132b61117860045473ffffffffffffffffffffffffffffffffffffffff1690565b03915afa80156112be575f926116a661159d9260209486916115d75750610f7c565b611537565b806116b860019284610ec1565b516116c38287610ed5565b5201611651565b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115611842575b506106ee5761171b6123ce565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f9481611811575b506117b0577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc84036117e45761041892935061269e565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b61183491955060203d60201161183b575b61182c81836103e2565b8101906123bf565b935f611769565b503d611822565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f61170e565b9473ffffffffffffffffffffffffffffffffffffffff809694818096956118c78296976118af611bb5565b6118b7611bb5565b6118bf611bb5565b610db3611bb5565b6118cf611bb5565b6118d7611bb5565b1673ffffffffffffffffffffffffffffffffffffffff1960025416176002551673ffffffffffffffffffffffffffffffffffffffff1960045416176004551673ffffffffffffffffffffffffffffffffffffffff1960055416176005551673ffffffffffffffffffffffffffffffffffffffff1960065416176006551673ffffffffffffffffffffffffffffffffffffffff196007541617600755565b60031115610d5e57565b73ffffffffffffffffffffffffffffffffffffffff168015611a345773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300548273ffffffffffffffffffffffffffffffffffffffff198216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90949392604090611a806101009483610140860199863783850190610efe565b60c0830137015f905b60028210611a9657505050565b6020806001928551815201930191019091611a89565b91611b2791602091611abc610e84565b858152916020830152611ae761117860025473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611a60565b03915afa80156112be575f92611b4961159d9260209486916115d75750610f7c565b611b6b61117860035473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092529093849283919082906064820190565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615611be457565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f825b60088210611c22575050506101000190565b6020806001928551815201930191019091611c10565b611c9f60c0611c4861010061040a565b833581529260208101356020850152611c8b611c7e6040830180356040880152611c728160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e0820152604051611cc881611cba602082019485611c0c565b03601f1981018352826103e2565b51902090565b9190918051908351600a83118015611d50575b611d235760026110fa9311908115611d18575b5015611d0c57611d06600a80926125a7565b936125a7565b611d06600280926125a7565b60029150115f611cf4565b7f9ebbc98e000000000000000000000000000000000000000000000000000000005f52600a60045260245ffd5b50600a8111611ce1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211611db457565b611d5a565b15611dc057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c6f636b65642070726f6f662063616e206f6e6c79206265207375626d69747460448201527f656420627920746865206c6f636b6572206164647265737300000000000000006064820152fd5b90611e4e91612610565b9290915f935b8351851015611fb857611e678585610ec1565b5115611fad5784151580611f88575b611f4f57611ea0611e99611e8a8787610ec1565b515f52600160205260405f2090565b5460ff1690565b611ea981611974565b611ee657611638611eba8686610ec1565b517f83925127000000000000000000000000000000000000000000000000000000005f52600452602490565b9091936002611efb611e99611e8a8488610ec1565b611f0481611974565b14611f16576001905b01939190611e54565b611f236116389185610ec1565b517f41a06d28000000000000000000000000000000000000000000000000000000005f52600452602490565b611638611f5c8686610ec1565b517fdd574831000000000000000000000000000000000000