UNPKG

@cryptoalgebra/integral-periphery

Version:

Peripheral smart contracts of Algebra Integral protocol

384 lines (383 loc) 40.2 kB
{ "_format": "hh-sol-artifact-1", "contractName": "V3Migrator", "sourceName": "contracts/V3Migrator.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "address", "name": "_WNativeToken", "type": "address" }, { "internalType": "address", "name": "_nonfungiblePositionManager", "type": "address" }, { "internalType": "address", "name": "_poolDeployer", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "WNativeToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" }, { "internalType": "address", "name": "deployer", "type": "address" }, { "internalType": "uint160", "name": "sqrtPriceX96", "type": "uint160" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "createAndInitializePoolIfNecessary", "outputs": [ { "internalType": "address", "name": "pool", "type": "address" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "uint256", "name": "liquidityToMigrate", "type": "uint256" }, { "internalType": "uint8", "name": "percentageToMigrate", "type": "uint8" }, { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" }, { "internalType": "address", "name": "deployer", "type": "address" }, { "internalType": "int24", "name": "tickLower", "type": "int24" }, { "internalType": "int24", "name": "tickUpper", "type": "int24" }, { "internalType": "uint256", "name": "amount0Min", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Min", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bool", "name": "refundAsNative", "type": "bool" } ], "internalType": "struct IV3Migrator.MigrateParams", "name": "params", "type": "tuple" } ], "name": "migrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "nonfungiblePositionManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "poolDeployer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "selfPermit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "selfPermitAllowed", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "selfPermitAllowedIfNecessary", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "selfPermitIfNecessary", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x6101006040523480156200001257600080fd5b5060405162001f9138038062001f91833981016040819052620000359162000075565b6001600160a01b03938416608052831660a05290821660c0521660e052620000d2565b80516001600160a01b03811681146200007057600080fd5b919050565b600080600080608085870312156200008c57600080fd5b620000978562000058565b9350620000a76020860162000058565b9250620000b76040860162000058565b9150620000c76060860162000058565b905092959194509250565b60805160a05160c05160e051611e40620001516000396000818161028d01528181610b5f01528181610b9901528181610bc30152610da201526000818160dd0152818161020601528181610e0601528181610e8201528181610f7f0152610ffb015260006101820152600081816102d4015261045d0152611e406000f3fe6080604052600436106100c05760003560e01c8063ac9650d811610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063ac9650d81461023b578063ad40d1311461025b578063b44a27221461027b57600080fd5b806372426eb1116100a557806372426eb1146101e15780638af3ac85146101f4578063a4a78f0c1461022857600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc3660046116bd565b610309565b6101a46101ef366004611719565b6103c4565b34801561020057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102363660046116bd565b610713565b61024e6102493660046117d5565b610759565b6040516101c5919061186e565b34801561026757600080fd5b50610169610276366004611924565b61087a565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd3660046116bd565b611099565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696103043660046116bd565b6110b3565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161061045b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610160565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8616610536576040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015282169063d9a641e190604401602060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f919061193d565b91506105d9565b6040517f23da36cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152898116602483015288811660448301528216906323da36cc90606401602060405180830381865afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d6919061193d565b91505b73ffffffffffffffffffffffffffffffffffffffff82166106bb5773ffffffffffffffffffffffffffffffffffffffff86166106b6576040517f321935c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063321935c690610667908b908b9089908990600401611961565b6020604051808303816000875af1158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa919061193d565b91506106b68286611130565b610708565b60006106dc8373ffffffffffffffffffffffffffffffffffffffff166111ad565b90508073ffffffffffffffffffffffffffffffffffffffff16600003610706576107068387611130565b505b509695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61073d8761122a565b101561075157610751868686868686610309565b505050505050565b60608167ffffffffffffffff811115610774576107746119d9565b6040519080825280602002602001820160405280156107a757816020015b60608152602001906001900390816107925790505b50905060005b8281101561087357600080308686858181106107cb576107cb611a08565b90506020028101906107dd9190611a37565b6040516107eb929190611aa3565b600060405180830381855af49150503d8060008114610826576040519150601f19603f3d011682016040523d82523d6000602084013e61082b565b606091505b50915091508161084b57600081511161084357600080fd5b805181602001fd5b8084848151811061085e5761085e611a08565b602090810291909101015250506001016107ad565b5092915050565b600061088c6060830160408401611ab3565b60ff16116108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b60646109086060830160408401611ab3565b60ff161115610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6109806020820182611ad0565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd336109a96020850185611ad0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af1158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190611afb565b50600080610a5a6020840184611ad0565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb9190611b18565b909250905060006064610b046060860160408701611ab3565b610b119060ff1685611b6b565b610b1b9190611b82565b905060006064610b316060870160408801611ab3565b610b3e9060ff1685611b6b565b610b489190611b82565b9050610b84610b5d6080870160608801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000846112c7565b610bbe610b9760a0870160808801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000836112c7565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fe3f3be76040518061016001604052808a6060016020810190610c1c9190611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c4760a08c0160808d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c7260c08c0160a08d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c9d60e08c0160c08d01611bcc565b60020b8152602001610cb66101008c0160e08d01611bcc565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610cf46101608c016101408d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61016001358152506040518263ffffffff1660e01b8152600401610d349190611be9565b6080604051808303816000875af1158015610d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d779190611ce5565b93509350505085821015610f1e5783821015610dc857610dc8610da06080890160608a01611ad0565b7f000000000000000000000000000000000000000000000000000000000000000060006112c7565b6000610dd48388611d38565b9050610de86101a089016101808a01611d4b565b8015610e4e575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610e3660808a0160608b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b15610f02576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610edb57600080fd5b505af1158015610eef573d6000803e3d6000fd5b50505050610efd3382611437565b610f1c565b610f1c610f1560808a0160608b01611ad0565b3383611520565b505b848110156110905782811015610f4157610f41610da060a0890160808a01611ad0565b6000610f4d8287611d38565b9050610f616101a089016101808a01611d4b565b8015610fc7575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610faf60a08a0160808b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b1561107b576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b15801561105457600080fd5b505af1158015611068573d6000803e3d6000fd5b505050506110763382611437565b61108e565b61108e610f1560a08a0160808b01611ad0565b505b50505050505050565b846110a38761122a565b1015610751576107518686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f637731d90602401600060405180830381600087803b15801561119957600080fd5b505af1158015610751573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e9190611d7f565b50939695505050505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260009073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90604401602060405180830381865afa15801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c19190611dfe565b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161135e9190611e17565b6000604051808303816000865af19150503d806000811461139b576040519150601f19603f3d011682016040523d82523d6000602084013e6113a0565b606091505b50915091508180156113ca5750805115806113ca5750808060200190518101906113ca9190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff841690839060405161146e9190611e17565b60006040518083038185875af1925050503d80600081146114ab576040519150601f19603f3d011682016040523d82523d6000602084013e6114b0565b606091505b505090508061151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916115b79190611e17565b6000604051808303816000865af19150503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b50915091508180156116235750805115806116235750808060200190518101906116239190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b73ffffffffffffffffffffffffffffffffffffffff811681146116ab57600080fd5b50565b60ff811681146116ab57600080fd5b60008060008060008060c087890312156116d657600080fd5b86356116e181611689565b9550602087013594506040870135935060608701356116ff816116ae565b9598949750929560808101359460a0909101359350915050565b60008060008060008060a0878903121561173257600080fd5b863561173d81611689565b9550602087013561174d81611689565b9450604087013561175d81611689565b9350606087013561176d81611689565b9250608087013567ffffffffffffffff8082111561178a57600080fd5b818901915089601f83011261179e57600080fd5b8135818111156117ad57600080fd5b8a60208285010111156117bf57600080fd5b6020830194508093505050509295509295509295565b600080602083850312156117e857600080fd5b823567ffffffffffffffff8082111561180057600080fd5b818501915085601f83011261181457600080fd5b81358181111561182357600080fd5b8660208260051b850101111561183857600080fd5b60209290920196919550909350505050565b60005b8381101561186557818101518382015260200161184d565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526118da818989018a850161184a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101611895565b5092979650505050505050565b60006101a0828403121561193757600080fd5b50919050565b60006020828403121561194f57600080fd5b815161195a81611689565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a6c57600080fd5b83018035915067ffffffffffffffff821115611a8757600080fd5b602001915036819003821315611a9c57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215611ac557600080fd5b813561195a816116ae565b600060208284031215611ae257600080fd5b813561195a81611689565b80151581146116ab57600080fd5b600060208284031215611b0d57600080fd5b815161195a81611aed565b60008060408385031215611b2b57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176112c1576112c1611b3c565b600082611bb8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b81146116ab57600080fd5b600060208284031215611bde57600080fd5b813561195a81611bbd565b815173ffffffffffffffffffffffffffffffffffffffff16815261016081016020830151611c2f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611c57604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151611c6c606084018260020b9052565b506080830151611c81608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611cd48285018273ffffffffffffffffffffffffffffffffffffffff169052565b505061014092830151919092015290565b60008060008060808587031215611cfb57600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611d2257600080fd5b6040860151606090960151949790965092505050565b818103818111156112c1576112c1611b3c565b600060208284031215611d5d57600080fd5b813561195a81611aed565b805161ffff81168114611d7a57600080fd5b919050565b60008060008060008060c08789031215611d9857600080fd5b8651611da381611689565b6020880151909650611db481611bbd565b9450611dc260408801611d68565b93506060870151611dd2816116ae565b9250611de060808801611d68565b915060a0870151611df081611aed565b809150509295509295509295565b600060208284031215611e1057600080fd5b5051919050565b60008251611e2981846020870161184a565b919091019291505056fea164736f6c6343000814000a", "deployedBytecode": "0x6080604052600436106100c05760003560e01c8063ac9650d811610074578063c2e3140a1161004e578063c2e3140a146102af578063c45a0155146102c2578063f3995c67146102f657600080fd5b8063ac9650d81461023b578063ad40d1311461025b578063b44a27221461027b57600080fd5b806372426eb1116100a557806372426eb1146101e15780638af3ac85146101f4578063a4a78f0c1461022857600080fd5b80633119049a146101705780634659a494146101ce57600080fd5b3661016b573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f7420574e6174697665546f6b656e0000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561017c57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101696101dc3660046116bd565b610309565b6101a46101ef366004611719565b6103c4565b34801561020057600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102363660046116bd565b610713565b61024e6102493660046117d5565b610759565b6040516101c5919061186e565b34801561026757600080fd5b50610169610276366004611924565b61087a565b34801561028757600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696102bd3660046116bd565b611099565b3480156102ce57600080fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101696103043660046116bd565b6110b3565b6040517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101869052606481018590526001608482015260ff841660a482015260c4810183905260e4810182905273ffffffffffffffffffffffffffffffffffffffff871690638fcbaf0c90610104015b600060405180830381600087803b1580156103a457600080fd5b505af11580156103b8573d6000803e3d6000fd5b50505050505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161061045b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206f72646572206f6620746f6b656e730000000000000000006044820152606401610160565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8616610536576040517fd9a641e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015282169063d9a641e190604401602060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f919061193d565b91506105d9565b6040517f23da36cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152898116602483015288811660448301528216906323da36cc90606401602060405180830381865afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d6919061193d565b91505b73ffffffffffffffffffffffffffffffffffffffff82166106bb5773ffffffffffffffffffffffffffffffffffffffff86166106b6576040517f321935c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063321935c690610667908b908b9089908990600401611961565b6020604051808303816000875af1158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa919061193d565b91506106b68286611130565b610708565b60006106dc8373ffffffffffffffffffffffffffffffffffffffff166111ad565b90508073ffffffffffffffffffffffffffffffffffffffff16600003610706576107068387611130565b505b509695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61073d8761122a565b101561075157610751868686868686610309565b505050505050565b60608167ffffffffffffffff811115610774576107746119d9565b6040519080825280602002602001820160405280156107a757816020015b60608152602001906001900390816107925790505b50905060005b8281101561087357600080308686858181106107cb576107cb611a08565b90506020028101906107dd9190611a37565b6040516107eb929190611aa3565b600060405180830381855af49150503d8060008114610826576040519150601f19603f3d011682016040523d82523d6000602084013e61082b565b606091505b50915091508161084b57600081511161084357600080fd5b805181602001fd5b8084848151811061085e5761085e611a08565b602090810291909101015250506001016107ad565b5092915050565b600061088c6060830160408401611ab3565b60ff16116108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f20736d616c6c0000000000000000000000006044820152606401610160565b60646109086060830160408401611ab3565b60ff161115610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f50657263656e7461676520746f6f206c617267650000000000000000000000006044820152606401610160565b6109806020820182611ad0565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd336109a96020850185611ad0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152602084013560448201526064016020604051808303816000875af1158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190611afb565b50600080610a5a6020840184611ad0565b6040517f89afcb4400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906389afcb449060240160408051808303816000875af1158015610ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb9190611b18565b909250905060006064610b046060860160408701611ab3565b610b119060ff1685611b6b565b610b1b9190611b82565b905060006064610b316060870160408801611ab3565b610b3e9060ff1685611b6b565b610b489190611b82565b9050610b84610b5d6080870160608801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000846112c7565b610bbe610b9760a0870160808801611ad0565b7f0000000000000000000000000000000000000000000000000000000000000000836112c7565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fe3f3be76040518061016001604052808a6060016020810190610c1c9190611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c4760a08c0160808d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c7260c08c0160a08d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff168152602001610c9d60e08c0160c08d01611bcc565b60020b8152602001610cb66101008c0160e08d01611bcc565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610cf46101608c016101408d01611ad0565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61016001358152506040518263ffffffff1660e01b8152600401610d349190611be9565b6080604051808303816000875af1158015610d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d779190611ce5565b93509350505085821015610f1e5783821015610dc857610dc8610da06080890160608a01611ad0565b7f000000000000000000000000000000000000000000000000000000000000000060006112c7565b6000610dd48388611d38565b9050610de86101a089016101808a01611d4b565b8015610e4e575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610e3660808a0160608b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b15610f02576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610edb57600080fd5b505af1158015610eef573d6000803e3d6000fd5b50505050610efd3382611437565b610f1c565b610f1c610f1560808a0160608b01611ad0565b3383611520565b505b848110156110905782811015610f4157610f41610da060a0890160808a01611ad0565b6000610f4d8287611d38565b9050610f616101a089016101808a01611d4b565b8015610fc7575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610faf60a08a0160808b01611ad0565b73ffffffffffffffffffffffffffffffffffffffff16145b1561107b576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b15801561105457600080fd5b505af1158015611068573d6000803e3d6000fd5b505050506110763382611437565b61108e565b61108e610f1560a08a0160808b01611ad0565b505b50505050505050565b846110a38761122a565b1015610751576107518686868686865b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff87169063d505accf9060e40161038a565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f637731d90602401600060405180830381600087803b15801561119957600080fd5b505af1158015610751573d6000803e3d6000fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e9190611d7f565b50939695505050505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015260009073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90604401602060405180830381865afa15801561129d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c19190611dfe565b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161135e9190611e17565b6000604051808303816000865af19150503d806000811461139b576040519150601f19603f3d011682016040523d82523d6000602084013e6113a0565b606091505b50915091508180156113ca5750805115806113ca5750808060200190518101906113ca9190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53410000000000000000000000000000000000000000000000000000000000006044820152606401610160565b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff841690839060405161146e9190611e17565b60006040518083038185875af1925050503d80600081146114ab576040519150601f19603f3d011682016040523d82523d6000602084013e6114b0565b606091505b505090508061151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f53544500000000000000000000000000000000000000000000000000000000006044820152606401610160565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916115b79190611e17565b6000604051808303816000865af19150503d80600081146115f4576040519150601f19603f3d011682016040523d82523d6000602084013e6115f9565b606091505b50915091508180156116235750805115806116235750808060200190518101906116239190611afb565b611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53540000000000000000000000000000000000000000000000000000000000006044820152606401610160565b73ffffffffffffffffffffffffffffffffffffffff811681146116ab57600080fd5b50565b60ff811681146116ab57600080fd5b60008060008060008060c087890312156116d657600080fd5b86356116e181611689565b9550602087013594506040870135935060608701356116ff816116ae565b9598949750929560808101359460a0909101359350915050565b60008060008060008060a0878903121561173257600080fd5b863561173d81611689565b9550602087013561174d81611689565b9450604087013561175d81611689565b9350606087013561176d81611689565b9250608087013567ffffffffffffffff8082111561178a57600080fd5b818901915089601f83011261179e57600080fd5b8135818111156117ad57600080fd5b8a60208285010111156117bf57600080fd5b6020830194508093505050509295509295509295565b600080602083850312156117e857600080fd5b823567ffffffffffffffff8082111561180057600080fd5b818501915085601f83011261181457600080fd5b81358181111561182357600080fd5b8660208260051b850101111561183857600080fd5b60209290920196919550909350505050565b60005b8381101561186557818101518382015260200161184d565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611917577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526118da818989018a850161184a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101611895565b5092979650505050505050565b60006101a0828403121561193757600080fd5b50919050565b60006020828403121561194f57600080fd5b815161195a81611689565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a6c57600080fd5b83018035915067ffffffffffffffff821115611a8757600080fd5b602001915036819003821315611a9c57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215611ac557600080fd5b813561195a816116ae565b600060208284031215611ae257600080fd5b813561195a81611689565b80151581146116ab57600080fd5b600060208284031215611b0d57600080fd5b815161195a81611aed565b60008060408385031215611b2b57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176112c1576112c1611b3c565b600082611bb8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8060020b81146116ab57600080fd5b600060208284031215611bde57600080fd5b813561195a81611bbd565b815173ffffffffffffffffffffffffffffffffffffffff16815261016081016020830151611c2f602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151611c57604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151611c6c606084018260020b9052565b506080830151611c81608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611cd48285018273ffffffffffffffffffffffffffffffffffffffff169052565b505061014092830151919092015290565b60008060008060808587031215611cfb57600080fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611d2257600080fd5b6040860151606090960151949790965092505050565b818103818111156112c1576112c1611b3c565b600060208284031215611d5d57600080fd5b813561195a81611aed565b805161ffff81168114611d7a57600080fd5b919050565b60008060008060008060c08789031215611d9857600080fd5b8651611da381611689565b6020880151909650611db481611bbd565b9450611dc260408801611d68565b93506060870151611dd2816116ae565b9250611de060808801611d68565b915060a0870151611df081611aed565b809150509295509295509295565b600060208284031215611e1057600080fd5b5051919050565b60008251611e2981846020870161184a565b919091019291505056fea164736f6c6343000814000a", "linkReferences": {}, "deployedLinkReferences": {} }