kfc-v3-periphery
Version:
🎚 Peripheral smart contracts for interacting with KFC V3
277 lines (276 loc) • 40 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "QuoterV2",
"sourceName": "contracts/lens/QuoterV2.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_factory",
"type": "address"
},
{
"internalType": "address",
"name": "_WETH9",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "WETH9",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "amount0Delta",
"type": "int256"
},
{
"internalType": "int256",
"name": "amount1Delta",
"type": "int256"
},
{
"internalType": "bytes",
"name": "path",
"type": "bytes"
}
],
"name": "kfcV3SwapCallback",
"outputs": [],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "path",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
}
],
"name": "quoteExactInput",
"outputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "uint160[]",
"name": "sqrtPriceX96AfterList",
"type": "uint160[]"
},
{
"internalType": "uint32[]",
"name": "initializedTicksCrossedList",
"type": "uint32[]"
},
{
"internalType": "uint256",
"name": "gasEstimate",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"internalType": "struct IQuoterV2.QuoteExactInputSingleParams",
"name": "params",
"type": "tuple"
}
],
"name": "quoteExactInputSingle",
"outputs": [
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
},
{
"internalType": "uint160",
"name": "sqrtPriceX96After",
"type": "uint160"
},
{
"internalType": "uint32",
"name": "initializedTicksCrossed",
"type": "uint32"
},
{
"internalType": "uint256",
"name": "gasEstimate",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "path",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "amountOut",
"type": "uint256"
}
],
"name": "quoteExactOutput",
"outputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint160[]",
"name": "sqrtPriceX96AfterList",
"type": "uint160[]"
},
{
"internalType": "uint32[]",
"name": "initializedTicksCrossedList",
"type": "uint32[]"
},
{
"internalType": "uint256",
"name": "gasEstimate",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"internalType": "struct IQuoterV2.QuoteExactOutputSingleParams",
"name": "params",
"type": "tuple"
}
],
"name": "quoteExactOutputSingle",
"outputs": [
{
"internalType": "uint256",
"name": "amountIn",
"type": "uint256"
},
{
"internalType": "uint160",
"name": "sqrtPriceX96After",
"type": "uint160"
},
{
"internalType": "uint32",
"name": "initializedTicksCrossed",
"type": "uint32"
},
{
"internalType": "uint256",
"name": "gasEstimate",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60c06040523480156200001157600080fd5b506040516200213c3803806200213c833981016040819052620000349162000070565b6001600160601b0319606092831b8116608052911b1660a052620000a7565b80516001600160a01b03811681146200006b57600080fd5b919050565b6000806040838503121562000083578182fd5b6200008e8362000053565b91506200009e6020840162000053565b90509250929050565b60805160601c60a05160601c612061620000db600039806104dd52508061015a52806107365280610b4552506120616000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bd21704a1161005b578063bd21704a146100d8578063c45a0155146100fb578063c6a5026a14610103578063cdca1753146101165761007d565b8063101e8605146100825780632f80bb1d146100975780634aa4a4fc146100c3575b600080fd5b610095610090366004611b97565b610129565b005b6100aa6100a5366004611b31565b6102e5565b6040516100ba9493929190611ebc565b60405180910390f35b6100cb6104db565b6040516100ba9190611df5565b6100eb6100e6366004611c4f565b6104ff565b6040516100ba9493929190611f64565b6100cb610734565b6100eb610111366004611c4f565b610758565b6100aa610124366004611b31565b610916565b60008313806101385750600082135b61014157600080fd5b600080600061014f84610aee565b9250925092506101817f0000000000000000000000000000000000000000000000000000000000000000848484610b1f565b5060008060008089136101c7578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101fc565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250600061020f878787610b3e565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561025a57600080fd5b505afa15801561026e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102929190611c71565b50505050509150915085156102b857604051848152826020820152816040820152606081fd5b600054156102ce5760005484146102ce57600080fd5b604051858152826020820152816040820152606081fd5b600060608060006102f586610b7c565b67ffffffffffffffff8111801561030b57600080fd5b50604051908082528060200260200182016040528015610335578160200160208202803683370190505b50925061034186610b7c565b67ffffffffffffffff8111801561035757600080fd5b50604051908082528060200260200182016040528015610381578160200160208202803683370190505b50915060005b60008060006103958a610aee565b9250925092506000806000806104186040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152506104ff565b9350935093509350828b898151811061042d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061047457fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926104a18e610bab565b156104b6576104af8e610bb3565b9d506104c6565b8c9b5050505050505050506104d2565b50505050505050610387565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff8082169084161092849261053d9290610b3e565b9050866080015173ffffffffffffffffffffffffffffffffffffffff166000141561056b5760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff166346964149308561059b8c60400151610bee565b6000038c6080015173ffffffffffffffffffffffffffffffffffffffff166000146105ca578c608001516105f0565b876105e95773fffd8963efd1fc6a506488495d951d5263988d256105f0565b6401000276a45b8d602001518e606001518f6000015160405160200161061193929190611d8f565b60405160208183030381529060405260006040518763ffffffff1660e01b815260040161064396959493929190611e16565b6040805180830381600087803b15801561065c57600080fd5b505af19250505080156106aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526106a791810190611b74565b60015b610727573d8080156106d8576040519150601f19603f3d011682016040523d82523d6000602084013e6106dd565b606091505b505a82039450886080015173ffffffffffffffffffffffffffffffffffffffff166000141561070b57600080555b610716818487610c20565b97509750975097505050505061072d565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926107969290610b3e565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff16634696414930856107c88c60400151610bee565b60808d015173ffffffffffffffffffffffffffffffffffffffff16156107f2578c60800151610818565b876108115773fffd8963efd1fc6a506488495d951d5263988d25610818565b6401000276a45b8d600001518e606001518f6020015160405160200161083993929190611d8f565b60405160208183030381529060405260006040518763ffffffff1660e01b815260040161086b96959493929190611e16565b6040805180830381600087803b15801561088457600080fd5b505af19250505080156108d2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108cf91810190611b74565b60015b610727573d808015610900576040519150601f19603f3d011682016040523d82523d6000602084013e610905565b606091505b505a82039450610716818487610c20565b6000606080600061092686610b7c565b67ffffffffffffffff8111801561093c57600080fd5b50604051908082528060200260200182016040528015610966578160200160208202803683370190505b50925061097286610b7c565b67ffffffffffffffff8111801561098857600080fd5b506040519080825280602002602001820160405280156109b2578160200160208202803683370190505b50915060005b60008060006109c68a610aee565b925092509250600080600080610a496040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610758565b9350935093509350828b8981518110610a5e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a8981518110610aa557fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b92610ad28e610bab565b156104b657610ae08e610bb3565b9d50505050505050506109b8565b60008080610afc8482610cf4565b9250610b09846014610df4565b9050610b16846017610cf4565b91509193909250565b6000610b3585610b30868686610ee4565b610f61565b95945050505050565b6000610b747f0000000000000000000000000000000000000000000000000000000000000000610b6f868686610ee4565b610f91565b949350505050565b805160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec909101045b919050565b516042111590565b8051606090610be89083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9016110c7565b92915050565b60007f80000000000000000000000000000000000000000000000000000000000000008210610c1c57600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c6f57600080fd5b505afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611c71565b50939650610cbc94508d93506112ae92505050565b91975095509050610ce473ffffffffffffffffffffffffffffffffffffffff8916838361136f565b9350869250505093509350935093565b600081826014011015610d6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610ddb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610e6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610edb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610eec611a00565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610f24579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610f6d8383610f91565b90503373ffffffffffffffffffffffffffffffffffffffff821614610be857600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610fd357600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b60608182601f01101561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8282840110156111ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561121e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b60608215801561123d57604051915060008252602082016040526112a5565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561127657805183526020928301920161125e565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000806000835160601461134e57604484511015611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890611e85565b60405180910390fd5b6004840193508380602001905181019061131b9190611be5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f89190611e72565b838060200190518101906113629190611d08565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c357600080fd5b505afa1580156113d7573d6000803e3d6000fd5b505050506040513d60208110156113ed57600080fd5b5051600290810b908c900b816113ff57fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145257600080fd5b505afa158015611466573d6000803e3d6000fd5b505050506040513d602081101561147c57600080fd5b5051600290810b908d900b8161148e57fe5b0560020b8161149957fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d602081101561151057600080fd5b5051600290810b908d900b8161152257fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561157557600080fd5b505afa158015611589573d6000803e3d6000fd5b505050506040513d602081101561159f57600080fd5b5051600290810b908e900b816115b157fe5b0560020b816115bc57fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561161d57600080fd5b505afa158015611631573d6000803e3d6000fd5b505050506040513d602081101561164757600080fd5b5051161180156116da57508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d60208110156116c257600080fd5b5051600290810b908d900b816116d457fe5b0760020b155b80156116eb57508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561174b57600080fd5b505afa15801561175f573d6000803e3d6000fd5b505050506040513d602081101561177557600080fd5b50511611801561180857508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117c657600080fd5b505afa1580156117da573d6000803e3d6000fd5b505050506040513d60208110156117f057600080fd5b5051600290810b908e900b8161180257fe5b0760020b155b801561181957508b60020b8d60020b125b95508160010b8460010b128061184557508160010b8460010b14801561184557508060ff168360ff1611155b1561185b57839950829750819850809650611868565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b1361199f578560010b8760010b14156118d9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561193057600080fd5b505afa158015611944573d6000803e3d6000fd5b505050506040513d602081101561195a57600080fd5b5051169050611968816119c7565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611894565b81156119ac576001880397505b82156119b9576001880397505b505050505050509392505050565b6000805b8215610be8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301909216916001016119cb565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611a30578081fd5b8135611a43611a3e82611fbf565b611f9b565b818152846020838601011115611a57578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610ba657600080fd5b600060a08284031215611a94578081fd5b60405160a0810181811067ffffffffffffffff82111715611ab157fe5b6040529050808235611ac28161202f565b81526020830135611ad28161202f565b602082015260408381013590820152606083013562ffffff81168114611af757600080fd5b6060820152611b0860808401611b14565b60808201525092915050565b8035610ba68161202f565b805161ffff81168114610ba657600080fd5b60008060408385031215611b43578182fd5b823567ffffffffffffffff811115611b59578283fd5b611b6585828601611a20565b95602094909401359450505050565b60008060408385031215611b86578182fd5b505080516020909101519092909150565b600080600060608486031215611bab578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611bcf578182fd5b611bdb86828701611a20565b9150509250925092565b600060208284031215611bf6578081fd5b815167ffffffffffffffff811115611c0c578182fd5b8201601f81018413611c1c578182fd5b8051611c2a611a3e82611fbf565b818152856020838501011115611c3e578384fd5b610b35826020830160208601611fff565b600060a08284031215611c60578081fd5b611c6a8383611a83565b9392505050565b600080600080600080600060e0888a031215611c8b578283fd5b8751611c968161202f565b9650611ca460208901611a71565b9550611cb260408901611b1f565b9450611cc060608901611b1f565b9350611cce60808901611b1f565b925060a088015160ff81168114611ce3578283fd5b60c08901519092508015158114611cf8578182fd5b8091505092959891949750929550565b600080600060608486031215611d1c578081fd5b835192506020840151611d2e8161202f565b9150611d3c60408501611a71565b90509250925092565b60008151808452611d5d816020860160208601611fff565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528715156020840152866040840152808616606084015260c06080840152611e5c60c0840186611d45565b915080841660a084015250979650505050505050565b600060208252611c6a6020830184611d45565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611f1257845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611ee0565b505084810360408601528651808252908201925081870190845b81811015611f4e57825163ffffffff1685529383019391830191600101611f2c565b5050505060609290920192909252949350505050565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611fb757fe5b604052919050565b600067ffffffffffffffff821115611fd357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561201a578181015183820152602001612002565b83811115612029576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461205157600080fd5b5056fea164736f6c6343000706000a",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bd21704a1161005b578063bd21704a146100d8578063c45a0155146100fb578063c6a5026a14610103578063cdca1753146101165761007d565b8063101e8605146100825780632f80bb1d146100975780634aa4a4fc146100c3575b600080fd5b610095610090366004611b97565b610129565b005b6100aa6100a5366004611b31565b6102e5565b6040516100ba9493929190611ebc565b60405180910390f35b6100cb6104db565b6040516100ba9190611df5565b6100eb6100e6366004611c4f565b6104ff565b6040516100ba9493929190611f64565b6100cb610734565b6100eb610111366004611c4f565b610758565b6100aa610124366004611b31565b610916565b60008313806101385750600082135b61014157600080fd5b600080600061014f84610aee565b9250925092506101817f0000000000000000000000000000000000000000000000000000000000000000848484610b1f565b5060008060008089136101c7578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036101fc565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b925092509250600061020f878787610b3e565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561025a57600080fd5b505afa15801561026e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102929190611c71565b50505050509150915085156102b857604051848152826020820152816040820152606081fd5b600054156102ce5760005484146102ce57600080fd5b604051858152826020820152816040820152606081fd5b600060608060006102f586610b7c565b67ffffffffffffffff8111801561030b57600080fd5b50604051908082528060200260200182016040528015610335578160200160208202803683370190505b50925061034186610b7c565b67ffffffffffffffff8111801561035757600080fd5b50604051908082528060200260200182016040528015610381578160200160208202803683370190505b50915060005b60008060006103958a610aee565b9250925092506000806000806104186040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152506104ff565b9350935093509350828b898151811061042d57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a898151811061047457fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926104a18e610bab565b156104b6576104af8e610bb3565b9d506104c6565b8c9b5050505050505050506104d2565b50505050505050610387565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff8082169084161092849261053d9290610b3e565b9050866080015173ffffffffffffffffffffffffffffffffffffffff166000141561056b5760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff166346964149308561059b8c60400151610bee565b6000038c6080015173ffffffffffffffffffffffffffffffffffffffff166000146105ca578c608001516105f0565b876105e95773fffd8963efd1fc6a506488495d951d5263988d256105f0565b6401000276a45b8d602001518e606001518f6000015160405160200161061193929190611d8f565b60405160208183030381529060405260006040518763ffffffff1660e01b815260040161064396959493929190611e16565b6040805180830381600087803b15801561065c57600080fd5b505af19250505080156106aa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526106a791810190611b74565b60015b610727573d8080156106d8576040519150601f19603f3d011682016040523d82523d6000602084013e6106dd565b606091505b505a82039450886080015173ffffffffffffffffffffffffffffffffffffffff166000141561070b57600080555b610716818487610c20565b97509750975097505050505061072d565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926107969290610b3e565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff16634696414930856107c88c60400151610bee565b60808d015173ffffffffffffffffffffffffffffffffffffffff16156107f2578c60800151610818565b876108115773fffd8963efd1fc6a506488495d951d5263988d25610818565b6401000276a45b8d600001518e606001518f6020015160405160200161083993929190611d8f565b60405160208183030381529060405260006040518763ffffffff1660e01b815260040161086b96959493929190611e16565b6040805180830381600087803b15801561088457600080fd5b505af19250505080156108d2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526108cf91810190611b74565b60015b610727573d808015610900576040519150601f19603f3d011682016040523d82523d6000602084013e610905565b606091505b505a82039450610716818487610c20565b6000606080600061092686610b7c565b67ffffffffffffffff8111801561093c57600080fd5b50604051908082528060200260200182016040528015610966578160200160208202803683370190505b50925061097286610b7c565b67ffffffffffffffff8111801561098857600080fd5b506040519080825280602002602001820160405280156109b2578160200160208202803683370190505b50915060005b60008060006109c68a610aee565b925092509250600080600080610a496040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610758565b9350935093509350828b8981518110610a5e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a8981518110610aa557fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b92610ad28e610bab565b156104b657610ae08e610bb3565b9d50505050505050506109b8565b60008080610afc8482610cf4565b9250610b09846014610df4565b9050610b16846017610cf4565b91509193909250565b6000610b3585610b30868686610ee4565b610f61565b95945050505050565b6000610b747f0000000000000000000000000000000000000000000000000000000000000000610b6f868686610ee4565b610f91565b949350505050565b805160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec909101045b919050565b516042111590565b8051606090610be89083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9016110c7565b92915050565b60007f80000000000000000000000000000000000000000000000000000000000000008210610c1c57600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c6f57600080fd5b505afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611c71565b50939650610cbc94508d93506112ae92505050565b91975095509050610ce473ffffffffffffffffffffffffffffffffffffffff8916838361136f565b9350869250505093509350935093565b600081826014011015610d6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610ddb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610e6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610edb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b610eec611a00565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610f24579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000610f6d8383610f91565b90503373ffffffffffffffffffffffffffffffffffffffff821614610be857600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610fd357600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b60608182601f01101561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8282840110156111ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561121e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b60608215801561123d57604051915060008252602082016040526112a5565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561127657805183526020928301920161125e565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000806000835160601461134e57604484511015611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890611e85565b60405180910390fd5b6004840193508380602001905181019061131b9190611be5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f89190611e72565b838060200190518101906113629190611d08565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c357600080fd5b505afa1580156113d7573d6000803e3d6000fd5b505050506040513d60208110156113ed57600080fd5b5051600290810b908c900b816113ff57fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145257600080fd5b505afa158015611466573d6000803e3d6000fd5b505050506040513d602081101561147c57600080fd5b5051600290810b908d900b8161148e57fe5b0560020b8161149957fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d602081101561151057600080fd5b5051600290810b908d900b8161152257fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561157557600080fd5b505afa158015611589573d6000803e3d6000fd5b505050506040513d602081101561159f57600080fd5b5051600290810b908e900b816115b157fe5b0560020b816115bc57fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561161d57600080fd5b505afa158015611631573d6000803e3d6000fd5b505050506040513d602081101561164757600080fd5b5051161180156116da57508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561169857600080fd5b505afa1580156116ac573d6000803e3d6000fd5b505050506040513d60208110156116c257600080fd5b5051600290810b908d900b816116d457fe5b0760020b155b80156116eb57508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561174b57600080fd5b505afa15801561175f573d6000803e3d6000fd5b505050506040513d602081101561177557600080fd5b50511611801561180857508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156117c657600080fd5b505afa1580156117da573d6000803e3d6000fd5b505050506040513d60208110156117f057600080fd5b5051600290810b908e900b8161180257fe5b0760020b155b801561181957508b60020b8d60020b125b95508160010b8460010b128061184557508160010b8460010b14801561184557508060ff168360ff1611155b1561185b57839950829750819850809650611868565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b1361199f578560010b8760010b14156118d9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561193057600080fd5b505afa158015611944573d6000803e3d6000fd5b505050506040513d602081101561195a57600080fd5b5051169050611968816119c7565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611894565b81156119ac576001880397505b82156119b9576001880397505b505050505050509392505050565b6000805b8215610be8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301909216916001016119cb565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611a30578081fd5b8135611a43611a3e82611fbf565b611f9b565b818152846020838601011115611a57578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610ba657600080fd5b600060a08284031215611a94578081fd5b60405160a0810181811067ffffffffffffffff82111715611ab157fe5b6040529050808235611ac28161202f565b81526020830135611ad28161202f565b602082015260408381013590820152606083013562ffffff81168114611af757600080fd5b6060820152611b0860808401611b14565b60808201525092915050565b8035610ba68161202f565b805161ffff81168114610ba657600080fd5b60008060408385031215611b43578182fd5b823567ffffffffffffffff811115611b59578283fd5b611b6585828601611a20565b95602094909401359450505050565b60008060408385031215611b86578182fd5b505080516020909101519092909150565b600080600060608486031215611bab578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611bcf578182fd5b611bdb86828701611a20565b9150509250925092565b600060208284031215611bf6578081fd5b815167ffffffffffffffff811115611c0c578182fd5b8201601f81018413611c1c578182fd5b8051611c2a611a3e82611fbf565b818152856020838501011115611c3e578384fd5b610b35826020830160208601611fff565b600060a08284031215611c60578081fd5b611c6a8383611a83565b9392505050565b600080600080600080600060e0888a031215611c8b578283fd5b8751611c968161202f565b9650611ca460208901611a71565b9550611cb260408901611b1f565b9450611cc060608901611b1f565b9350611cce60808901611b1f565b925060a088015160ff81168114611ce3578283fd5b60c08901519092508015158114611cf8578182fd5b8091505092959891949750929550565b600080600060608486031215611d1c578081fd5b835192506020840151611d2e8161202f565b9150611d3c60408501611a71565b90509250925092565b60008151808452611d5d816020860160208601611fff565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528715156020840152866040840152808616606084015260c06080840152611e5c60c0840186611d45565b915080841660a084015250979650505050505050565b600060208252611c6a6020830184611d45565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611f1257845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611ee0565b505084810360408601528651808252908201925081870190845b81811015611f4e57825163ffffffff1685529383019391830191600101611f2c565b5050505060609290920192909252949350505050565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611fb757fe5b604052919050565b600067ffffffffffffffff821115611fd357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561201a578181015183820152602001612002565b83811115612029576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461205157600080fd5b5056fea164736f6c6343000706000a",
"linkReferences": {},
"deployedLinkReferences": {}
}