{
  "_format": "hh-sol-artifact-1",
  "contractName": "EngineView",
  "sourceName": "contracts/V3/EngineView.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "inAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        }
      ],
      "name": "getBranchInputTokenList",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "idIndex",
              "type": "uint256"
            }
          ],
          "internalType": "struct Token.TokenHandler[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        },
        {
          "internalType": "uint8",
          "name": "branch",
          "type": "uint8"
        }
      ],
      "name": "getBranchOutputTokenList",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "idIndex",
              "type": "uint256"
            }
          ],
          "internalType": "struct Token.TokenHandler[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "engine",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "clusterArea",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stateCounter",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "clusterId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "taskId",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "claimer",
              "type": "address"
            },
            {
              "internalType": "uint8",
              "name": "io",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "round",
              "type": "uint16"
            },
            {
              "internalType": "uint8",
              "name": "branch",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "tokenSlotIndex",
              "type": "uint8"
            }
          ],
          "internalType": "struct IHandler.Claim",
          "name": "claim",
          "type": "tuple"
        }
      ],
      "name": "getClaimIOAddressBranchToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getInputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "inAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getInputAddressRoundBranch",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getOutputAddressRound",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stateCounter",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "taskId",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "args",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "round",
          "type": "uint16"
        }
      ],
      "name": "getOutputAddressRoundBranch",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "erc",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256[]",
              "name": "valueList",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct Token.TokenTemplate",
          "name": "tokenTemplate",
          "type": "tuple"
        }
      ],
      "name": "swapQuoteTokenTemplate",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612d2a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c8063138bd2bf1461007d5780631cc4f041146100a657806350f7f922146100c957806362aa18f4146100ee57806362f0a7f71461010e5780637c8c8f23146101215780639f439b6b14610141578063f8eb258814610154575b600080fd5b61009061008b36600461172a565b610167565b60405161009d9190611817565b60405180910390f35b6100b96100b436600461188a565b6101fb565b604051901515815260200161009d565b6100dc6100d7366004611952565b610314565b60405160ff909116815260200161009d565b6101016100fc366004611a37565b6103b0565b60405161009d9190611ae3565b6100dc61011c366004611b3c565b6107ac565b61013461012f366004611bd2565b6108ed565b60405161009d9190611c39565b61013461014f366004611bd2565b610a1b565b610101610162366004611c7a565b610aeb565b6040516373b0333b60e11b815260609073__$1d93808c49adb5062914c75723341b8fb1$__9063e7606676906101a1908590600401611d60565b60006040518083038186803b1580156101b957600080fd5b505af41580156101cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f59190810190611dd9565b92915050565b60408082015160808301519151636c51371d60e11b815263ffffffff909216600483015260009182916001600160a01b03169063d8a26e3a9060240160006040518083038186803b15801561024f57600080fd5b505afa158015610263573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261028b9190810190612028565b905080604001516001600160a01b0316631cc4f041846040518263ffffffff1660e01b81526004016102bd919061215d565b60206040518083038186803b1580156102d557600080fd5b505afa1580156102e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030d919061223b565b9392505050565b604051636c51371d60e11b815263ffffffff8316600482015260009081906001600160a01b0386169063d8a26e3a9060240160006040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261039a9190810190612028565b90506103a581610ccf565b979650505050505050565b604051636c51371d60e11b815263ffffffff851660048201526060906000906001600160a01b0388169063d8a26e3a9060240160006040518083038186803b1580156103fb57600080fd5b505afa15801561040f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104379190810190612028565b9050600081604001516001600160a01b0316631eda6e4f8b8b85602001518661010001518d8860c001518d8d6040518963ffffffff1660e01b8152600401610486989796959493929190612282565b60006040518083038186803b15801561049e57600080fd5b505afa1580156104b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104da91908101906122ee565b905060008083602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105549190612370565b6001600160a01b0316632c34025e85610100015161057187610d04565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260ff8916604482015260640160006040518083038186803b1580156105c057600080fd5b505afa1580156105d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105fc91908101906125da565b91509150600061060b84610d1e565b905060008260000151516001600160401b0381111561062c5761062c6115ab565b60405190808252806020026020018201604052801561066557816020015b610652611501565b81526020019060019003908161064a5790505b50905060005b83515160ff8216101561079a57600084600001518260ff1681518110610693576106936126c3565b6020026020010151600001519050600073__$ed1c8bc2f6cc82c25e68a2af235b2f85c8$__631231db5360018b868a600001518860ff16815181106106da576106da6126c3565b60200260200101518a6040518663ffffffff1660e01b8152600401610703959493929190612991565b60606040518083038186803b15801561071b57600080fd5b505af415801561072f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107539190612adc565b8051909150600019141561076657600081525b80848460ff168151811061077c5761077c6126c3565b602002602001018190525050508061079390612b4d565b905061066b565b509d9c50505050505050505050505050565b604051636c51371d60e11b815263ffffffff8416600482015260009081906001600160a01b0387169063d8a26e3a9060240160006040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108329190810190612028565b9050600081604001516001600160a01b0316631eda6e4f8a8a85602001518661010001518c8860c001518c8c6040518963ffffffff1660e01b8152600401610881989796959493929190612282565b60006040518083038186803b15801561089957600080fd5b505afa1580156108ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108d591908101906122ee565b90506108e0816111b2565b9998505050505050505050565b604051636c51371d60e11b815263ffffffff831660048201526060906000906001600160a01b0386169063d8a26e3a9060240160006040518083038186803b15801561093857600080fd5b505afa15801561094c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109749190810190612028565b905080604001516001600160a01b0316634b2dbcb8878360200151846101000151898660c00151896040518763ffffffff1660e01b81526004016109bd96959493929190612b6d565b60006040518083038186803b1580156109d557600080fd5b505afa1580156109e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a119190810190612bb0565b9695505050505050565b604051636c51371d60e11b815263ffffffff831660048201526060906000906001600160a01b0386169063d8a26e3a9060240160006040518083038186803b158015610a6657600080fd5b505afa158015610a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aa29190810190612028565b905080604001516001600160a01b0316634b2e9b41878360200151846101000151898660c00151896040518763ffffffff1660e01b81526004016109bd96959493929190612b6d565b604051636c51371d60e11b815263ffffffff841660048201526060906000906001600160a01b0387169063d8a26e3a9060240160006040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b729190810190612028565b90506000610b7f826111fc565b60ff1682610140015151610b939190612be4565b90506000816001600160401b03811115610baf57610baf6115ab565b604051908082528060200260200182016040528015610be857816020015b610bd5611501565b815260200190600190039081610bcd5790505b5090506000610bfb8361ffff8916612c06565b90505b82610c0a886001612c25565b61ffff16610c189190612c06565b811015610cc257610c27611501565b8461014001518281518110610c3e57610c3e6126c3565b6020908102919091010151604001518152610140850151805183908110610c6757610c676126c3565b60209081029190910181015160600151908201528083610c8b8661ffff8c16612c06565b610c959085612c4b565b81518110610ca557610ca56126c3565b60200260200101819052505080610cbb90612c62565b9050610bfe565b5098975050505050505050565b60006101f58260a00151600860006008610ce99190612c7d565b610cf4906010612c7d565b610cff906010612c7d565b611237565b60006101f58260a00151601060006008610cf49190612c7d565b610d26611522565b6000610d3183611256565b90506000610d3d6112a3565b9050610d48846112ea565b60ff168152610d568461131d565b60ff166020820152610d6784611354565b60ff166060820152610d78846111b2565b60ff166040820152610d89846113a1565b60ff16610120820152835151600090610da490600190612c4b565b90505b602061ffff84161061105c5781610120015160ff166001600160401b03811115610dd357610dd36115ab565b604051908082528060200260200182016040528015610dfc578160200160208202803683370190505b5061014083015261012082015160ff166001600160401b03811115610e2357610e236115ab565b604051908082528060200260200182016040528015610e4c578160200160208202803683370190505b5061016083015261012082015160ff166001600160401b03811115610e7357610e736115ab565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5061018083015261012082015160ff166001600160401b03811115610ec357610ec36115ab565b604051908082528060200260200182016040528015610eec578160200160208202803683370190505b506101a083015261012082015160ff165b801561104957855182610f0f81612c95565b935081518110610f2157610f216126c3565b6020026020010151836101a0015182610f3990612c95565b92508281518110610f4c57610f4c6126c3565b6001600160a01b0390921660209283029190910190910152855182610f7081612c95565b935081518110610f8257610f826126c3565b60200260200101518361018001518281518110610fa157610fa16126c3565b60ff90921660209283029190910190910152855182610fbf81612c95565b935081518110610fd157610fd16126c3565b60200260200101518361016001518281518110610ff057610ff06126c3565b602090810291909101015285518261100781612c95565b935081518110611019576110196126c3565b60200260200101518361014001518281518110611038576110386126c3565b602002602001018181525050610efd565b50611055602084612cac565b9250611197565b601061ffff8416106110ac57845180518290811061107c5761107c6126c3565b6020908102919091010151610100830152611098601084612cac565b9250806110a481612c95565b915050611197565b600861ffff8416106110e75784518051829081106110cc576110cc6126c3565b602090810291909101015160e0830152611098600884612cac565b600461ffff841610611122578451805182908110611107576111076126c3565b602090810291909101015160c0830152611098600484612cac565b600261ffff84161061115c5761113785611430565b63ffffffff1660a083018190526111515761271060a08301525b611055600284612cac565b600161ffff841610611197576111718561149e565b62ffffff166080830181905261118957600160808301525b611194600184612cac565b92505b61ffff83166111a5576111aa565b610da7565b509392505050565b60006101f582600001516000815181106111ce576111ce6126c3565b6020026020010151600860ff16600060086111e99190612ccf565b6111f4906004612ccf565b60ff16611237565b60006101f58260a001516010600060086112169190612c7d565b611221906010612c7d565b61122c906010612c7d565b610cff906008612c7d565b91821c9160008061124b600180861b612c4b565b909416949350505050565b60006101f58260000151600081518110611272576112726126c3565b6020026020010151601060ff166000600861128d9190612ccf565b611298906004612ccf565b6111e9906008612ccf565b6112ab611522565b6112b3611522565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60006101f58260000151600081518110611306576113066126c3565b6020026020010151600860ff16600060ff16611237565b60006101f58260000151600081518110611339576113396126c3565b6020026020010151600460ff16600060086111f49190612ccf565b60006101f58260000151600081518110611370576113706126c3565b6020026020010151600460ff166000600861138b9190612ccf565b611396906004612ccf565b6111f4906008612ccf565b60006101f582600001516000815181106113bd576113bd6126c3565b6020026020010151600860ff16600060086113d89190612ccf565b6113e3906004612ccf565b6113ee906008612ccf565b6113f9906004612ccf565b611404906010612ccf565b61140f906018612ccf565b61141a906020612ccf565b611425906020612ccf565b6111f4906020612ccf565b60006101f5826000015160008151811061144c5761144c6126c3565b6020026020010151602060ff16600060086114679190612ccf565b611472906004612ccf565b61147d906008612ccf565b611488906004612ccf565b611493906010612ccf565b6111f4906018612ccf565b60006101f582600001516000815181106114ba576114ba6126c3565b6020026020010151601860ff16600060086114d59190612ccf565b6114e0906004612ccf565b6114eb906008612ccf565b6114f6906004612ccf565b6111f4906010612ccf565b60405180606001604052806000815260200160008152602001600081525090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156115e3576115e36115ab565b60405290565b60405161014081016001600160401b03811182821017156115e3576115e36115ab565b60405160a081016001600160401b03811182821017156115e3576115e36115ab565b604080519081016001600160401b03811182821017156115e3576115e36115ab565b60405161018081016001600160401b03811182821017156115e3576115e36115ab565b604051608081016001600160401b03811182821017156115e3576115e36115ab565b604051601f8201601f191681016001600160401b03811182821017156116bd576116bd6115ab565b604052919050565b60ff811681146116d457600080fd5b50565b80356116e2816116c5565b919050565b6001600160a01b03811681146116d457600080fd5b80356116e2816116e7565b60006001600160401b03821115611720576117206115ab565b5060051b60200190565b6000602080838503121561173d57600080fd5b82356001600160401b038082111561175457600080fd5b908401906060828703121561176857600080fd5b6117706115c1565b823561177b816116c5565b81528284013561178a816116e7565b818501526040830135828111156117a057600080fd5b80840193505086601f8401126117b557600080fd5b823591506117ca6117c583611707565b611695565b82815260059290921b830184019184810190888411156117e957600080fd5b938501935b83851015611807578435825293850193908501906117ee565b6040830152509695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561184f57835183529284019291840191600101611833565b50909695505050505050565b63ffffffff811681146116d457600080fd5b80356116e28161185b565b803561ffff811681146116e257600080fd5b6000610140828403121561189d57600080fd5b6118a56115e9565b6118ae836116fc565b81526118bc602084016116fc565b60208201526118cd604084016116fc565b60408201526118de6060840161186d565b60608201526118ef6080840161186d565b608082015261190060a084016116fc565b60a082015261191160c084016116d7565b60c082015261192260e08401611878565b60e08201526101006119358185016116d7565b908201526101206119478482016116d7565b908201529392505050565b600080600080600060a0868803121561196a57600080fd5b8535611975816116e7565b94506020860135611985816116e7565b93506040860135611995816116e7565b925060608601356119a58161185b565b91506119b360808701611878565b90509295509295909350565b60006001600160401b038211156119d8576119d86115ab565b50601f01601f191660200190565b600082601f8301126119f757600080fd5b8135611a056117c5826119bf565b818152846020838601011115611a1a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060e0888a031215611a5257600080fd5b8735611a5d816116e7565b96506020880135611a6d816116e7565b95506040880135611a7d816116e7565b94506060880135611a8d8161185b565b935060808801356001600160401b03811115611aa857600080fd5b611ab48a828b016119e6565b935050611ac360a08901611878565b915060c0880135611ad3816116c5565b8091505092959891949750929550565b602080825282518282018190526000919060409081850190868401855b82811015611b2f5781518051855286810151878601528501518585015260609093019290850190600101611b00565b5091979650505050505050565b60008060008060008060c08789031215611b5557600080fd5b8635611b60816116e7565b95506020870135611b70816116e7565b94506040870135611b80816116e7565b93506060870135611b908161185b565b925060808701356001600160401b03811115611bab57600080fd5b611bb789828a016119e6565b925050611bc660a08801611878565b90509295509295509295565b60008060008060808587031215611be857600080fd5b8435611bf3816116e7565b93506020850135611c03816116e7565b92506040850135611c138161185b565b9150611c2160608601611878565b905092959194509250565b6001600160a01b03169052565b6020808252825182820181905260009190848201906040850190845b8181101561184f5783516001600160a01b031683529284019291840191600101611c55565b600080600080600060a08688031215611c9257600080fd5b8535611c9d816116e7565b94506020860135611cad816116e7565b93506040860135611cbd8161185b565b9250611ccb60608701611878565b91506080860135611cdb816116c5565b809150509295509295909350565b600081518084526020808501945080840160005b83811015611d1957815187529582019590820190600101611cfd565b509495945050505050565b60ff815116825260018060a01b0360208201511660208301526000604082015160606040850152611d586060850182611ce9565b949350505050565b60208152600061030d6020830184611d24565b600082601f830112611d8457600080fd5b81516020611d946117c583611707565b82815260059290921b84018101918181019086841115611db357600080fd5b8286015b84811015611dce5780518352918301918301611db7565b509695505050505050565b600060208284031215611deb57600080fd5b81516001600160401b03811115611e0157600080fd5b611d5884828501611d73565b80516116e2816116e7565b80516116e28161185b565b80516116e2816116c5565b600082601f830112611e3f57600080fd5b81516020611e4f6117c583611707565b82815260059290921b84018101918181019086841115611e6e57600080fd5b8286015b84811015611dce5780516001600160401b0380821115611e9157600080fd5b9088019060a0828b03601f19011215611ea957600080fd5b611eb161160c565b86830151611ebe816116c5565b8152604083810151611ecf816116e7565b828901526060848101518284015260808501519083015260a084015183811115611ef95760008081fd5b8085019450508b603f850112611f1157600092508283fd5b878401519250611f236117c584611707565b83815260069390931b8401810192888101908d851115611f435760008081fd5b948201945b84861015611f9d5782868f031215611f605760008081fd5b611f6861162e565b8651611f738161185b565b8152868b0151600481900b8114611f8a5760008081fd5b818c015282529482019490890190611f48565b6080840152505085525050918301918301611e72565b60005b83811015611fce578181015183820152602001611fb6565b83811115611fdd576000848401525b50505050565b600082601f830112611ff457600080fd5b81516120026117c5826119bf565b81815284602083860101111561201757600080fd5b611d58826020830160208701611fb3565b60006020828403121561203a57600080fd5b81516001600160401b038082111561205157600080fd5b90830190610180828603121561206657600080fd5b61206e611650565b61207783611e0d565b815261208560208401611e0d565b602082015261209660408401611e0d565b60408201526120a760608401611e0d565b60608201526080830151608082015260a083015160a08201526120cc60c08401611e18565b60c08201526120dd60e08401611e18565b60e08201526101006120f0818501611e18565b90820152610120612102848201611e23565b90820152610140838101518381111561211a57600080fd5b61212688828701611e2e565b828401525050610160808401518381111561214057600080fd5b61214c88828701611fe3565b918301919091525095945050505050565b600061014082019050612171828451611c2c565b60208301516121836020840182611c2c565b5060408301516121966040840182611c2c565b5060608301516121ae606084018263ffffffff169052565b5060808301516121c6608084018263ffffffff169052565b5060a08301516121d960a0840182611c2c565b5060c08301516121ee60c084018260ff169052565b5060e083015161220460e084018261ffff169052565b506101008381015160ff908116918401919091526101209384015116929091019190915290565b805180151581146116e257600080fd5b60006020828403121561224d57600080fd5b61030d8261222b565b6000815180845261226e816020860160208601611fb3565b601f01601f19169290920160200192915050565b6001600160a01b0389811682528881166020830152878116604083015263ffffffff87811660608401529086166080830152841660a082015261010060c082018190526000906122d483820186612256565b91505061ffff831660e08301529998505050505050505050565b60006020828403121561230057600080fd5b81516001600160401b038082111561231757600080fd5b908301906020828603121561232b57600080fd5b604051602081018181108382111715612346576123466115ab565b60405282518281111561235857600080fd5b61236487828601611d73565b82525095945050505050565b60006020828403121561238257600080fd5b815161030d816116e7565b600082601f83011261239e57600080fd5b815160206123ae6117c583611707565b82815260059290921b840181019181810190868411156123cd57600080fd5b8286015b84811015611dce5780516123e4816116e7565b83529183019183016123d1565b600082601f83011261240257600080fd5b815160206124126117c583611707565b82815260059290921b8401810191818101908684111561243157600080fd5b8286015b84811015611dce5780516001600160401b038082111561245457600080fd5b90880190601f196080838c038201121561246d57600080fd5b612475611673565b878401518381111561248657600080fd5b84016060818e038401121561249a57600080fd5b6124a26115c1565b9250888101516124b1816116c5565b83526040818101516124c2816116e7565b848b01526060820151858111156124d857600080fd5b6124e68f8c83860101611d73565b82860152508383526124f9818701611e23565b8a840152606086015193508484111561251157600080fd5b61251f8e8b8689010161238d565b9083015250608084015191508282111561253857600080fd5b6125468c8984870101611d73565b60608201528652505050918301918301612435565b600082601f83011261256c57600080fd5b8151602061257c6117c583611707565b82815260059290921b8401810191818101908684111561259b57600080fd5b8286015b84811015611dce5780516001600160401b038111156125be5760008081fd5b6125cc8986838b0101611fe3565b84525091830191830161259f565b600080604083850312156125ed57600080fd5b6125f68361222b565b915060208301516001600160401b038082111561261257600080fd5b9084019060a0828703121561262657600080fd5b61262e61160c565b82518281111561263d57600080fd5b612649888286016123f1565b82525061265860208401611e23565b602082015261266960408401611e0d565b604082015260608301518281111561268057600080fd5b61268c8882860161238d565b6060830152506080830151828111156126a457600080fd5b6126b08882860161255b565b6080830152508093505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501808196508360051b810191508286016000805b8681101561279c578385038a528251805160ff168652868101516001600160a01b031687870152604080820151818801526060808301519088015260809182015160a0928801839052805192880183905288019160c088019185915b80831015612786578451805163ffffffff1685528b015160040b8b850152938a01939281019260019290920191612754565b5050509a87019a955050918501916001016126f8565b509298975050505050505050565b600081518084526020808501945080840160005b83811015611d195781516001600160a01b0316875295820195908201906001016127be565b60008151608084526127f86080850182611d24565b905060ff60208401511660208501526040830151848203604086015261281e82826127aa565b915050606083015184820360608601526128388282611ce9565b95945050505050565b600081518084526020808501945080840160005b83811015611d1957815160ff1687529582019590820190600101612855565b805160ff16825260006101c06020830151612894602086018260ff169052565b5060408301516128a9604086018260ff169052565b5060608301516128be606086018260ff169052565b5060808301516128d5608086018262ffffff169052565b5060a08301516128ed60a086018263ffffffff169052565b5060c083015160c085015260e083015160e0850152610100808401518186015250610120808401516129238287018260ff169052565b505061014080840151828287015261293d83870182611ce9565b9250505061016080840151858303828701526129598382611ce9565b9250505061018080840151858303828701526129758382612841565b925050506101a08084015185830382870152610a1183826127aa565b60ff8616815260a060208201526129ac60a082018651611c2c565b600060208601516129c060c0840182611c2c565b5060408601516129d360e0840182611c2c565b5060608601516101006129e881850183611c2c565b60808801519150610120828186015260a08901519250610140838187015260c08a01519350610160612a218188018663ffffffff169052565b60e08b01519450610180612a3c8189018763ffffffff169052565b848c015163ffffffff166101a0890152838c015160ff166101c0890152828c01516101e08901919091529450612a766102208801866126d9565b9450808b01519350505050609f1984830301610200850152612a988282612256565b915050612aaa604084018760ff169052565b8281036060840152612abc81866127e3565b90508281036080840152612ad08185612874565b98975050505050505050565b600060608284031215612aee57600080fd5b604051606081018181106001600160401b0382111715612b1057612b106115ab565b80604052508251815260208301516020820152604083015160408201528091505092915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff811415612b6457612b64612b37565b60010192915050565b6001600160a01b039687168152948616602086015263ffffffff93841660408601529190941660608401529216608082015261ffff90911660a082015260c00190565b600060208284031215612bc257600080fd5b81516001600160401b03811115612bd857600080fd5b611d588482850161238d565b600082612c0157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c2057612c20612b37565b500290565b600061ffff808316818516808303821115612c4257612c42612b37565b01949350505050565b600082821015612c5d57612c5d612b37565b500390565b6000600019821415612c7657612c76612b37565b5060010190565b60008219821115612c9057612c90612b37565b500190565b600081612ca457612ca4612b37565b506000190190565b600061ffff83811690831681811015612cc757612cc7612b37565b039392505050565b600060ff821660ff84168060ff03821115612cec57612cec612b37565b01939250505056fea264697066735822122013177f347d7e4da2ee58b18bc47b3292cec398ddb395cba909f3e532f286910c64736f6c63430008080033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c8063138bd2bf1461007d5780631cc4f041146100a657806350f7f922146100c957806362aa18f4146100ee57806362f0a7f71461010e5780637c8c8f23146101215780639f439b6b14610141578063f8eb258814610154575b600080fd5b61009061008b36600461172a565b610167565b60405161009d9190611817565b60405180910390f35b6100b96100b436600461188a565b6101fb565b604051901515815260200161009d565b6100dc6100d7366004611952565b610314565b60405160ff909116815260200161009d565b6101016100fc366004611a37565b6103b0565b60405161009d9190611ae3565b6100dc61011c366004611b3c565b6107ac565b61013461012f366004611bd2565b6108ed565b60405161009d9190611c39565b61013461014f366004611bd2565b610a1b565b610101610162366004611c7a565b610aeb565b6040516373b0333b60e11b815260609073__$1d93808c49adb5062914c75723341b8fb1$__9063e7606676906101a1908590600401611d60565b60006040518083038186803b1580156101b957600080fd5b505af41580156101cd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101f59190810190611dd9565b92915050565b60408082015160808301519151636c51371d60e11b815263ffffffff909216600483015260009182916001600160a01b03169063d8a26e3a9060240160006040518083038186803b15801561024f57600080fd5b505afa158015610263573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261028b9190810190612028565b905080604001516001600160a01b0316631cc4f041846040518263ffffffff1660e01b81526004016102bd919061215d565b60206040518083038186803b1580156102d557600080fd5b505afa1580156102e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030d919061223b565b9392505050565b604051636c51371d60e11b815263ffffffff8316600482015260009081906001600160a01b0386169063d8a26e3a9060240160006040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261039a9190810190612028565b90506103a581610ccf565b979650505050505050565b604051636c51371d60e11b815263ffffffff851660048201526060906000906001600160a01b0388169063d8a26e3a9060240160006040518083038186803b1580156103fb57600080fd5b505afa15801561040f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104379190810190612028565b9050600081604001516001600160a01b0316631eda6e4f8b8b85602001518661010001518d8860c001518d8d6040518963ffffffff1660e01b8152600401610486989796959493929190612282565b60006040518083038186803b15801561049e57600080fd5b505afa1580156104b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104da91908101906122ee565b905060008083602001516001600160a01b0316631424e30c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561051c57600080fd5b505afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105549190612370565b6001600160a01b0316632c34025e85610100015161057187610d04565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015261ffff16602482015260ff8916604482015260640160006040518083038186803b1580156105c057600080fd5b505afa1580156105d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105fc91908101906125da565b91509150600061060b84610d1e565b905060008260000151516001600160401b0381111561062c5761062c6115ab565b60405190808252806020026020018201604052801561066557816020015b610652611501565b81526020019060019003908161064a5790505b50905060005b83515160ff8216101561079a57600084600001518260ff1681518110610693576106936126c3565b6020026020010151600001519050600073__$ed1c8bc2f6cc82c25e68a2af235b2f85c8$__631231db5360018b868a600001518860ff16815181106106da576106da6126c3565b60200260200101518a6040518663ffffffff1660e01b8152600401610703959493929190612991565b60606040518083038186803b15801561071b57600080fd5b505af415801561072f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107539190612adc565b8051909150600019141561076657600081525b80848460ff168151811061077c5761077c6126c3565b602002602001018190525050508061079390612b4d565b905061066b565b509d9c50505050505050505050505050565b604051636c51371d60e11b815263ffffffff8416600482015260009081906001600160a01b0387169063d8a26e3a9060240160006040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108329190810190612028565b9050600081604001516001600160a01b0316631eda6e4f8a8a85602001518661010001518c8860c001518c8c6040518963ffffffff1660e01b8152600401610881989796959493929190612282565b60006040518083038186803b15801561089957600080fd5b505afa1580156108ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108d591908101906122ee565b90506108e0816111b2565b9998505050505050505050565b604051636c51371d60e11b815263ffffffff831660048201526060906000906001600160a01b0386169063d8a26e3a9060240160006040518083038186803b15801561093857600080fd5b505afa15801561094c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109749190810190612028565b905080604001516001600160a01b0316634b2dbcb8878360200151846101000151898660c00151896040518763ffffffff1660e01b81526004016109bd96959493929190612b6d565b60006040518083038186803b1580156109d557600080fd5b505afa1580156109e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a119190810190612bb0565b9695505050505050565b604051636c51371d60e11b815263ffffffff831660048201526060906000906001600160a01b0386169063d8a26e3a9060240160006040518083038186803b158015610a6657600080fd5b505afa158015610a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aa29190810190612028565b905080604001516001600160a01b0316634b2e9b41878360200151846101000151898660c00151896040518763ffffffff1660e01b81526004016109bd96959493929190612b6d565b604051636c51371d60e11b815263ffffffff841660048201526060906000906001600160a01b0387169063d8a26e3a9060240160006040518083038186803b158015610b3657600080fd5b505afa158015610b4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b729190810190612028565b90506000610b7f826111fc565b60ff1682610140015151610b939190612be4565b90506000816001600160401b03811115610baf57610baf6115ab565b604051908082528060200260200182016040528015610be857816020015b610bd5611501565b815260200190600190039081610bcd5790505b5090506000610bfb8361ffff8916612c06565b90505b82610c0a886001612c25565b61ffff16610c189190612c06565b811015610cc257610c27611501565b8461014001518281518110610c3e57610c3e6126c3565b6020908102919091010151604001518152610140850151805183908110610c6757610c676126c3565b60209081029190910181015160600151908201528083610c8b8661ffff8c16612c06565b610c959085612c4b565b81518110610ca557610ca56126c3565b60200260200101819052505080610cbb90612c62565b9050610bfe565b5098975050505050505050565b60006101f58260a00151600860006008610ce99190612c7d565b610cf4906010612c7d565b610cff906010612c7d565b611237565b60006101f58260a00151601060006008610cf49190612c7d565b610d26611522565b6000610d3183611256565b90506000610d3d6112a3565b9050610d48846112ea565b60ff168152610d568461131d565b60ff166020820152610d6784611354565b60ff166060820152610d78846111b2565b60ff166040820152610d89846113a1565b60ff16610120820152835151600090610da490600190612c4b565b90505b602061ffff84161061105c5781610120015160ff166001600160401b03811115610dd357610dd36115ab565b604051908082528060200260200182016040528015610dfc578160200160208202803683370190505b5061014083015261012082015160ff166001600160401b03811115610e2357610e236115ab565b604051908082528060200260200182016040528015610e4c578160200160208202803683370190505b5061016083015261012082015160ff166001600160401b03811115610e7357610e736115ab565b604051908082528060200260200182016040528015610e9c578160200160208202803683370190505b5061018083015261012082015160ff166001600160401b03811115610ec357610ec36115ab565b604051908082528060200260200182016040528015610eec578160200160208202803683370190505b506101a083015261012082015160ff165b801561104957855182610f0f81612c95565b935081518110610f2157610f216126c3565b6020026020010151836101a0015182610f3990612c95565b92508281518110610f4c57610f4c6126c3565b6001600160a01b0390921660209283029190910190910152855182610f7081612c95565b935081518110610f8257610f826126c3565b60200260200101518361018001518281518110610fa157610fa16126c3565b60ff90921660209283029190910190910152855182610fbf81612c95565b935081518110610fd157610fd16126c3565b60200260200101518361016001518281518110610ff057610ff06126c3565b602090810291909101015285518261100781612c95565b935081518110611019576110196126c3565b60200260200101518361014001518281518110611038576110386126c3565b602002602001018181525050610efd565b50611055602084612cac565b9250611197565b601061ffff8416106110ac57845180518290811061107c5761107c6126c3565b6020908102919091010151610100830152611098601084612cac565b9250806110a481612c95565b915050611197565b600861ffff8416106110e75784518051829081106110cc576110cc6126c3565b602090810291909101015160e0830152611098600884612cac565b600461ffff841610611122578451805182908110611107576111076126c3565b602090810291909101015160c0830152611098600484612cac565b600261ffff84161061115c5761113785611430565b63ffffffff1660a083018190526111515761271060a08301525b611055600284612cac565b600161ffff841610611197576111718561149e565b62ffffff166080830181905261118957600160808301525b611194600184612cac565b92505b61ffff83166111a5576111aa565b610da7565b509392505050565b60006101f582600001516000815181106111ce576111ce6126c3565b6020026020010151600860ff16600060086111e99190612ccf565b6111f4906004612ccf565b60ff16611237565b60006101f58260a001516010600060086112169190612c7d565b611221906010612c7d565b61122c906010612c7d565b610cff906008612c7d565b91821c9160008061124b600180861b612c4b565b909416949350505050565b60006101f58260000151600081518110611272576112726126c3565b6020026020010151601060ff166000600861128d9190612ccf565b611298906004612ccf565b6111e9906008612ccf565b6112ab611522565b6112b3611522565b6000808252604082018190526127106080830181905260a0830181905260c083019190915260e08201819052610100820152919050565b60006101f58260000151600081518110611306576113066126c3565b6020026020010151600860ff16600060ff16611237565b60006101f58260000151600081518110611339576113396126c3565b6020026020010151600460ff16600060086111f49190612ccf565b60006101f58260000151600081518110611370576113706126c3565b6020026020010151600460ff166000600861138b9190612ccf565b611396906004612ccf565b6111f4906008612ccf565b60006101f582600001516000815181106113bd576113bd6126c3565b6020026020010151600860ff16600060086113d89190612ccf565b6113e3906004612ccf565b6113ee906008612ccf565b6113f9906004612ccf565b611404906010612ccf565b61140f906018612ccf565b61141a906020612ccf565b611425906020612ccf565b6111f4906020612ccf565b60006101f5826000015160008151811061144c5761144c6126c3565b6020026020010151602060ff16600060086114679190612ccf565b611472906004612ccf565b61147d906008612ccf565b611488906004612ccf565b611493906010612ccf565b6111f4906018612ccf565b60006101f582600001516000815181106114ba576114ba6126c3565b6020026020010151601860ff16600060086114d59190612ccf565b6114e0906004612ccf565b6114eb906008612ccf565b6114f6906004612ccf565b6111f4906010612ccf565b60405180606001604052806000815260200160008152602001600081525090565b604051806101c00160405280600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600062ffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600060ff168152602001606081526020016060815260200160608152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156115e3576115e36115ab565b60405290565b60405161014081016001600160401b03811182821017156115e3576115e36115ab565b60405160a081016001600160401b03811182821017156115e3576115e36115ab565b604080519081016001600160401b03811182821017156115e3576115e36115ab565b60405161018081016001600160401b03811182821017156115e3576115e36115ab565b604051608081016001600160401b03811182821017156115e3576115e36115ab565b604051601f8201601f191681016001600160401b03811182821017156116bd576116bd6115ab565b604052919050565b60ff811681146116d457600080fd5b50565b80356116e2816116c5565b919050565b6001600160a01b03811681146116d457600080fd5b80356116e2816116e7565b60006001600160401b03821115611720576117206115ab565b5060051b60200190565b6000602080838503121561173d57600080fd5b82356001600160401b038082111561175457600080fd5b908401906060828703121561176857600080fd5b6117706115c1565b823561177b816116c5565b81528284013561178a816116e7565b818501526040830135828111156117a057600080fd5b80840193505086601f8401126117b557600080fd5b823591506117ca6117c583611707565b611695565b82815260059290921b830184019184810190888411156117e957600080fd5b938501935b83851015611807578435825293850193908501906117ee565b6040830152509695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561184f57835183529284019291840191600101611833565b50909695505050505050565b63ffffffff811681146116d457600080fd5b80356116e28161185b565b803561ffff811681146116e257600080fd5b6000610140828403121561189d57600080fd5b6118a56115e9565b6118ae836116fc565b81526118bc602084016116fc565b60208201526118cd604084016116fc565b60408201526118de6060840161186d565b60608201526118ef6080840161186d565b608082015261190060a084016116fc565b60a082015261191160c084016116d7565b60c082015261192260e08401611878565b60e08201526101006119358185016116d7565b908201526101206119478482016116d7565b908201529392505050565b600080600080600060a0868803121561196a57600080fd5b8535611975816116e7565b94506020860135611985816116e7565b93506040860135611995816116e7565b925060608601356119a58161185b565b91506119b360808701611878565b90509295509295909350565b60006001600160401b038211156119d8576119d86115ab565b50601f01601f191660200190565b600082601f8301126119f757600080fd5b8135611a056117c5826119bf565b818152846020838601011115611a1a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600060e0888a031215611a5257600080fd5b8735611a5d816116e7565b96506020880135611a6d816116e7565b95506040880135611a7d816116e7565b94506060880135611a8d8161185b565b935060808801356001600160401b03811115611aa857600080fd5b611ab48a828b016119e6565b935050611ac360a08901611878565b915060c0880135611ad3816116c5565b8091505092959891949750929550565b602080825282518282018190526000919060409081850190868401855b82811015611b2f5781518051855286810151878601528501518585015260609093019290850190600101611b00565b5091979650505050505050565b60008060008060008060c08789031215611b5557600080fd5b8635611b60816116e7565b95506020870135611b70816116e7565b94506040870135611b80816116e7565b93506060870135611b908161185b565b925060808701356001600160401b03811115611bab57600080fd5b611bb789828a016119e6565b925050611bc660a08801611878565b90509295509295509295565b60008060008060808587031215611be857600080fd5b8435611bf3816116e7565b93506020850135611c03816116e7565b92506040850135611c138161185b565b9150611c2160608601611878565b905092959194509250565b6001600160a01b03169052565b6020808252825182820181905260009190848201906040850190845b8181101561184f5783516001600160a01b031683529284019291840191600101611c55565b600080600080600060a08688031215611c9257600080fd5b8535611c9d816116e7565b94506020860135611cad816116e7565b93506040860135611cbd8161185b565b9250611ccb60608701611878565b91506080860135611cdb816116c5565b809150509295509295909350565b600081518084526020808501945080840160005b83811015611d1957815187529582019590820190600101611cfd565b509495945050505050565b60ff815116825260018060a01b0360208201511660208301526000604082015160606040850152611d586060850182611ce9565b949350505050565b60208152600061030d6020830184611d24565b600082601f830112611d8457600080fd5b81516020611d946117c583611707565b82815260059290921b84018101918181019086841115611db357600080fd5b8286015b84811015611dce5780518352918301918301611db7565b509695505050505050565b600060208284031215611deb57600080fd5b81516001600160401b03811115611e0157600080fd5b611d5884828501611d73565b80516116e2816116e7565b80516116e28161185b565b80516116e2816116c5565b600082601f830112611e3f57600080fd5b81516020611e4f6117c583611707565b82815260059290921b84018101918181019086841115611e6e57600080fd5b8286015b84811015611dce5780516001600160401b0380821115611e9157600080fd5b9088019060a0828b03601f19011215611ea957600080fd5b611eb161160c565b86830151611ebe816116c5565b8152604083810151611ecf816116e7565b828901526060848101518284015260808501519083015260a084015183811115611ef95760008081fd5b8085019450508b603f850112611f1157600092508283fd5b878401519250611f236117c584611707565b83815260069390931b8401810192888101908d851115611f435760008081fd5b948201945b84861015611f9d5782868f031215611f605760008081fd5b611f6861162e565b8651611f738161185b565b8152868b0151600481900b8114611f8a5760008081fd5b818c015282529482019490890190611f48565b6080840152505085525050918301918301611e72565b60005b83811015611fce578181015183820152602001611fb6565b83811115611fdd576000848401525b50505050565b600082601f830112611ff457600080fd5b81516120026117c5826119bf565b81815284602083860101111561201757600080fd5b611d58826020830160208701611fb3565b60006020828403121561203a57600080fd5b81516001600160401b038082111561205157600080fd5b90830190610180828603121561206657600080fd5b61206e611650565b61207783611e0d565b815261208560208401611e0d565b602082015261209660408401611e0d565b60408201526120a760608401611e0d565b60608201526080830151608082015260a083015160a08201526120cc60c08401611e18565b60c08201526120dd60e08401611e18565b60e08201526101006120f0818501611e18565b90820152610120612102848201611e23565b90820152610140838101518381111561211a57600080fd5b61212688828701611e2e565b828401525050610160808401518381111561214057600080fd5b61214c88828701611fe3565b918301919091525095945050505050565b600061014082019050612171828451611c2c565b60208301516121836020840182611c2c565b5060408301516121966040840182611c2c565b5060608301516121ae606084018263ffffffff169052565b5060808301516121c6608084018263ffffffff169052565b5060a08301516121d960a0840182611c2c565b5060c08301516121ee60c084018260ff169052565b5060e083015161220460e084018261ffff169052565b506101008381015160ff908116918401919091526101209384015116929091019190915290565b805180151581146116e257600080fd5b60006020828403121561224d57600080fd5b61030d8261222b565b6000815180845261226e816020860160208601611fb3565b601f01601f19169290920160200192915050565b6001600160a01b0389811682528881166020830152878116604083015263ffffffff87811660608401529086166080830152841660a082015261010060c082018190526000906122d483820186612256565b91505061ffff831660e08301529998505050505050505050565b60006020828403121561230057600080fd5b81516001600160401b038082111561231757600080fd5b908301906020828603121561232b57600080fd5b604051602081018181108382111715612346576123466115ab565b60405282518281111561235857600080fd5b61236487828601611d73565b82525095945050505050565b60006020828403121561238257600080fd5b815161030d816116e7565b600082601f83011261239e57600080fd5b815160206123ae6117c583611707565b82815260059290921b840181019181810190868411156123cd57600080fd5b8286015b84811015611dce5780516123e4816116e7565b83529183019183016123d1565b600082601f83011261240257600080fd5b815160206124126117c583611707565b82815260059290921b8401810191818101908684111561243157600080fd5b8286015b84811015611dce5780516001600160401b038082111561245457600080fd5b90880190601f196080838c038201121561246d57600080fd5b612475611673565b878401518381111561248657600080fd5b84016060818e038401121561249a57600080fd5b6124a26115c1565b9250888101516124b1816116c5565b83526040818101516124c2816116e7565b848b01526060820151858111156124d857600080fd5b6124e68f8c83860101611d73565b82860152508383526124f9818701611e23565b8a840152606086015193508484111561251157600080fd5b61251f8e8b8689010161238d565b9083015250608084015191508282111561253857600080fd5b6125468c8984870101611d73565b60608201528652505050918301918301612435565b600082601f83011261256c57600080fd5b8151602061257c6117c583611707565b82815260059290921b8401810191818101908684111561259b57600080fd5b8286015b84811015611dce5780516001600160401b038111156125be5760008081fd5b6125cc8986838b0101611fe3565b84525091830191830161259f565b600080604083850312156125ed57600080fd5b6125f68361222b565b915060208301516001600160401b038082111561261257600080fd5b9084019060a0828703121561262657600080fd5b61262e61160c565b82518281111561263d57600080fd5b612649888286016123f1565b82525061265860208401611e23565b602082015261266960408401611e0d565b604082015260608301518281111561268057600080fd5b61268c8882860161238d565b6060830152506080830151828111156126a457600080fd5b6126b08882860161255b565b6080830152508093505050509250929050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501808196508360051b810191508286016000805b8681101561279c578385038a528251805160ff168652868101516001600160a01b031687870152604080820151818801526060808301519088015260809182015160a0928801839052805192880183905288019160c088019185915b80831015612786578451805163ffffffff1685528b015160040b8b850152938a01939281019260019290920191612754565b5050509a87019a955050918501916001016126f8565b509298975050505050505050565b600081518084526020808501945080840160005b83811015611d195781516001600160a01b0316875295820195908201906001016127be565b60008151608084526127f86080850182611d24565b905060ff60208401511660208501526040830151848203604086015261281e82826127aa565b915050606083015184820360608601526128388282611ce9565b95945050505050565b600081518084526020808501945080840160005b83811015611d1957815160ff1687529582019590820190600101612855565b805160ff16825260006101c06020830151612894602086018260ff169052565b5060408301516128a9604086018260ff169052565b5060608301516128be606086018260ff169052565b5060808301516128d5608086018262ffffff169052565b5060a08301516128ed60a086018263ffffffff169052565b5060c083015160c085015260e083015160e0850152610100808401518186015250610120808401516129238287018260ff169052565b505061014080840151828287015261293d83870182611ce9565b9250505061016080840151858303828701526129598382611ce9565b9250505061018080840151858303828701526129758382612841565b925050506101a08084015185830382870152610a1183826127aa565b60ff8616815260a060208201526129ac60a082018651611c2c565b600060208601516129c060c0840182611c2c565b5060408601516129d360e0840182611c2c565b5060608601516101006129e881850183611c2c565b60808801519150610120828186015260a08901519250610140838187015260c08a01519350610160612a218188018663ffffffff169052565b60e08b01519450610180612a3c8189018763ffffffff169052565b848c015163ffffffff166101a0890152838c015160ff166101c0890152828c01516101e08901919091529450612a766102208801866126d9565b9450808b01519350505050609f1984830301610200850152612a988282612256565b915050612aaa604084018760ff169052565b8281036060840152612abc81866127e3565b90508281036080840152612ad08185612874565b98975050505050505050565b600060608284031215612aee57600080fd5b604051606081018181106001600160401b0382111715612b1057612b106115ab565b80604052508251815260208301516020820152604083015160408201528091505092915050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff811415612b6457612b64612b37565b60010192915050565b6001600160a01b039687168152948616602086015263ffffffff93841660408601529190941660608401529216608082015261ffff90911660a082015260c00190565b600060208284031215612bc257600080fd5b81516001600160401b03811115612bd857600080fd5b611d588482850161238d565b600082612c0157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c2057612c20612b37565b500290565b600061ffff808316818516808303821115612c4257612c42612b37565b01949350505050565b600082821015612c5d57612c5d612b37565b500390565b6000600019821415612c7657612c76612b37565b5060010190565b60008219821115612c9057612c90612b37565b500190565b600081612ca457612ca4612b37565b506000190190565b600061ffff83811690831681811015612cc757612cc7612b37565b039392505050565b600060ff821660ff84168060ff03821115612cec57612cec612b37565b01939250505056fea264697066735822122013177f347d7e4da2ee58b18bc47b3292cec398ddb395cba909f3e532f286910c64736f6c63430008080033",
  "linkReferences": {
    "contracts/V3/EngineUtil.sol": {
      "EngineUtil": [
        {
          "length": 20,
          "start": 409
        }
      ]
    },
    "contracts/V3/util/TokenHandlerUtil.sol": {
      "TokenHandlerUtil": [
        {
          "length": 20,
          "start": 1733
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/V3/EngineUtil.sol": {
      "EngineUtil": [
        {
          "length": 20,
          "start": 377
        }
      ]
    },
    "contracts/V3/util/TokenHandlerUtil.sol": {
      "TokenHandlerUtil": [
        {
          "length": 20,
          "start": 1701
        }
      ]
    }
  }
}
