{
  "_format": "hh-sol-artifact-1",
  "contractName": "SwapToAnyToken",
  "sourceName": "contracts/SwapToAnyToken.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "systemContractAddress",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "CantBeIdenticalAddresses",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CantBeZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OffsetOutOfBounds",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "OnlySystemContract",
      "type": "error"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "origin",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "chainID",
              "type": "uint256"
            }
          ],
          "internalType": "struct zContext",
          "name": "context",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "zrc20",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "message",
          "type": "bytes"
        }
      ],
      "name": "onCrossChainCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "inputToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "targetToken",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "recipient",
          "type": "bytes"
        },
        {
          "internalType": "bool",
          "name": "withdraw",
          "type": "bool"
        }
      ],
      "name": "swap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "systemContract",
      "outputs": [
        {
          "internalType": "contract SystemContract",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200262a3803806200262a833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200011a565b6000815190506200008f8162000100565b92915050565b600060208284031215620000ae57620000ad620000fb565b5b6000620000be848285016200007e565b91505092915050565b6000620000d482620000db565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200010b81620000c7565b81146200011757600080fd5b50565b612500806200012a6000396000f3fe6080604052600436106100385760003560e01c806374718c5814610044578063bb88b7691461006d578063de43156e146100985761003f565b3661003f57005b600080fd5b34801561005057600080fd5b5061006b600480360381019061006691906119f9565b6100c1565b005b34801561007957600080fd5b50610082610165565b60405161008f9190611e8d565b60405180910390f35b3480156100a457600080fd5b506100bf60048036038101906100ba9190611b06565b610189565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016100fe93929190611dfd565b602060405180830381600087803b15801561011857600080fd5b505af115801561012c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101509190611ad9565b5061015e85858585856103a1565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610218576040517f14c6658d00000000000000000000000000000000000000000000000000000000815260040161020f90611ea8565b60405180910390fd5b60006040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815260200160011515815250905061479c876040013514156103105761027a8484600061081e565b816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102bd8484601461081e565b6040516020016102cd9190611d59565b60405160208183030381529060405281602001819052506029848490501061030b576102fb84846028610893565b8160400190151590811515815250505b61037f565b60008060008686810190610324919061194a565b92509250925082846000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818460200181905250808460400190151590811515815250505050505b61039886868360000151846020015185604001516103a1565b50505050505050565b6000806000808415610462578673ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b1580156103f257600080fd5b505afa158015610406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042a91906119b9565b809250819350505061045f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a83858c610901565b92505b6104a760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a87610492578a61049f565b858b61049e91906120d1565b5b8a6000610e9a565b935084156105d0578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b388836040518363ffffffff1660e01b81526004016104ea929190611e34565b602060405180830381600087803b15801561050457600080fd5b505af1158015610518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053c9190611ad9565b508673ffffffffffffffffffffffffffffffffffffffff1663c701262687866040518363ffffffff1660e01b8152600401610578929190611e5d565b602060405180830381600087803b15801561059257600080fd5b505af11580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190611ad9565b50610813565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663569541b96040518163ffffffff1660e01b815260040160206040518083038186803b15801561063957600080fd5b505afa15801561064d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610671919061191d565b90508073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610770578073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016106e09190611ec8565b600060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505060008761071e90612195565b60601c90508073ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015610769573d6000803e3d6000fd5b5050610811565b60008761077c90612195565b60601c90508873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82886040518363ffffffff1660e01b81526004016107bc929190611e34565b602060405180830381600087803b1580156107d657600080fd5b505af11580156107ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080e9190611ad9565b50505b505b505050505050505050565b60008084848490601486610832919061207b565b9261083f93929190612040565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060148101519150509392505050565b60008383905082106108d1576040517f9605a01000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484848181106108e6576108e5612302565b5b9050013560f81c60f81b60f81c60ff16141590509392505050565b60008061098c8773ffffffffffffffffffffffffffffffffffffffff1663d936a0126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094d57600080fd5b505afa158015610961573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610985919061191d565b878661143f565b905060608115610a8557600267ffffffffffffffff8111156109b1576109b0612331565b5b6040519080825280602002602001820160405280156109df5781602001602082028036833780820191505090505b50905086816000815181106109f7576109f6612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110610a4657610a45612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610c3c565b600367ffffffffffffffff811115610aa057610a9f612331565b5b604051908082528060200260200182016040528015610ace5781602001602082028036833780820191505090505b5090508681600081518110610ae657610ae5612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508773ffffffffffffffffffffffffffffffffffffffff1663569541b96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6657600080fd5b505afa158015610b7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9e919061191d565b81600181518110610bb257610bb1612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600281518110610c0157610c00612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38973ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9e57600080fd5b505afa158015610cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd6919061191d565b866040518363ffffffff1660e01b8152600401610cf4929190611e34565b602060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d469190611ad9565b5060008873ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc7919061191d565b73ffffffffffffffffffffffffffffffffffffffff16638803dbee8887853060c861ffff1642610df7919061207b565b6040518663ffffffff1660e01b8152600401610e17959493929190611ee3565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e6e9190611a90565b905080600081518110610e8457610e83612302565b5b6020026020010151935050505095945050505050565b600080610f258773ffffffffffffffffffffffffffffffffffffffff1663d936a0126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee657600080fd5b505afa158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e919061191d565b878661143f565b90506060811561101e57600267ffffffffffffffff811115610f4a57610f49612331565b5b604051908082528060200260200182016040528015610f785781602001602082028036833780820191505090505b5090508681600081518110610f9057610f8f612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110610fdf57610fde612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506111d5565b600367ffffffffffffffff81111561103957611038612331565b5b6040519080825280602002602001820160405280156110675781602001602082028036833780820191505090505b509050868160008151811061107f5761107e612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508773ffffffffffffffffffffffffffffffffffffffff1663569541b96040518163ffffffff1660e01b815260040160206040518083038186803b1580156110ff57600080fd5b505afa158015611113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611137919061191d565b8160018151811061114b5761114a612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050848160028151811061119a57611199612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38973ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f919061191d565b886040518363ffffffff1660e01b815260040161128d929190611e34565b602060405180830381600087803b1580156112a757600080fd5b505af11580156112bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112df9190611ad9565b5060008873ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561132857600080fd5b505afa15801561133c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611360919061191d565b73ffffffffffffffffffffffffffffffffffffffff166338ed17398887853060c861ffff1642611390919061207b565b6040518663ffffffff1660e01b81526004016113b0959493929190611ee3565b600060405180830381600087803b1580156113ca57600080fd5b505af11580156113de573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114079190611a90565b9050806001835161141891906120d1565b8151811061142957611428612302565b5b6020026020010151935050505095945050505050565b60008061144d858585611579565b905060008473ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161148a9190611de2565b60206040518083038186803b1580156114a257600080fd5b505afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190611baa565b11801561156f575060008373ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161151d9190611de2565b60206040518083038186803b15801561153557600080fd5b505afa158015611549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156d9190611baa565b115b9150509392505050565b600080600061158885856115eb565b915091508582826040516020016115a0929190611d74565b604051602081830303815290604052805190602001206040516020016115c7929190611da0565b6040516020818303038152906040528051906020012060001c925050509392505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611654576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061168e578284611691565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611700576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600061171a61171584611f62565b611f3d565b9050808382526020820190508285602086028201111561173d5761173c61238e565b5b60005b8581101561176d57816117538882611908565b845260208401935060208301925050600181019050611740565b5050509392505050565b600061178a61178584611f8e565b611f3d565b9050828152602081018484840111156117a6576117a5612393565b5b6117b1848285612232565b509392505050565b6000813590506117c88161246e565b92915050565b6000815190506117dd8161246e565b92915050565b6000813590506117f281612485565b92915050565b600082601f83011261180d5761180c61237a565b5b815161181d848260208601611707565b91505092915050565b6000813590506118358161249c565b92915050565b60008151905061184a8161249c565b92915050565b60008083601f8401126118665761186561237a565b5b8235905067ffffffffffffffff81111561188357611882612375565b5b60208301915083600182028301111561189f5761189e61238e565b5b9250929050565b600082601f8301126118bb576118ba61237a565b5b81356118cb848260208601611777565b91505092915050565b6000606082840312156118ea576118e961237f565b5b81905092915050565b600081359050611902816124b3565b92915050565b600081519050611917816124b3565b92915050565b6000602082840312156119335761193261239d565b5b6000611941848285016117ce565b91505092915050565b6000806000606084860312156119635761196261239d565b5b6000611971868287016117e3565b935050602084013567ffffffffffffffff81111561199257611991612398565b5b61199e868287016118a6565b92505060406119af86828701611826565b9150509250925092565b600080604083850312156119d0576119cf61239d565b5b60006119de858286016117ce565b92505060206119ef85828601611908565b9150509250929050565b600080600080600060a08688031215611a1557611a1461239d565b5b6000611a23888289016117b9565b9550506020611a34888289016118f3565b9450506040611a45888289016117b9565b935050606086013567ffffffffffffffff811115611a6657611a65612398565b5b611a72888289016118a6565b9250506080611a8388828901611826565b9150509295509295909350565b600060208284031215611aa657611aa561239d565b5b600082015167ffffffffffffffff811115611ac457611ac3612398565b5b611ad0848285016117f8565b91505092915050565b600060208284031215611aef57611aee61239d565b5b6000611afd8482850161183b565b91505092915050565b600080600080600060808688031215611b2257611b2161239d565b5b600086013567ffffffffffffffff811115611b4057611b3f612398565b5b611b4c888289016118d4565b9550506020611b5d888289016117b9565b9450506040611b6e888289016118f3565b935050606086013567ffffffffffffffff811115611b8f57611b8e612398565b5b611b9b88828901611850565b92509250509295509295909350565b600060208284031215611bc057611bbf61239d565b5b6000611bce84828501611908565b91505092915050565b6000611be38383611bef565b60208301905092915050565b611bf881612105565b82525050565b611c0781612105565b82525050565b611c1e611c1982612105565b6122a5565b82525050565b6000611c2f82611fdf565b611c398185612002565b9350611c4483611fbf565b8060005b83811015611c75578151611c5c8882611bd7565b9750611c6783611ff5565b925050600181019050611c48565b5085935050505092915050565b611c93611c8e82612161565b6122b7565b82525050565b6000611ca482611fea565b611cae8185612013565b9350611cbe818560208601612241565b611cc7816123a2565b840191505092915050565b611cdb816121fc565b82525050565b6000611cee602b83612024565b9150611cf9826123cd565b604082019050919050565b6000611d11602083612035565b9150611d1c8261241c565b602082019050919050565b6000611d34600183612035565b9150611d3f82612445565b600182019050919050565b611d538161218b565b82525050565b6000611d658284611c0d565b60148201915081905092915050565b6000611d808285611c0d565b601482019150611d908284611c0d565b6014820191508190509392505050565b6000611dab82611d27565b9150611db78285611c0d565b601482019150611dc78284611c82565b602082019150611dd682611d04565b91508190509392505050565b6000602082019050611df76000830184611bfe565b92915050565b6000606082019050611e126000830186611bfe565b611e1f6020830185611bfe565b611e2c6040830184611d4a565b949350505050565b6000604082019050611e496000830185611bfe565b611e566020830184611d4a565b9392505050565b60006040820190508181036000830152611e778185611c99565b9050611e866020830184611d4a565b9392505050565b6000602082019050611ea26000830184611cd2565b92915050565b60006020820190508181036000830152611ec181611ce1565b9050919050565b6000602082019050611edd6000830184611d4a565b92915050565b600060a082019050611ef86000830188611d4a565b611f056020830187611d4a565b8181036040830152611f178186611c24565b9050611f266060830185611bfe565b611f336080830184611d4a565b9695505050505050565b6000611f47611f58565b9050611f538282612274565b919050565b6000604051905090565b600067ffffffffffffffff821115611f7d57611f7c612331565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611fa957611fa8612331565b5b611fb2826123a2565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000808585111561205457612053612389565b5b8386111561206557612064612384565b5b6001850283019150848603905094509492505050565b60006120868261218b565b91506120918361218b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156120c6576120c56122d3565b5b828201905092915050565b60006120dc8261218b565b91506120e78361218b565b9250828210156120fa576120f96122d3565b5b828203905092915050565b60006121108261216b565b9050919050565b60006121228261216b565b9050919050565b60008115159050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006121a082611fea565b826121aa84611fcf565b90506121b581612360565b925060148210156121f5576121f07fffffffffffffffffffffffffffffffffffffffff000000000000000000000000836014036008026123c0565b831692505b5050919050565b60006122078261220e565b9050919050565b600061221982612220565b9050919050565b600061222b8261216b565b9050919050565b82818337600083830152505050565b60005b8381101561225f578082015181840152602081019050612244565b8381111561226e576000848401525b50505050565b61227d826123a2565b810181811067ffffffffffffffff8211171561229c5761229b612331565b5b80604052505050565b60006122b0826122c1565b9050919050565b6000819050919050565b60006122cc826123b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061236c8251612135565b80915050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600082821b905092915050565b7f4f6e6c792073797374656d20636f6e74726163742063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b61247781612105565b811461248257600080fd5b50565b61248e81612117565b811461249957600080fd5b50565b6124a581612129565b81146124b057600080fd5b50565b6124bc8161218b565b81146124c757600080fd5b5056fea26469706673582212203c781539b7c12f169a29a309c8e44f90edfd9e9695cd21c3762d33e0b266d21c64736f6c63430008070033",
  "deployedBytecode": "0x6080604052600436106100385760003560e01c806374718c5814610044578063bb88b7691461006d578063de43156e146100985761003f565b3661003f57005b600080fd5b34801561005057600080fd5b5061006b600480360381019061006691906119f9565b6100c1565b005b34801561007957600080fd5b50610082610165565b60405161008f9190611e8d565b60405180910390f35b3480156100a457600080fd5b506100bf60048036038101906100ba9190611b06565b610189565b005b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016100fe93929190611dfd565b602060405180830381600087803b15801561011857600080fd5b505af115801561012c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101509190611ad9565b5061015e85858585856103a1565b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610218576040517f14c6658d00000000000000000000000000000000000000000000000000000000815260040161020f90611ea8565b60405180910390fd5b60006040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815260200160011515815250905061479c876040013514156103105761027a8484600061081e565b816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102bd8484601461081e565b6040516020016102cd9190611d59565b60405160208183030381529060405281602001819052506029848490501061030b576102fb84846028610893565b8160400190151590811515815250505b61037f565b60008060008686810190610324919061194a565b92509250925082846000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818460200181905250808460400190151590811515815250505050505b61039886868360000151846020015185604001516103a1565b50505050505050565b6000806000808415610462578673ffffffffffffffffffffffffffffffffffffffff1663d9eeebed6040518163ffffffff1660e01b8152600401604080518083038186803b1580156103f257600080fd5b505afa158015610406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042a91906119b9565b809250819350505061045f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a83858c610901565b92505b6104a760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a87610492578a61049f565b858b61049e91906120d1565b5b8a6000610e9a565b935084156105d0578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b388836040518363ffffffff1660e01b81526004016104ea929190611e34565b602060405180830381600087803b15801561050457600080fd5b505af1158015610518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053c9190611ad9565b508673ffffffffffffffffffffffffffffffffffffffff1663c701262687866040518363ffffffff1660e01b8152600401610578929190611e5d565b602060405180830381600087803b15801561059257600080fd5b505af11580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190611ad9565b50610813565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663569541b96040518163ffffffff1660e01b815260040160206040518083038186803b15801561063957600080fd5b505afa15801561064d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610671919061191d565b90508073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610770578073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d866040518263ffffffff1660e01b81526004016106e09190611ec8565b600060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b5050505060008761071e90612195565b60601c90508073ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f19350505050158015610769573d6000803e3d6000fd5b5050610811565b60008761077c90612195565b60601c90508873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82886040518363ffffffff1660e01b81526004016107bc929190611e34565b602060405180830381600087803b1580156107d657600080fd5b505af11580156107ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080e9190611ad9565b50505b505b505050505050505050565b60008084848490601486610832919061207b565b9261083f93929190612040565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060148101519150509392505050565b60008383905082106108d1576040517f9605a01000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484848181106108e6576108e5612302565b5b9050013560f81c60f81b60f81c60ff16141590509392505050565b60008061098c8773ffffffffffffffffffffffffffffffffffffffff1663d936a0126040518163ffffffff1660e01b815260040160206040518083038186803b15801561094d57600080fd5b505afa158015610961573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610985919061191d565b878661143f565b905060608115610a8557600267ffffffffffffffff8111156109b1576109b0612331565b5b6040519080825280602002602001820160405280156109df5781602001602082028036833780820191505090505b50905086816000815181106109f7576109f6612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110610a4657610a45612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610c3c565b600367ffffffffffffffff811115610aa057610a9f612331565b5b604051908082528060200260200182016040528015610ace5781602001602082028036833780820191505090505b5090508681600081518110610ae657610ae5612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508773ffffffffffffffffffffffffffffffffffffffff1663569541b96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6657600080fd5b505afa158015610b7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9e919061191d565b81600181518110610bb257610bb1612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600281518110610c0157610c00612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38973ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9e57600080fd5b505afa158015610cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd6919061191d565b866040518363ffffffff1660e01b8152600401610cf4929190611e34565b602060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d469190611ad9565b5060008873ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc7919061191d565b73ffffffffffffffffffffffffffffffffffffffff16638803dbee8887853060c861ffff1642610df7919061207b565b6040518663ffffffff1660e01b8152600401610e17959493929190611ee3565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e6e9190611a90565b905080600081518110610e8457610e83612302565b5b6020026020010151935050505095945050505050565b600080610f258773ffffffffffffffffffffffffffffffffffffffff1663d936a0126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee657600080fd5b505afa158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e919061191d565b878661143f565b90506060811561101e57600267ffffffffffffffff811115610f4a57610f49612331565b5b604051908082528060200260200182016040528015610f785781602001602082028036833780820191505090505b5090508681600081518110610f9057610f8f612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508481600181518110610fdf57610fde612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506111d5565b600367ffffffffffffffff81111561103957611038612331565b5b6040519080825280602002602001820160405280156110675781602001602082028036833780820191505090505b509050868160008151811061107f5761107e612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508773ffffffffffffffffffffffffffffffffffffffff1663569541b96040518163ffffffff1660e01b815260040160206040518083038186803b1580156110ff57600080fd5b505afa158015611113573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611137919061191d565b8160018151811061114b5761114a612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050848160028151811061119a57611199612302565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8673ffffffffffffffffffffffffffffffffffffffff1663095ea7b38973ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f919061191d565b886040518363ffffffff1660e01b815260040161128d929190611e34565b602060405180830381600087803b1580156112a757600080fd5b505af11580156112bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112df9190611ad9565b5060008873ffffffffffffffffffffffffffffffffffffffff1663842da36d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561132857600080fd5b505afa15801561133c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611360919061191d565b73ffffffffffffffffffffffffffffffffffffffff166338ed17398887853060c861ffff1642611390919061207b565b6040518663ffffffff1660e01b81526004016113b0959493929190611ee3565b600060405180830381600087803b1580156113ca57600080fd5b505af11580156113de573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114079190611a90565b9050806001835161141891906120d1565b8151811061142957611428612302565b5b6020026020010151935050505095945050505050565b60008061144d858585611579565b905060008473ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161148a9190611de2565b60206040518083038186803b1580156114a257600080fd5b505afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190611baa565b11801561156f575060008373ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161151d9190611de2565b60206040518083038186803b15801561153557600080fd5b505afa158015611549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156d9190611baa565b115b9150509392505050565b600080600061158885856115eb565b915091508582826040516020016115a0929190611d74565b604051602081830303815290604052805190602001206040516020016115c7929190611da0565b6040516020818303038152906040528051906020012060001c925050509392505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611654576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061168e578284611691565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611700576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600061171a61171584611f62565b611f3d565b9050808382526020820190508285602086028201111561173d5761173c61238e565b5b60005b8581101561176d57816117538882611908565b845260208401935060208301925050600181019050611740565b5050509392505050565b600061178a61178584611f8e565b611f3d565b9050828152602081018484840111156117a6576117a5612393565b5b6117b1848285612232565b509392505050565b6000813590506117c88161246e565b92915050565b6000815190506117dd8161246e565b92915050565b6000813590506117f281612485565b92915050565b600082601f83011261180d5761180c61237a565b5b815161181d848260208601611707565b91505092915050565b6000813590506118358161249c565b92915050565b60008151905061184a8161249c565b92915050565b60008083601f8401126118665761186561237a565b5b8235905067ffffffffffffffff81111561188357611882612375565b5b60208301915083600182028301111561189f5761189e61238e565b5b9250929050565b600082601f8301126118bb576118ba61237a565b5b81356118cb848260208601611777565b91505092915050565b6000606082840312156118ea576118e961237f565b5b81905092915050565b600081359050611902816124b3565b92915050565b600081519050611917816124b3565b92915050565b6000602082840312156119335761193261239d565b5b6000611941848285016117ce565b91505092915050565b6000806000606084860312156119635761196261239d565b5b6000611971868287016117e3565b935050602084013567ffffffffffffffff81111561199257611991612398565b5b61199e868287016118a6565b92505060406119af86828701611826565b9150509250925092565b600080604083850312156119d0576119cf61239d565b5b60006119de858286016117ce565b92505060206119ef85828601611908565b9150509250929050565b600080600080600060a08688031215611a1557611a1461239d565b5b6000611a23888289016117b9565b9550506020611a34888289016118f3565b9450506040611a45888289016117b9565b935050606086013567ffffffffffffffff811115611a6657611a65612398565b5b611a72888289016118a6565b9250506080611a8388828901611826565b9150509295509295909350565b600060208284031215611aa657611aa561239d565b5b600082015167ffffffffffffffff811115611ac457611ac3612398565b5b611ad0848285016117f8565b91505092915050565b600060208284031215611aef57611aee61239d565b5b6000611afd8482850161183b565b91505092915050565b600080600080600060808688031215611b2257611b2161239d565b5b600086013567ffffffffffffffff811115611b4057611b3f612398565b5b611b4c888289016118d4565b9550506020611b5d888289016117b9565b9450506040611b6e888289016118f3565b935050606086013567ffffffffffffffff811115611b8f57611b8e612398565b5b611b9b88828901611850565b92509250509295509295909350565b600060208284031215611bc057611bbf61239d565b5b6000611bce84828501611908565b91505092915050565b6000611be38383611bef565b60208301905092915050565b611bf881612105565b82525050565b611c0781612105565b82525050565b611c1e611c1982612105565b6122a5565b82525050565b6000611c2f82611fdf565b611c398185612002565b9350611c4483611fbf565b8060005b83811015611c75578151611c5c8882611bd7565b9750611c6783611ff5565b925050600181019050611c48565b5085935050505092915050565b611c93611c8e82612161565b6122b7565b82525050565b6000611ca482611fea565b611cae8185612013565b9350611cbe818560208601612241565b611cc7816123a2565b840191505092915050565b611cdb816121fc565b82525050565b6000611cee602b83612024565b9150611cf9826123cd565b604082019050919050565b6000611d11602083612035565b9150611d1c8261241c565b602082019050919050565b6000611d34600183612035565b9150611d3f82612445565b600182019050919050565b611d538161218b565b82525050565b6000611d658284611c0d565b60148201915081905092915050565b6000611d808285611c0d565b601482019150611d908284611c0d565b6014820191508190509392505050565b6000611dab82611d27565b9150611db78285611c0d565b601482019150611dc78284611c82565b602082019150611dd682611d04565b91508190509392505050565b6000602082019050611df76000830184611bfe565b92915050565b6000606082019050611e126000830186611bfe565b611e1f6020830185611bfe565b611e2c6040830184611d4a565b949350505050565b6000604082019050611e496000830185611bfe565b611e566020830184611d4a565b9392505050565b60006040820190508181036000830152611e778185611c99565b9050611e866020830184611d4a565b9392505050565b6000602082019050611ea26000830184611cd2565b92915050565b60006020820190508181036000830152611ec181611ce1565b9050919050565b6000602082019050611edd6000830184611d4a565b92915050565b600060a082019050611ef86000830188611d4a565b611f056020830187611d4a565b8181036040830152611f178186611c24565b9050611f266060830185611bfe565b611f336080830184611d4a565b9695505050505050565b6000611f47611f58565b9050611f538282612274565b919050565b6000604051905090565b600067ffffffffffffffff821115611f7d57611f7c612331565b5b602082029050602081019050919050565b600067ffffffffffffffff821115611fa957611fa8612331565b5b611fb2826123a2565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000808585111561205457612053612389565b5b8386111561206557612064612384565b5b6001850283019150848603905094509492505050565b60006120868261218b565b91506120918361218b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156120c6576120c56122d3565b5b828201905092915050565b60006120dc8261218b565b91506120e78361218b565b9250828210156120fa576120f96122d3565b5b828203905092915050565b60006121108261216b565b9050919050565b60006121228261216b565b9050919050565b60008115159050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006121a082611fea565b826121aa84611fcf565b90506121b581612360565b925060148210156121f5576121f07fffffffffffffffffffffffffffffffffffffffff000000000000000000000000836014036008026123c0565b831692505b5050919050565b60006122078261220e565b9050919050565b600061221982612220565b9050919050565b600061222b8261216b565b9050919050565b82818337600083830152505050565b60005b8381101561225f578082015181840152602081019050612244565b8381111561226e576000848401525b50505050565b61227d826123a2565b810181811067ffffffffffffffff8211171561229c5761229b612331565b5b80604052505050565b60006122b0826122c1565b9050919050565b6000819050919050565b60006122cc826123b3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061236c8251612135565b80915050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600082821b905092915050565b7f4f6e6c792073797374656d20636f6e74726163742063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b61247781612105565b811461248257600080fd5b50565b61248e81612117565b811461249957600080fd5b50565b6124a581612129565b81146124b057600080fd5b50565b6124bc8161218b565b81146124c757600080fd5b5056fea26469706673582212203c781539b7c12f169a29a309c8e44f90edfd9e9695cd21c3762d33e0b266d21c64736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
