{
  "_format": "hh-sol-artifact-1",
  "contractName": "CryptoETFRouter",
  "sourceName": "contracts/CryptoETFRouter.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract CryptoETFOracle",
          "name": "_cryptoETFOracle",
          "type": "address"
        },
        {
          "internalType": "contract ISwapRouter",
          "name": "_router",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_weth",
          "type": "address"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "cryptoETFOracle",
      "outputs": [
        {
          "internalType": "contract CryptoETFOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "etfAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minAmountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "purchaseWithExactEth",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "etfAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minAmountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "redeemWithExactEth",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60c060405260405161213e38038061213e833981810160405281019061002591906101b4565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505050610207565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610105826100da565b9050919050565b6000610117826100fa565b9050919050565b6101278161010c565b811461013257600080fd5b50565b6000815190506101448161011e565b92915050565b6000610155826100fa565b9050919050565b6101658161014a565b811461017057600080fd5b50565b6000815190506101828161015c565b92915050565b610191816100fa565b811461019c57600080fd5b50565b6000815190506101ae81610188565b92915050565b6000806000606084860312156101cd576101cc6100d5565b5b60006101db86828701610135565b93505060206101ec86828701610173565b92505060406101fd8682870161019f565b9150509250925092565b60805160a051611eda610264600039600081816101d70152818161079c015281816108390152610d7501526000818161011a0152818161019b015281816103a2015281816104c10152818161089d0152610a080152611eda6000f3fe6080604052600436106100385760003560e01c80630e23711314610044578063126fb13814610074578063ddf808e31461009f5761003f565b3661003f57005b600080fd5b61005e60048036038101906100599190610f6c565b6100cf565b60405161006b9190610fe2565b60405180910390f35b34801561008057600080fd5b506100896105ab565b604051610096919061105c565b60405180910390f35b6100b960048036038101906100b49190611077565b6105cf565b6040516100c69190610fe2565b60405180910390f35b6000803411610113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010a9061114f565b60405180910390fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561018057600080fd5b505af1158015610194573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161021492919061117e565b6020604051808303816000875af1158015610233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025791906111df565b5060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dd8cc056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ea9190611221565b905060008773ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d9190611221565b11156104255760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635531ba5a887f0000000000000000000000000000000000000000000000000000000000000000600a6040518463ffffffff1660e01b81526004016103e193929190611299565b602060405180830381865afa1580156103fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104229190611221565b90505b8673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104949190611309565b600a6104a09190611498565b81346104ac9190611512565b6104b69190611543565b92506000806104e7897f00000000000000000000000000000000000000000000000000000000000000008689610ae4565b915091508873ffffffffffffffffffffffffffffffffffffffff166331feab29868a85856040518563ffffffff1660e01b815260040161052a9493929190611701565b600060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b505050508685101561059f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610596906117c6565b60405180910390fd5b50505050949350505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808511610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060a90611858565b60405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106849190611221565b9050600081116106c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c0906118c4565b60405180910390fd5b6000808873ffffffffffffffffffffffffffffffffffffffff1663fcd3533c89336040518363ffffffff1660e01b81526004016107079291906118e4565b6000604051808303816000875af1158015610726573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061074f9190611b3e565b9150915060005b82518110156109c257600083828151811061077457610773611bb6565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000008585815181106107ce576107cd611bb6565b5b60200260200101516040518363ffffffff1660e01b81526004016107f392919061117e565b6020604051808303816000875af1158015610812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083691906111df565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf3896040518061010001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200186868151811061091957610918611bb6565b5b6020026020010151815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016109649190611cb4565b6020604051808303816000875af1158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611221565b866109b29190611cd0565b9550508080600101915050610756565b5085841015610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd906117c6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff1660e01b8152600401610a5f9190610fe2565b600060405180830381600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610ad7573d6000803e3d6000fd5b5050505095945050505050565b6060806000808773ffffffffffffffffffffffffffffffffffffffff1663f7da71116040518163ffffffff1660e01b8152600401600060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b5e9190611e48565b91509150815167ffffffffffffffff811115610b7d57610b7c611923565b5b604051908082528060200260200182016040528015610bab5781602001602082028036833780820191505090505b509350815167ffffffffffffffff811115610bc957610bc8611923565b5b604051908082528060200260200182016040528015610bf75781602001602082028036833780820191505090505b50925060005b8251811015610d65576000838281518110610c1b57610c1a611bb6565b5b602002602001015160000151905060008362ffffff16858481518110610c4457610c43611bb6565b5b60200260200101516020015162ffffff168a610c609190611543565b610c6a9190611512565b905060006040518060a001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018a81526020018d73ffffffffffffffffffffffffffffffffffffffff1681525090506000610ce482610d71565b905083898681518110610cfa57610cf9611bb6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080888681518110610d4857610d47611bb6565b5b602002602001018181525050505050508080600101915050610bfd565b50505094509492505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001856020015173ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff168152602001856080015173ffffffffffffffffffffffffffffffffffffffff168152602001856060015181526020018560400151815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401610e7a9190611cb4565b6020604051808303816000875af1158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190611221565b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f0382610ed8565b9050919050565b610f1381610ef8565b8114610f1e57600080fd5b50565b600081359050610f3081610f0a565b92915050565b6000819050919050565b610f4981610f36565b8114610f5457600080fd5b50565b600081359050610f6681610f40565b92915050565b60008060008060808587031215610f8657610f85610ece565b5b6000610f9487828801610f21565b9450506020610fa587828801610f21565b9350506040610fb687828801610f57565b9250506060610fc787828801610f57565b91505092959194509250565b610fdc81610f36565b82525050565b6000602082019050610ff76000830184610fd3565b92915050565b6000819050919050565b600061102261101d61101884610ed8565b610ffd565b610ed8565b9050919050565b600061103482611007565b9050919050565b600061104682611029565b9050919050565b6110568161103b565b82525050565b6000602082019050611071600083018461104d565b92915050565b600080600080600060a0868803121561109357611092610ece565b5b60006110a188828901610f21565b95505060206110b288828901610f57565b94505060406110c388828901610f21565b93505060606110d488828901610f57565b92505060806110e588828901610f57565b9150509295509295909350565b600082825260208201905092915050565b7f6e6565642073656e642065746800000000000000000000000000000000000000600082015250565b6000611139600d836110f2565b915061114482611103565b602082019050919050565b600060208201905081810360008301526111688161112c565b9050919050565b61117881610ef8565b82525050565b6000604082019050611193600083018561116f565b6111a06020830184610fd3565b9392505050565b60008115159050919050565b6111bc816111a7565b81146111c757600080fd5b50565b6000815190506111d9816111b3565b92915050565b6000602082840312156111f5576111f4610ece565b5b6000611203848285016111ca565b91505092915050565b60008151905061121b81610f40565b92915050565b60006020828403121561123757611236610ece565b5b60006112458482850161120c565b91505092915050565b6000819050919050565b600063ffffffff82169050919050565b600061128361127e6112798461124e565b610ffd565b611258565b9050919050565b61129381611268565b82525050565b60006060820190506112ae600083018661116f565b6112bb602083018561116f565b6112c8604083018461128a565b949350505050565b600060ff82169050919050565b6112e6816112d0565b81146112f157600080fd5b50565b600081519050611303816112dd565b92915050565b60006020828403121561131f5761131e610ece565b5b600061132d848285016112f4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156113bc5780860481111561139857611397611336565b5b60018516156113a75780820291505b80810290506113b585611365565b945061137c565b94509492505050565b6000826113d55760019050611491565b816113e35760009050611491565b81600181146113f9576002811461140357611432565b6001915050611491565b60ff84111561141557611414611336565b5b8360020a91508482111561142c5761142b611336565b5b50611491565b5060208310610133831016604e8410600b84101617156114675782820a90508381111561146257611461611336565b5b611491565b6114748484846001611372565b9250905081840481111561148b5761148a611336565b5b81810290505b9392505050565b60006114a382610f36565b91506114ae836112d0565b92506114db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846113c5565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061151d82610f36565b915061152883610f36565b925082611538576115376114e3565b5b828204905092915050565b600061154e82610f36565b915061155983610f36565b925082820261156781610f36565b9150828204841483151761157e5761157d611336565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6115ba81610ef8565b82525050565b60006115cc83836115b1565b60208301905092915050565b6000602082019050919050565b60006115f082611585565b6115fa8185611590565b9350611605836115a1565b8060005b8381101561163657815161161d88826115c0565b9750611628836115d8565b925050600181019050611609565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61167881610f36565b82525050565b600061168a838361166f565b60208301905092915050565b6000602082019050919050565b60006116ae82611643565b6116b8818561164e565b93506116c38361165f565b8060005b838110156116f45781516116db888261167e565b97506116e683611696565b9250506001810190506116c7565b5085935050505092915050565b60006080820190506117166000830187610fd3565b611723602083018661116f565b818103604083015261173581856115e5565b9050818103606083015261174981846116a3565b905095945050505050565b7f616d6f756e744f7574206973206c657373207468616e206d696e416d6f756e7460008201527f4f75740000000000000000000000000000000000000000000000000000000000602082015250565b60006117b06023836110f2565b91506117bb82611754565b604082019050919050565b600060208201905081810360008301526117df816117a3565b9050919050565b7f72656465656d20616d6f756e74206e6565642067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b60006118426024836110f2565b915061184d826117e6565b604082019050919050565b6000602082019050818103600083015261187181611835565b9050919050565b7f6e6f20656e6f756768206574662063616e2062652072656465656d6564000000600082015250565b60006118ae601d836110f2565b91506118b982611878565b602082019050919050565b600060208201905081810360008301526118dd816118a1565b9050919050565b60006040820190506118f96000830185610fd3565b611906602083018461116f565b9392505050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61195b82611912565b810181811067ffffffffffffffff8211171561197a57611979611923565b5b80604052505050565b600061198d610ec4565b90506119998282611952565b919050565b600067ffffffffffffffff8211156119b9576119b8611923565b5b602082029050602081019050919050565b600080fd5b6000815190506119de81610f0a565b92915050565b60006119f76119f28461199e565b611983565b90508083825260208201905060208402830185811115611a1a57611a196119ca565b5b835b81811015611a435780611a2f88826119cf565b845260208401935050602081019050611a1c565b5050509392505050565b600082601f830112611a6257611a6161190d565b5b8151611a728482602086016119e4565b91505092915050565b600067ffffffffffffffff821115611a9657611a95611923565b5b602082029050602081019050919050565b6000611aba611ab584611a7b565b611983565b90508083825260208201905060208402830185811115611add57611adc6119ca565b5b835b81811015611b065780611af2888261120c565b845260208401935050602081019050611adf565b5050509392505050565b600082601f830112611b2557611b2461190d565b5b8151611b35848260208601611aa7565b91505092915050565b60008060408385031215611b5557611b54610ece565b5b600083015167ffffffffffffffff811115611b7357611b72610ed3565b5b611b7f85828601611a4d565b925050602083015167ffffffffffffffff811115611ba057611b9f610ed3565b5b611bac85828601611b10565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600062ffffff82169050919050565b611bfd81611be5565b82525050565b611c0c81610ed8565b82525050565b61010082016000820151611c2960008501826115b1565b506020820151611c3c60208501826115b1565b506040820151611c4f6040850182611bf4565b506060820151611c6260608501826115b1565b506080820151611c75608085018261166f565b5060a0820151611c8860a085018261166f565b5060c0820151611c9b60c085018261166f565b5060e0820151611cae60e0850182611c03565b50505050565b600061010082019050611cca6000830184611c12565b92915050565b6000611cdb82610f36565b9150611ce683610f36565b9250828201905080821115611cfe57611cfd611336565b5b92915050565b600067ffffffffffffffff821115611d1f57611d1e611923565b5b602082029050602081019050919050565b600080fd5b611d3e81611be5565b8114611d4957600080fd5b50565b600081519050611d5b81611d35565b92915050565b600060408284031215611d7757611d76611d30565b5b611d816040611983565b90506000611d91848285016119cf565b6000830152506020611da584828501611d4c565b60208301525092915050565b6000611dc4611dbf84611d04565b611983565b90508083825260208201905060408402830185811115611de757611de66119ca565b5b835b81811015611e105780611dfc8882611d61565b845260208401935050604081019050611de9565b5050509392505050565b600082601f830112611e2f57611e2e61190d565b5b8151611e3f848260208601611db1565b91505092915050565b60008060408385031215611e5f57611e5e610ece565b5b600083015167ffffffffffffffff811115611e7d57611e7c610ed3565b5b611e8985828601611e1a565b9250506020611e9a85828601611d4c565b915050925092905056fea26469706673582212201859f6a14d4986657dea6785f4ab6e1bc10e301a78a5f96ac908b3b2ffbb801464736f6c634300081c0033",
  "deployedBytecode": "0x6080604052600436106100385760003560e01c80630e23711314610044578063126fb13814610074578063ddf808e31461009f5761003f565b3661003f57005b600080fd5b61005e60048036038101906100599190610f6c565b6100cf565b60405161006b9190610fe2565b60405180910390f35b34801561008057600080fd5b506100896105ab565b604051610096919061105c565b60405180910390f35b6100b960048036038101906100b49190611077565b6105cf565b6040516100c69190610fe2565b60405180910390f35b6000803411610113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010a9061114f565b60405180910390fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561018057600080fd5b505af1158015610194573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161021492919061117e565b6020604051808303816000875af1158015610233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025791906111df565b5060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631dd8cc056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ea9190611221565b905060008773ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d9190611221565b11156104255760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635531ba5a887f0000000000000000000000000000000000000000000000000000000000000000600a6040518463ffffffff1660e01b81526004016103e193929190611299565b602060405180830381865afa1580156103fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104229190611221565b90505b8673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104949190611309565b600a6104a09190611498565b81346104ac9190611512565b6104b69190611543565b92506000806104e7897f00000000000000000000000000000000000000000000000000000000000000008689610ae4565b915091508873ffffffffffffffffffffffffffffffffffffffff166331feab29868a85856040518563ffffffff1660e01b815260040161052a9493929190611701565b600060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b505050508685101561059f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610596906117c6565b60405180910390fd5b50505050949350505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808511610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060a90611858565b60405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106849190611221565b9050600081116106c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c0906118c4565b60405180910390fd5b6000808873ffffffffffffffffffffffffffffffffffffffff1663fcd3533c89336040518363ffffffff1660e01b81526004016107079291906118e4565b6000604051808303816000875af1158015610726573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061074f9190611b3e565b9150915060005b82518110156109c257600083828151811061077457610773611bb6565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000008585815181106107ce576107cd611bb6565b5b60200260200101516040518363ffffffff1660e01b81526004016107f392919061117e565b6020604051808303816000875af1158015610812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083691906111df565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf3896040518061010001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200186868151811061091957610918611bb6565b5b6020026020010151815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016109649190611cb4565b6020604051808303816000875af1158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611221565b866109b29190611cd0565b9550508080600101915050610756565b5085841015610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd906117c6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff1660e01b8152600401610a5f9190610fe2565b600060405180830381600087803b158015610a7957600080fd5b505af1158015610a8d573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610ad7573d6000803e3d6000fd5b5050505095945050505050565b6060806000808773ffffffffffffffffffffffffffffffffffffffff1663f7da71116040518163ffffffff1660e01b8152600401600060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b5e9190611e48565b91509150815167ffffffffffffffff811115610b7d57610b7c611923565b5b604051908082528060200260200182016040528015610bab5781602001602082028036833780820191505090505b509350815167ffffffffffffffff811115610bc957610bc8611923565b5b604051908082528060200260200182016040528015610bf75781602001602082028036833780820191505090505b50925060005b8251811015610d65576000838281518110610c1b57610c1a611bb6565b5b602002602001015160000151905060008362ffffff16858481518110610c4457610c43611bb6565b5b60200260200101516020015162ffffff168a610c609190611543565b610c6a9190611512565b905060006040518060a001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018a81526020018d73ffffffffffffffffffffffffffffffffffffffff1681525090506000610ce482610d71565b905083898681518110610cfa57610cf9611bb6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080888681518110610d4857610d47611bb6565b5b602002602001018181525050505050508080600101915050610bfd565b50505094509492505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001856020015173ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff168152602001856080015173ffffffffffffffffffffffffffffffffffffffff168152602001856060015181526020018560400151815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401610e7a9190611cb4565b6020604051808303816000875af1158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190611221565b9050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f0382610ed8565b9050919050565b610f1381610ef8565b8114610f1e57600080fd5b50565b600081359050610f3081610f0a565b92915050565b6000819050919050565b610f4981610f36565b8114610f5457600080fd5b50565b600081359050610f6681610f40565b92915050565b60008060008060808587031215610f8657610f85610ece565b5b6000610f9487828801610f21565b9450506020610fa587828801610f21565b9350506040610fb687828801610f57565b9250506060610fc787828801610f57565b91505092959194509250565b610fdc81610f36565b82525050565b6000602082019050610ff76000830184610fd3565b92915050565b6000819050919050565b600061102261101d61101884610ed8565b610ffd565b610ed8565b9050919050565b600061103482611007565b9050919050565b600061104682611029565b9050919050565b6110568161103b565b82525050565b6000602082019050611071600083018461104d565b92915050565b600080600080600060a0868803121561109357611092610ece565b5b60006110a188828901610f21565b95505060206110b288828901610f57565b94505060406110c388828901610f21565b93505060606110d488828901610f57565b92505060806110e588828901610f57565b9150509295509295909350565b600082825260208201905092915050565b7f6e6565642073656e642065746800000000000000000000000000000000000000600082015250565b6000611139600d836110f2565b915061114482611103565b602082019050919050565b600060208201905081810360008301526111688161112c565b9050919050565b61117881610ef8565b82525050565b6000604082019050611193600083018561116f565b6111a06020830184610fd3565b9392505050565b60008115159050919050565b6111bc816111a7565b81146111c757600080fd5b50565b6000815190506111d9816111b3565b92915050565b6000602082840312156111f5576111f4610ece565b5b6000611203848285016111ca565b91505092915050565b60008151905061121b81610f40565b92915050565b60006020828403121561123757611236610ece565b5b60006112458482850161120c565b91505092915050565b6000819050919050565b600063ffffffff82169050919050565b600061128361127e6112798461124e565b610ffd565b611258565b9050919050565b61129381611268565b82525050565b60006060820190506112ae600083018661116f565b6112bb602083018561116f565b6112c8604083018461128a565b949350505050565b600060ff82169050919050565b6112e6816112d0565b81146112f157600080fd5b50565b600081519050611303816112dd565b92915050565b60006020828403121561131f5761131e610ece565b5b600061132d848285016112f4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156113bc5780860481111561139857611397611336565b5b60018516156113a75780820291505b80810290506113b585611365565b945061137c565b94509492505050565b6000826113d55760019050611491565b816113e35760009050611491565b81600181146113f9576002811461140357611432565b6001915050611491565b60ff84111561141557611414611336565b5b8360020a91508482111561142c5761142b611336565b5b50611491565b5060208310610133831016604e8410600b84101617156114675782820a90508381111561146257611461611336565b5b611491565b6114748484846001611372565b9250905081840481111561148b5761148a611336565b5b81810290505b9392505050565b60006114a382610f36565b91506114ae836112d0565b92506114db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846113c5565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061151d82610f36565b915061152883610f36565b925082611538576115376114e3565b5b828204905092915050565b600061154e82610f36565b915061155983610f36565b925082820261156781610f36565b9150828204841483151761157e5761157d611336565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6115ba81610ef8565b82525050565b60006115cc83836115b1565b60208301905092915050565b6000602082019050919050565b60006115f082611585565b6115fa8185611590565b9350611605836115a1565b8060005b8381101561163657815161161d88826115c0565b9750611628836115d8565b925050600181019050611609565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61167881610f36565b82525050565b600061168a838361166f565b60208301905092915050565b6000602082019050919050565b60006116ae82611643565b6116b8818561164e565b93506116c38361165f565b8060005b838110156116f45781516116db888261167e565b97506116e683611696565b9250506001810190506116c7565b5085935050505092915050565b60006080820190506117166000830187610fd3565b611723602083018661116f565b818103604083015261173581856115e5565b9050818103606083015261174981846116a3565b905095945050505050565b7f616d6f756e744f7574206973206c657373207468616e206d696e416d6f756e7460008201527f4f75740000000000000000000000000000000000000000000000000000000000602082015250565b60006117b06023836110f2565b91506117bb82611754565b604082019050919050565b600060208201905081810360008301526117df816117a3565b9050919050565b7f72656465656d20616d6f756e74206e6565642067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b60006118426024836110f2565b915061184d826117e6565b604082019050919050565b6000602082019050818103600083015261187181611835565b9050919050565b7f6e6f20656e6f756768206574662063616e2062652072656465656d6564000000600082015250565b60006118ae601d836110f2565b91506118b982611878565b602082019050919050565b600060208201905081810360008301526118dd816118a1565b9050919050565b60006040820190506118f96000830185610fd3565b611906602083018461116f565b9392505050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61195b82611912565b810181811067ffffffffffffffff8211171561197a57611979611923565b5b80604052505050565b600061198d610ec4565b90506119998282611952565b919050565b600067ffffffffffffffff8211156119b9576119b8611923565b5b602082029050602081019050919050565b600080fd5b6000815190506119de81610f0a565b92915050565b60006119f76119f28461199e565b611983565b90508083825260208201905060208402830185811115611a1a57611a196119ca565b5b835b81811015611a435780611a2f88826119cf565b845260208401935050602081019050611a1c565b5050509392505050565b600082601f830112611a6257611a6161190d565b5b8151611a728482602086016119e4565b91505092915050565b600067ffffffffffffffff821115611a9657611a95611923565b5b602082029050602081019050919050565b6000611aba611ab584611a7b565b611983565b90508083825260208201905060208402830185811115611add57611adc6119ca565b5b835b81811015611b065780611af2888261120c565b845260208401935050602081019050611adf565b5050509392505050565b600082601f830112611b2557611b2461190d565b5b8151611b35848260208601611aa7565b91505092915050565b60008060408385031215611b5557611b54610ece565b5b600083015167ffffffffffffffff811115611b7357611b72610ed3565b5b611b7f85828601611a4d565b925050602083015167ffffffffffffffff811115611ba057611b9f610ed3565b5b611bac85828601611b10565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600062ffffff82169050919050565b611bfd81611be5565b82525050565b611c0c81610ed8565b82525050565b61010082016000820151611c2960008501826115b1565b506020820151611c3c60208501826115b1565b506040820151611c4f6040850182611bf4565b506060820151611c6260608501826115b1565b506080820151611c75608085018261166f565b5060a0820151611c8860a085018261166f565b5060c0820151611c9b60c085018261166f565b5060e0820151611cae60e0850182611c03565b50505050565b600061010082019050611cca6000830184611c12565b92915050565b6000611cdb82610f36565b9150611ce683610f36565b9250828201905080821115611cfe57611cfd611336565b5b92915050565b600067ffffffffffffffff821115611d1f57611d1e611923565b5b602082029050602081019050919050565b600080fd5b611d3e81611be5565b8114611d4957600080fd5b50565b600081519050611d5b81611d35565b92915050565b600060408284031215611d7757611d76611d30565b5b611d816040611983565b90506000611d91848285016119cf565b6000830152506020611da584828501611d4c565b60208301525092915050565b6000611dc4611dbf84611d04565b611983565b90508083825260208201905060408402830185811115611de757611de66119ca565b5b835b81811015611e105780611dfc8882611d61565b845260208401935050604081019050611de9565b5050509392505050565b600082601f830112611e2f57611e2e61190d565b5b8151611e3f848260208601611db1565b91505092915050565b60008060408385031215611e5f57611e5e610ece565b5b600083015167ffffffffffffffff811115611e7d57611e7c610ed3565b5b611e8985828601611e1a565b9250506020611e9a85828601611d4c565b915050925092905056fea26469706673582212201859f6a14d4986657dea6785f4ab6e1bc10e301a78a5f96ac908b3b2ffbb801464736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
