@uniswap/v4-core
Version:
🦄 Core smart contracts of Uniswap v4
1 lines • 101 kB
JSON
{"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":"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_add","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_add_revertsOnOverflow","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_add","inputs":[{"name":"a","type":"int128","internalType":"int128"},{"name":"b","type":"int128","internalType":"int128"},{"name":"c","type":"int128","internalType":"int128"},{"name":"d","type":"int128","internalType":"int128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_amount0_amount1","inputs":[{"name":"x","type":"int128","internalType":"int128"},{"name":"y","type":"int128","internalType":"int128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_fuzz_eq","inputs":[{"name":"a","type":"int128","internalType":"int128"},{"name":"b","type":"int128","internalType":"int128"},{"name":"c","type":"int128","internalType":"int128"},{"name":"d","type":"int128","internalType":"int128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_fuzz_neq","inputs":[{"name":"a","type":"int128","internalType":"int128"},{"name":"b","type":"int128","internalType":"int128"},{"name":"c","type":"int128","internalType":"int128"},{"name":"d","type":"int128","internalType":"int128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_fuzz_sub","inputs":[{"name":"a","type":"int128","internalType":"int128"},{"name":"b","type":"int128","internalType":"int128"},{"name":"c","type":"int128","internalType":"int128"},{"name":"d","type":"int128","internalType":"int128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_toBalanceDelta","inputs":[{"name":"x","type":"int128","internalType":"int128"},{"name":"y","type":"int128","internalType":"int128"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_sub","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_sub_revertsOnUnderflow","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_toBalanceDelta","inputs":[],"outputs":[],"stateMutability":"pure"},{"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":"0x60808060405234602f57600160ff19600c541617600c55600160ff19601f541617601f5561286190816100348239f35b5f80fdfe60806040526004361015610011575f80fd5b5f803560e01c80630a47ea03146119c75780630ad703ee146118305780631ed7831c146117875780631fc59196146116685780632ade38801461143c5780633e5e3c23146113935780633f7286f4146112ea57806347d5bf6214610f7e57806366d9a9a014610e2357806377a06f2014610ceb57806385226c8114610c43578063916a17c614610b6e5780639b5c7cc914610a37578063a6e25d70146106d5578063b0464fdc14610600578063b5508aa914610558578063ba414fa614610515578063ba681cea1461049b578063bb8d08a0146103d6578063e20c9f711461031d578063e28b0bdb146101db578063f6a1c0c11461015a5763fa7626d414610117575f80fd5b3461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757602060ff601f54166040519015158152f35b80fd5b50346101575761016936611a68565b919092826fffffffffffffffffffffffffffffffff168460801b17826fffffffffffffffffffffffffffffffff168260801b171493600f0b90600f0b1491826101c9575b5050156101c0576101bd90612345565b80f35b6101bd906122c9565b909150600f0b90600f0b145f806101ad565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57610308575b505061027e61279b565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610157576040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57156127dd576102f3828092611d8e565b61015757806127dd565b6040513d84823e3d90fd5b8161031291611d8e565b61015757805f610274565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106103aa576103a68561039a81870382611d8e565b60405191829182611acc565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610383565b50346101575760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610157576101bd610411611a48565b610419611a58565b9060801b6040519160208301928284528160801b603082015260208152610441604082611d8e565b5192519260208110610467575b506fffffffffffffffffffffffffffffffff1617612725565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060209492940360031b1b16915f61044e565b50346101575760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610157576101bd6104d6611a48565b6104de611a58565b610509816fffffffffffffffffffffffffffffffff168360801b1792600f0b8360801d600f0b612725565b600f0b90600f0b612725565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757602061054e6121f0565b6040519015158152f35b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760195461059381611de7565b916105a16040519384611d8e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106105e357604051806103a68782611bb3565b6001602081926105f285611dff565b8152019201920191906105ce565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601c5461063b81611de7565b916106496040519384611d8e565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061068b57604051806103a68782611c30565b6002602060019260405161069e81611d45565b73ffffffffffffffffffffffffffffffffffffffff86541681526106c3858701611f31565b83820152815201920192019190610676565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610157576107138160801d600f0b612487565b61071b6126af565b61072b600160801d600f0b612487565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b00000000000000000000000000000000000000000000000000000000815260016004820152600160248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd57610a22575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b00000000000000000000000000000000000000000000000000000000815270010000000000000000000000000000000060801d600f0b6004820152600160248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd57610a0d575b505061083b6126af565b61086a7f7fffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffff60801d600f0b612593565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526f7fffffffffffffffffffffffffffffff60048201526f7fffffffffffffffffffffffffffffff60248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd576109f8575b50506109307f800000000000000000000000000000008000000000000000000000000000000060801d600f0b612619565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b0000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060048201527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd576109e75750f35b816109f191611d8e565b6101575780f35b81610a0291611d8e565b61015757805f6108ff565b81610a1791611d8e565b61015757805f610831565b81610a2c91611d8e565b61015757805f6107a2565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57610b59575b5050610ada6123b7565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610157576040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57156123ff57610b4f828092611d8e565b61015757806123ff565b81610b6391611d8e565b61015757805f610ad0565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601d54610ba981611de7565b91610bb76040519384611d8e565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310610bf957604051806103a68782611c30565b60026020600192604051610c0c81611d45565b73ffffffffffffffffffffffffffffffffffffffff8654168152610c31858701611f31565b83820152815201920192019190610be4565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601a54610c7e81611de7565b91610c8c6040519384611d8e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610cce57604051806103a68782611bb3565b600160208192610cdd85611dff565b815201920192019190610cb9565b503461015757610cfa36611a68565b91610d0b82600f0b85600f0b6121d5565b91610d1c84600f0b83600f0b6121d5565b9383600f0b8414801590610e16575b610d86575b916101bd95610d7192610d7e946fffffffffffffffffffffffffffffffff169060801b17916fffffffffffffffffffffffffffffffff169060801b1761244a565b918260801d600f0b612725565b600f0b612725565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e1257866040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57610df7575b5050610d30565b81610e059195939495611d8e565b610e12579190865f610df0565b8680fd5b5084600f0b851415610d2b565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601b54610e5e81611de7565b610e6b6040519182611d8e565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310610f4357868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210610ed857505050500390f35b91936020610f33827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083610f238351604084526040840190611b1b565b9201519084818403910152611b5e565b9601920192018594939192610ec9565b60026020600192604051610f5681611d45565b610f5f86611dff565b8152610f6c858701611f31565b83820152815201920192019190610e9b565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757806112c257610fc15f60801d600f0b612487565b610fca5f612487565b61100d7103e8fffffffffffffffffffffffffffffc1860801d7ffffffffffffffffffffffffffffffc18000000000000000000000000000003e860801d0361281e565b6107d090815f9160801b17737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051927ffe74f05b0000000000000000000000000000000000000000000000000000000084528160801d600f0b60048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83060248501525f84604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761129d575b829350737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561129957604051917ffe74f05b000000000000000000000000000000000000000000000000000000008352600f0b600483015260248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd57611284575b506112077fffffffffffffffffffffffffffffffff800000000000000000000000000003e861116361115d82611f02565b91611f02565b6fffffffffffffffffffffffffffffffff169060801b176111d96111ae8260801d7ffffffffffffffffffffffffffffffc18fffffffffffffffffffffffffffffc1860801d0361281e565b91600f0b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc180361281e565b6fffffffffffffffffffffffffffffffff169060801b176111ff8160801d600f0b612619565b600f0b612619565b6101bd6112757fffffffffffffffffffffffffffffffffc000000000000000000000000000000061123781611f02565b61124082611f02565b6fffffffffffffffffffffffffffffffff169060801b1790806fffffffffffffffffffffffffffffffff169060801b176127ff565b6111ff8160801d600f0b612619565b8161128e91611d8e565b61015757808261112c565b5050fd5b9150915f6112aa91611d8e565b5f9082906110b3565b6040513d5f823e3d90fd5b5f80fd5b807f93dafdf10000000000000000000000000000000000000000000000000000000060049252fd5b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110611367576103a68561039a81870382611d8e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611350565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110611410576103a68561039a81870382611d8e565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016113f9565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601e5461147781611de7565b6114846040519182611d8e565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b8383106115d25786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106114f05786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110611589575050505050602080600192970193019301909286959492936114e3565b90919293946020806115c5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951611b1b565b9701950193929101611565565b6040516115de81611d45565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461160781611de7565b916116156040519384611d8e565b8183528a526020808b20908b9084015b83821061164b5750505050600192826020928360029501528152019201920191906114b4565b60016020819261165a86611dff565b815201930191019091611625565b50346101575761167736611a68565b9161168882600f0b85600f0b611dcf565b9161169984600f0b83600f0b611dcf565b9383600f0b841480159061177a575b6116ee575b916101bd95610d7192610d7e946fffffffffffffffffffffffffffffffff169060801b17916fffffffffffffffffffffffffffffffff169060801b176127ff565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e1257866040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd5761175f575b50506116ad565b8161176d9195939495611d8e565b610e12579190865f611758565b5084600f0b8514156116a8565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110611804576103a68561039a81870382611d8e565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016117ed565b346112be575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126112be5761188961186f5f60801d800161281e565b60801b6118818160801d600f0b612487565b600f0b612487565b6118cf61186f7103e8fffffffffffffffffffffffffffffc1860801d7ffffffffffffffffffffffffffffffc18000000000000000000000000000003e860801d0161281e565b61194f6fffffffffffffffffffffffffffffffff6119347f7fffffffffffffffffffffffffffffff8000000000000000000000000000000060801d7f800000000000000000000000000000007fffffffffffffffffffffffffffffff60801d0161281e565b60801b176119478160801d600f0b6124fd565b600f0b6124fd565b6119c56119ae6f3fffffffffffffffffffffffffffffff61196f81611cd4565b61197882611cd4565b6fffffffffffffffffffffffffffffffff169060801b1790806fffffffffffffffffffffffffffffffff169060801b179061244a565b6119bd8160801d600f0b612593565b600f0b612593565b005b346112be576119d536611a68565b919092826fffffffffffffffffffffffffffffffff168460801b17826fffffffffffffffffffffffffffffffff168260801b17141593600f0b90600f0b1491821592611a35575b505015611a2c576119c590612345565b6119c5906122c9565b909150600f0b90600f0b14158280611a1c565b6004359081600f0b82036112be57565b6024359081600f0b82036112be57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60809101126112be5760043580600f0b81036112be579060243580600f0b81036112be579060443580600f0b81036112be579060643580600f0b81036112be5790565b60206040818301928281528451809452019201905f5b818110611aef5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611ae2565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110611b7b5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611b6e565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611be557505050505090565b9091929394602080611c21837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951611b1b565b97019301930191939290611bd6565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611c6257505050505090565b9091929394602080611cc5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611b5e565b97019301930191939290611c53565b600f0b600101906f7fffffffffffffffffffffffffffffff82137fffffffffffffffffffffffffffffffff80000000000000000000000000000000831217611d1857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6040810190811067ffffffffffffffff821117611d6157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d6157604052565b81810392915f138015828513169184121617611d1857565b67ffffffffffffffff8111611d615760051b60200190565b90604051915f8154908160011c9260018316928315611ef8575b602085108414611ecb578487528693908115611e8b5750600114611e47575b50611e4592500383611d8e565b565b90505f9291925260205f20905f915b818310611e6f575050906020611e45928201015f611e38565b6020919350806001915483858901015201910190918492611e56565b60209350611e459592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f611e38565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693611e19565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114611d18575f0390565b90604051918281549182825260208201905f5260205f20925f905b80600783011061214857611e45945491818110612112575b8181106120dc575b8181106120a6575b818110612070575b81811061203a575b818110612004575b818110611fcf575b10611fa2575b500383611d8e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611f9a565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611f94565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611f8c565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611f84565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611f7c565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611f74565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611f6c565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611f64565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611f4c565b9190915f8382019384129112908015821691151617611d1857565b60085460ff1680156121ff5790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156112b3575f91612297575b50151590565b90506020813d6020116122c1575b816122b260209383611d8e565b810103126112be57515f612291565b3d91506122a5565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907fa5982885000000000000000000000000000000000000000000000000000000008252151560048201525f81602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b5f611e4591611d8e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907f0c9fd581000000000000000000000000000000000000000000000000000000008252151560048201525f81602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b6123f970010000000000000000000000000000000060801d7f7fffffffffffffffffffffffffffffff0000000000000000000000000000000060801d0161281e565b60801b90565b612421600160801d6f7fffffffffffffffffffffffffffffff60801d0161281e565b507f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b61246d9061245f8360801d8260801d0161281e565b92600f0b90600f0b0161281e565b6fffffffffffffffffffffffffffffffff169060801b1790565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201526f7fffffffffffffffffffffffffffffff60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be576040517ffe74f05b0000000000000000000000000000000000000000000000000000000081525f60048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051917ffe74f05b000000000000000000000000000000000000000000000000000000008352600483015260248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b6123f970010000000000000000000000000000000060801d7f800000000000000000000000000000000000000000000000000000000000000060801d0361281e565b612421600160801d6f8000000000000000000000000000000060801d0361281e565b61246d906128148360801d8260801d0361281e565b92600f0b90600f0b035b9081600f0b91820361282c57565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffdfea164736f6c634300081a000a","sourceMap":"186:5348:146:-:0;;;;;;;3166:4:2;186:5348:146;;3166:4:2;186:5348:146;;;3166:4:2;186:5348:146;3166:4:2;186:5348:146;;1038:4:12;186:5348:146;;;1038:4:12;186:5348:146;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f803560e01c80630a47ea03146119c75780630ad703ee146118305780631ed7831c146117875780631fc59196146116685780632ade38801461143c5780633e5e3c23146113935780633f7286f4146112ea57806347d5bf6214610f7e57806366d9a9a014610e2357806377a06f2014610ceb57806385226c8114610c43578063916a17c614610b6e5780639b5c7cc914610a37578063a6e25d70146106d5578063b0464fdc14610600578063b5508aa914610558578063ba414fa614610515578063ba681cea1461049b578063bb8d08a0146103d6578063e20c9f711461031d578063e28b0bdb146101db578063f6a1c0c11461015a5763fa7626d414610117575f80fd5b3461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757602060ff601f54166040519015158152f35b80fd5b50346101575761016936611a68565b919092826fffffffffffffffffffffffffffffffff168460801b17826fffffffffffffffffffffffffffffffff168260801b171493600f0b90600f0b1491826101c9575b5050156101c0576101bd90612345565b80f35b6101bd906122c9565b909150600f0b90600f0b145f806101ad565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57610308575b505061027e61279b565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610157576040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57156127dd576102f3828092611d8e565b61015757806127dd565b6040513d84823e3d90fd5b8161031291611d8e565b61015757805f610274565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106103aa576103a68561039a81870382611d8e565b60405191829182611acc565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610383565b50346101575760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610157576101bd610411611a48565b610419611a58565b9060801b6040519160208301928284528160801b603082015260208152610441604082611d8e565b5192519260208110610467575b506fffffffffffffffffffffffffffffffff1617612725565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060209492940360031b1b16915f61044e565b50346101575760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610157576101bd6104d6611a48565b6104de611a58565b610509816fffffffffffffffffffffffffffffffff168360801b1792600f0b8360801d600f0b612725565b600f0b90600f0b612725565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757602061054e6121f0565b6040519015158152f35b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760195461059381611de7565b916105a16040519384611d8e565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106105e357604051806103a68782611bb3565b6001602081926105f285611dff565b8152019201920191906105ce565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601c5461063b81611de7565b916106496040519384611d8e565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b83831061068b57604051806103a68782611c30565b6002602060019260405161069e81611d45565b73ffffffffffffffffffffffffffffffffffffffff86541681526106c3858701611f31565b83820152815201920192019190610676565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610157576107138160801d600f0b612487565b61071b6126af565b61072b600160801d600f0b612487565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b00000000000000000000000000000000000000000000000000000000815260016004820152600160248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd57610a22575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b00000000000000000000000000000000000000000000000000000000815270010000000000000000000000000000000060801d600f0b6004820152600160248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd57610a0d575b505061083b6126af565b61086a7f7fffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffff60801d600f0b612593565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526f7fffffffffffffffffffffffffffffff60048201526f7fffffffffffffffffffffffffffffff60248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd576109f8575b50506109307f800000000000000000000000000000008000000000000000000000000000000060801d600f0b612619565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ffe74f05b0000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060048201527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd576109e75750f35b816109f191611d8e565b6101575780f35b81610a0291611d8e565b61015757805f6108ff565b81610a1791611d8e565b61015757805f610831565b81610a2c91611d8e565b61015757805f6107a2565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561015757806040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57610b59575b5050610ada6123b7565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610157576040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57156123ff57610b4f828092611d8e565b61015757806123ff565b81610b6391611d8e565b61015757805f610ad0565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601d54610ba981611de7565b91610bb76040519384611d8e565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310610bf957604051806103a68782611c30565b60026020600192604051610c0c81611d45565b73ffffffffffffffffffffffffffffffffffffffff8654168152610c31858701611f31565b83820152815201920192019190610be4565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601a54610c7e81611de7565b91610c8c6040519384611d8e565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610cce57604051806103a68782611bb3565b600160208192610cdd85611dff565b815201920192019190610cb9565b503461015757610cfa36611a68565b91610d0b82600f0b85600f0b6121d5565b91610d1c84600f0b83600f0b6121d5565b9383600f0b8414801590610e16575b610d86575b916101bd95610d7192610d7e946fffffffffffffffffffffffffffffffff169060801b17916fffffffffffffffffffffffffffffffff169060801b1761244a565b918260801d600f0b612725565b600f0b612725565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e1257866040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd57610df7575b5050610d30565b81610e059195939495611d8e565b610e12579190865f610df0565b8680fd5b5084600f0b851415610d2b565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601b54610e5e81611de7565b610e6b6040519182611d8e565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310610f4357868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210610ed857505050500390f35b91936020610f33827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083610f238351604084526040840190611b1b565b9201519084818403910152611b5e565b9601920192018594939192610ec9565b60026020600192604051610f5681611d45565b610f5f86611dff565b8152610f6c858701611f31565b83820152815201920192019190610e9b565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757806112c257610fc15f60801d600f0b612487565b610fca5f612487565b61100d7103e8fffffffffffffffffffffffffffffc1860801d7ffffffffffffffffffffffffffffffc18000000000000000000000000000003e860801d0361281e565b6107d090815f9160801b17737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051927ffe74f05b0000000000000000000000000000000000000000000000000000000084528160801d600f0b60048501527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83060248501525f84604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761129d575b829350737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561129957604051917ffe74f05b000000000000000000000000000000000000000000000000000000008352600f0b600483015260248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156102fd57611284575b506112077fffffffffffffffffffffffffffffffff800000000000000000000000000003e861116361115d82611f02565b91611f02565b6fffffffffffffffffffffffffffffffff169060801b176111d96111ae8260801d7ffffffffffffffffffffffffffffffc18fffffffffffffffffffffffffffffc1860801d0361281e565b91600f0b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc180361281e565b6fffffffffffffffffffffffffffffffff169060801b176111ff8160801d600f0b612619565b600f0b612619565b6101bd6112757fffffffffffffffffffffffffffffffffc000000000000000000000000000000061123781611f02565b61124082611f02565b6fffffffffffffffffffffffffffffffff169060801b1790806fffffffffffffffffffffffffffffffff169060801b176127ff565b6111ff8160801d600f0b612619565b8161128e91611d8e565b61015757808261112c565b5050fd5b9150915f6112aa91611d8e565b5f9082906110b3565b6040513d5f823e3d90fd5b5f80fd5b807f93dafdf10000000000000000000000000000000000000000000000000000000060049252fd5b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110611367576103a68561039a81870382611d8e565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611350565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b818110611410576103a68561039a81870382611d8e565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016113f9565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015757601e5461147781611de7565b6114846040519182611d8e565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b8383106115d25786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106114f05786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110611589575050505050602080600192970193019301909286959492936114e3565b90919293946020806115c5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951611b1b565b9701950193929101611565565b6040516115de81611d45565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461160781611de7565b916116156040519384611d8e565b8183528a526020808b20908b9084015b83821061164b5750505050600192826020928360029501528152019201920191906114b4565b60016020819261165a86611dff565b815201930191019091611625565b50346101575761167736611a68565b9161168882600f0b85600f0b611dcf565b9161169984600f0b83600f0b611dcf565b9383600f0b841480159061177a575b6116ee575b916101bd95610d7192610d7e946fffffffffffffffffffffffffffffffff169060801b17916fffffffffffffffffffffffffffffffff169060801b176127ff565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e1257866040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156102fd5761175f575b50506116ad565b8161176d9195939495611d8e565b610e12579190865f611758565b5084600f0b8514156116a8565b503461015757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101575760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110611804576103a68561039a81870382611d8e565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016117ed565b346112be575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126112be5761188961186f5f60801d800161281e565b60801b6118818160801d600f0b612487565b600f0b612487565b6118cf61186f7103e8fffffffffffffffffffffffffffffc1860801d7ffffffffffffffffffffffffffffffc18000000000000000000000000000003e860801d0161281e565b61194f6fffffffffffffffffffffffffffffffff6119347f7fffffffffffffffffffffffffffffff8000000000000000000000000000000060801d7f800000000000000000000000000000007fffffffffffffffffffffffffffffff60801d0161281e565b60801b176119478160801d600f0b6124fd565b600f0b6124fd565b6119c56119ae6f3fffffffffffffffffffffffffffffff61196f81611cd4565b61197882611cd4565b6fffffffffffffffffffffffffffffffff169060801b1790806fffffffffffffffffffffffffffffffff169060801b179061244a565b6119bd8160801d600f0b612593565b600f0b612593565b005b346112be576119d536611a68565b919092826fffffffffffffffffffffffffffffffff168460801b17826fffffffffffffffffffffffffffffffff168260801b17141593600f0b90600f0b1491821592611a35575b505015611a2c576119c590612345565b6119c5906122c9565b909150600f0b90600f0b14158280611a1c565b6004359081600f0b82036112be57565b6024359081600f0b82036112be57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60809101126112be5760043580600f0b81036112be579060243580600f0b81036112be579060443580600f0b81036112be579060643580600f0b81036112be5790565b60206040818301928281528451809452019201905f5b818110611aef5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611ae2565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b818110611b7b5750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101611b6e565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611be557505050505090565b9091929394602080611c21837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951611b1b565b97019301930191939290611bd6565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611c6257505050505090565b9091929394602080611cc5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190611b5e565b97019301930191939290611c53565b600f0b600101906f7fffffffffffffffffffffffffffffff82137fffffffffffffffffffffffffffffffff80000000000000000000000000000000831217611d1857565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6040810190811067ffffffffffffffff821117611d6157604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611d6157604052565b81810392915f138015828513169184121617611d1857565b67ffffffffffffffff8111611d615760051b60200190565b90604051915f8154908160011c9260018316928315611ef8575b602085108414611ecb578487528693908115611e8b5750600114611e47575b50611e4592500383611d8e565b565b90505f9291925260205f20905f915b818310611e6f575050906020611e45928201015f611e38565b6020919350806001915483858901015201910190918492611e56565b60209350611e459592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f611e38565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693611e19565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114611d18575f0390565b90604051918281549182825260208201905f5260205f20925f905b80600783011061214857611e45945491818110612112575b8181106120dc575b8181106120a6575b818110612070575b81811061203a575b818110612004575b818110611fcf575b10611fa2575b500383611d8e565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f611f9a565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b168152019301611f94565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b168152019301611f8c565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b168152019301611f84565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b168152019301611f7c565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b168152019301611f74565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301611f6c565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301611f64565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391611f4c565b9190915f8382019384129112908015821691151617611d1857565b60085460ff1680156121ff5790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156112b3575f91612297575b50151590565b90506020813d6020116122c1575b816122b260209383611d8e565b810103126112be57515f612291565b3d91506122a5565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907fa5982885000000000000000000000000000000000000000000000000000000008252151560048201525f81602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b5f611e4591611d8e565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907f0c9fd581000000000000000000000000000000000000000000000000000000008252151560048201525f81602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b6123f970010000000000000000000000000000000060801d7f7fffffffffffffffffffffffffffffff0000000000000000000000000000000060801d0161281e565b60801b90565b612421600160801d6f7fffffffffffffffffffffffffffffff60801d0161281e565b507f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b61246d9061245f8360801d8260801d0161281e565b92600f0b90600f0b0161281e565b6fffffffffffffffffffffffffffffffff169060801b1790565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201526f7fffffffffffffffffffffffffffffff60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051907ffe74f05b00000000000000000000000000000000000000000000000000000000825260048201527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be576040517ffe74f05b0000000000000000000000000000000000000000000000000000000081525f60048201525f60248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156112b35761233b5750565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156112be57604051917ffe74f05b000000000000000000000000000000000