{
  "_format": "hh-sol-artifact-1",
  "contractName": "BalanceReader",
  "sourceName": "contracts/offchain-helpers/BalanceReader.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "markets",
          "type": "address[]"
        }
      ],
      "name": "getUserMarketInfos",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "lpBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lpActiveBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256[]",
              "name": "lpRewardsOut",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256",
              "name": "ytBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ytInterestOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256[]",
              "name": "ytRewardsOut",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256",
              "name": "ptBalance",
              "type": "uint256"
            }
          ],
          "internalType": "struct BalanceReader.UserMarketInfo[]",
          "name": "res",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "SYs",
          "type": "address[]"
        }
      ],
      "name": "getUserSYInfos",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "syBalance",
              "type": "uint256"
            },
            {
              "internalType": "uint256[]",
              "name": "rewardsOut",
              "type": "uint256[]"
            }
          ],
          "internalType": "struct BalanceReader.UserSYInfo[]",
          "name": "res",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "direct",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "renounce",
          "type": "bool"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100ed565b600154600160a81b900460ff161561008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b600154600160a01b900460ff908116146100eb576001805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516119cc6101215f395f81816102e2015281816103220152818161078b015281816107cb015261084601526119cc5ff3fe608060405260043610610080575f3560e01c8063078dfbe7146100845780633659cfe6146100a557806348e8e02f146100c45780634e71e0c8146100f95780634f1ef2861461010d57806352d1902d146101205780638da5cb5b14610142578063c4d66de81461016d578063d4231c411461018c578063e30c3978146101b8575b5f5ffd5b34801561008f575f5ffd5b506100a361009e366004611280565b6101d7565b005b3480156100b0575f5ffd5b506100a36100bf3660046112c2565b6102d8565b3480156100cf575f5ffd5b506100e36100de36600461134a565b61039f565b6040516100f09190611437565b60405180910390f35b348015610104575f5ffd5b506100a36106d9565b6100a361011b3660046114f4565b610781565b34801561012b575f5ffd5b5061013461083a565b6040519081526020016100f0565b34801561014d575f5ffd5b505f54610160906001600160a01b031681565b6040516100f09190611599565b348015610178575f5ffd5b506100a36101873660046112c2565b6108e6565b348015610197575f5ffd5b506101ab6101a636600461134a565b610a16565b6040516100f091906115ad565b3480156101c3575f5ffd5b50600154610160906001600160a01b031681565b5f546001600160a01b031633146102095760405162461bcd60e51b81526004016102009061161b565b60405180910390fd5b81156102b7576001600160a01b0383161515806102235750805b6102675760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610200565b5f80546040516001600160a01b03808716939216915f5160206119505f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103205760405162461bcd60e51b815260040161020090611650565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610352610b44565b6001600160a01b0316146103785760405162461bcd60e51b815260040161020090611689565b61038181610b5f565b604080515f8082526020820190925261039c91839190610b88565b50565b606081516001600160401b038111156103ba576103ba6112e4565b60405190808252806020026020018201604052801561042657816020015b6104136040518060e001604052805f81526020015f8152602001606081526020015f81526020015f8152602001606081526020015f81525090565b8152602001906001900390816103d85790505b5090505f5b82518110156106d2575f838281518110610447576104476116c2565b602002602001015190505f838381518110610464576104646116c2565b602002602001015190505f5f836001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d091906116d6565b6040516370a0823160e01b815291945092506001600160a01b03861691506370a0823190610502908b90600401611599565b602060405180830381865afa15801561051d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105419190611720565b8352604051630892cd8b60e01b81526001600160a01b03851690630892cd8b9061056f908b90600401611599565b602060405180830381865afa9250505080156105a8575060408051601f3d908101601f191682019092526105a591810190611720565b60015b6105b7575f60208401526105bd565b60208401525b6105c78489610cf2565b604080850191909152516370a0823160e01b81526001600160a01b038216906370a08231906105fa908b90600401611599565b602060405180830381865afa158015610615573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106399190611720565b60608401526106488189610e16565b60a085015260808401526040516370a0823160e01b81526001600160a01b038316906370a082319061067e908b90600401611599565b602060405180830381865afa158015610699573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bd9190611720565b60c0939093019290925250505060010161042b565b5092915050565b6001546001600160a01b03163381146107345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610200565b5f80546040516001600160a01b03808516939216915f5160206119505f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c95760405162461bcd60e51b815260040161020090611650565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107fb610b44565b6001600160a01b0316146108215760405162461bcd60e51b815260040161020090611689565b61082a82610b5f565b61083682826001610b88565b5050565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108d45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610200565b505f5160206119305f395f51905f5290565b600154600160a81b900460ff161580801561090c575060018054600160a01b900460ff16105b80610933575061091b30610f4e565b158015610933575060018054600160a01b900460ff16145b6109965760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610200565b6001805460ff60a01b1916600160a01b17905580156109c3576001805460ff60a81b1916600160a81b1790555b6109cc82610f5d565b8015610836576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b606081516001600160401b03811115610a3157610a316112e4565b604051908082528060200260200182016040528015610a7657816020015b604080518082019091525f815260606020820152815260200190600190039081610a4f5790505b5090505f5b82518110156106d2575f838281518110610a9757610a976116c2565b602002602001015190505f838381518110610ab457610ab46116c2565b60200260200101519050816001600160a01b03166370a08231876040518263ffffffff1660e01b8152600401610aea9190611599565b602060405180830381865afa158015610b05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b299190611720565b8152610b358287610feb565b60209091015250600101610a7b565b5f5160206119305f395f51905f52546001600160a01b031690565b5f546001600160a01b0316331461039c5760405162461bcd60e51b81526004016102009061161b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610bbb576102d38361101a565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c15575060408051601f3d908101601f19168201909252610c1291810190611720565b60015b610c785760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610200565b5f5160206119305f395f51905f528114610ce65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610200565b506102d38383836110b3565b604051639262187b60e01b81526060906001600160a01b03841690639262187b90610d21908590600401611599565b5f604051808303815f875af1925050508015610d5e57506040513d5f823e601f3d908101601f19168201604052610d5b919081019061179c565b60015b610e0d57826001600160a01b031663c4f59f9b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610d9d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dc491908101906117cd565b516001600160401b03811115610ddc57610ddc6112e4565b604051908082528060200260200182016040528015610e05578160200160208202803683370190505b509050610e10565b90505b92915050565b604051637d24da4d60e01b81526001600160a01b03828116600483015260016024830181905260448301525f91606091851690637d24da4d906064015f604051808303815f875af1925050508015610e8f57506040513d5f823e601f3d908101601f19168201604052610e8c919081019061185c565b60015b610f41575f846001600160a01b031663c4f59f9b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ecf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ef691908101906117cd565b516001600160401b03811115610f0e57610f0e6112e4565b604051908082528060200260200182016040528015610f37578160200160208202803683370190505b5091509150610f47565b90925090505b9250929050565b6001600160a01b03163b151590565b600154600160a81b900460ff16610fca5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610200565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b604051633bd73ee360e21b81526060906001600160a01b0384169063ef5cfb8c90610d21908590600401611599565b61102381610f4e565b6110855760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610200565b5f5160206119305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6110bc836110dd565b5f825111806110c85750805b156102d3576110d7838361111c565b50505050565b6110e68161101a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610e0d83836040518060600160405280602781526020016119706027913960605f5f856001600160a01b03168560405161115891906118c2565b5f60405180830381855af49150503d805f8114611190576040519150601f19603f3d011682016040523d82523d5f602084013e611195565b606091505b50915091506111a6868383876111b0565b9695505050505050565b6060831561121c5782515f03611215576111c985610f4e565b6112155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610200565b5081611226565b611226838361122e565b949350505050565b81511561123e5781518083602001fd5b8060405162461bcd60e51b815260040161020091906118dd565b6001600160a01b038116811461039c575f5ffd5b8035801515811461127b575f5ffd5b919050565b5f5f5f60608486031215611292575f5ffd5b833561129d81611258565b92506112ab6020850161126c565b91506112b96040850161126c565b90509250925092565b5f602082840312156112d2575f5ffd5b81356112dd81611258565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715611320576113206112e4565b604052919050565b5f6001600160401b03821115611340576113406112e4565b5060051b60200190565b5f5f6040838503121561135b575f5ffd5b823561136681611258565b915060208301356001600160401b03811115611380575f5ffd5b8301601f81018513611390575f5ffd5b80356113a361139e82611328565b6112f8565b8082825260208201915060208360051b8501019250878311156113c4575f5ffd5b6020840193505b828410156113ef5783356113de81611258565b8252602093840193909101906113cb565b809450505050509250929050565b5f8151808452602084019350602083015f5b8281101561142d57815186526020958601959091019060010161140f565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156114e857603f1987860301845281518051865260208101516020870152604081015160e0604088015261149760e08801826113fd565b9050606082015160608801526080820151608088015260a082015187820360a08901526114c482826113fd565b60c0938401519890930197909752509450602093840193919091019060010161145d565b50929695505050505050565b5f5f60408385031215611505575f5ffd5b823561151081611258565b915060208301356001600160401b0381111561152a575f5ffd5b8301601f8101851361153a575f5ffd5b80356001600160401b03811115611553576115536112e4565b611566601f8201601f19166020016112f8565b81815286602083850101111561157a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b6001600160a01b0391909116815260200190565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156114e857603f19878603018452815180518652602081015190506040602087015261160560408701826113fd565b95505060209384019391909101906001016115d3565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c908201525f5160206119105f395f51905f5260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201525f5160206119105f395f51905f5260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f5f5f606084860312156116e8575f5ffd5b83516116f381611258565b602085015190935061170481611258565b604085015190925061171581611258565b809150509250925092565b5f60208284031215611730575f5ffd5b5051919050565b5f82601f830112611746575f5ffd5b815161175461139e82611328565b8082825260208201915060208360051b860101925085831115611775575f5ffd5b602085015b8381101561179257805183526020928301920161177a565b5095945050505050565b5f602082840312156117ac575f5ffd5b81516001600160401b038111156117c1575f5ffd5b61122684828501611737565b5f602082840312156117dd575f5ffd5b81516001600160401b038111156117f2575f5ffd5b8201601f81018413611802575f5ffd5b805161181061139e82611328565b8082825260208201915060208360051b850101925086831115611831575f5ffd5b6020840193505b828410156111a657835161184b81611258565b825260209384019390910190611838565b5f5f6040838503121561186d575f5ffd5b825160208401519092506001600160401b0381111561188a575f5ffd5b61189685828601611737565b9150509250929050565b5f5b838110156118ba5781810151838201526020016118a2565b50505f910152565b5f82516118d38184602087016118a0565b9190910192915050565b602081525f82518060208401526118fb8160408501602087016118a0565b601f01601f1916919091016040019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122096bd322ac12ad5efd4cea1587f8a4a41abd43e5208ec52095ca2a37e198023c764736f6c634300081e0033",
  "deployedBytecode": "0x608060405260043610610080575f3560e01c8063078dfbe7146100845780633659cfe6146100a557806348e8e02f146100c45780634e71e0c8146100f95780634f1ef2861461010d57806352d1902d146101205780638da5cb5b14610142578063c4d66de81461016d578063d4231c411461018c578063e30c3978146101b8575b5f5ffd5b34801561008f575f5ffd5b506100a361009e366004611280565b6101d7565b005b3480156100b0575f5ffd5b506100a36100bf3660046112c2565b6102d8565b3480156100cf575f5ffd5b506100e36100de36600461134a565b61039f565b6040516100f09190611437565b60405180910390f35b348015610104575f5ffd5b506100a36106d9565b6100a361011b3660046114f4565b610781565b34801561012b575f5ffd5b5061013461083a565b6040519081526020016100f0565b34801561014d575f5ffd5b505f54610160906001600160a01b031681565b6040516100f09190611599565b348015610178575f5ffd5b506100a36101873660046112c2565b6108e6565b348015610197575f5ffd5b506101ab6101a636600461134a565b610a16565b6040516100f091906115ad565b3480156101c3575f5ffd5b50600154610160906001600160a01b031681565b5f546001600160a01b031633146102095760405162461bcd60e51b81526004016102009061161b565b60405180910390fd5b81156102b7576001600160a01b0383161515806102235750805b6102675760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610200565b5f80546040516001600160a01b03808716939216915f5160206119505f395f51905f5291a35f80546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103205760405162461bcd60e51b815260040161020090611650565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610352610b44565b6001600160a01b0316146103785760405162461bcd60e51b815260040161020090611689565b61038181610b5f565b604080515f8082526020820190925261039c91839190610b88565b50565b606081516001600160401b038111156103ba576103ba6112e4565b60405190808252806020026020018201604052801561042657816020015b6104136040518060e001604052805f81526020015f8152602001606081526020015f81526020015f8152602001606081526020015f81525090565b8152602001906001900390816103d85790505b5090505f5b82518110156106d2575f838281518110610447576104476116c2565b602002602001015190505f838381518110610464576104646116c2565b602002602001015190505f5f836001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d091906116d6565b6040516370a0823160e01b815291945092506001600160a01b03861691506370a0823190610502908b90600401611599565b602060405180830381865afa15801561051d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105419190611720565b8352604051630892cd8b60e01b81526001600160a01b03851690630892cd8b9061056f908b90600401611599565b602060405180830381865afa9250505080156105a8575060408051601f3d908101601f191682019092526105a591810190611720565b60015b6105b7575f60208401526105bd565b60208401525b6105c78489610cf2565b604080850191909152516370a0823160e01b81526001600160a01b038216906370a08231906105fa908b90600401611599565b602060405180830381865afa158015610615573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106399190611720565b60608401526106488189610e16565b60a085015260808401526040516370a0823160e01b81526001600160a01b038316906370a082319061067e908b90600401611599565b602060405180830381865afa158015610699573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106bd9190611720565b60c0939093019290925250505060010161042b565b5092915050565b6001546001600160a01b03163381146107345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610200565b5f80546040516001600160a01b03808516939216915f5160206119505f395f51905f5291a35f80546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107c95760405162461bcd60e51b815260040161020090611650565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107fb610b44565b6001600160a01b0316146108215760405162461bcd60e51b815260040161020090611689565b61082a82610b5f565b61083682826001610b88565b5050565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108d45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610200565b505f5160206119305f395f51905f5290565b600154600160a81b900460ff161580801561090c575060018054600160a01b900460ff16105b80610933575061091b30610f4e565b158015610933575060018054600160a01b900460ff16145b6109965760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610200565b6001805460ff60a01b1916600160a01b17905580156109c3576001805460ff60a81b1916600160a81b1790555b6109cc82610f5d565b8015610836576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b606081516001600160401b03811115610a3157610a316112e4565b604051908082528060200260200182016040528015610a7657816020015b604080518082019091525f815260606020820152815260200190600190039081610a4f5790505b5090505f5b82518110156106d2575f838281518110610a9757610a976116c2565b602002602001015190505f838381518110610ab457610ab46116c2565b60200260200101519050816001600160a01b03166370a08231876040518263ffffffff1660e01b8152600401610aea9190611599565b602060405180830381865afa158015610b05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b299190611720565b8152610b358287610feb565b60209091015250600101610a7b565b5f5160206119305f395f51905f52546001600160a01b031690565b5f546001600160a01b0316331461039c5760405162461bcd60e51b81526004016102009061161b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610bbb576102d38361101a565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c15575060408051601f3d908101601f19168201909252610c1291810190611720565b60015b610c785760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610200565b5f5160206119305f395f51905f528114610ce65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610200565b506102d38383836110b3565b604051639262187b60e01b81526060906001600160a01b03841690639262187b90610d21908590600401611599565b5f604051808303815f875af1925050508015610d5e57506040513d5f823e601f3d908101601f19168201604052610d5b919081019061179c565b60015b610e0d57826001600160a01b031663c4f59f9b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610d9d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dc491908101906117cd565b516001600160401b03811115610ddc57610ddc6112e4565b604051908082528060200260200182016040528015610e05578160200160208202803683370190505b509050610e10565b90505b92915050565b604051637d24da4d60e01b81526001600160a01b03828116600483015260016024830181905260448301525f91606091851690637d24da4d906064015f604051808303815f875af1925050508015610e8f57506040513d5f823e601f3d908101601f19168201604052610e8c919081019061185c565b60015b610f41575f846001600160a01b031663c4f59f9b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ecf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ef691908101906117cd565b516001600160401b03811115610f0e57610f0e6112e4565b604051908082528060200260200182016040528015610f37578160200160208202803683370190505b5091509150610f47565b90925090505b9250929050565b6001600160a01b03163b151590565b600154600160a81b900460ff16610fca5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610200565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b604051633bd73ee360e21b81526060906001600160a01b0384169063ef5cfb8c90610d21908590600401611599565b61102381610f4e565b6110855760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610200565b5f5160206119305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6110bc836110dd565b5f825111806110c85750805b156102d3576110d7838361111c565b50505050565b6110e68161101a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610e0d83836040518060600160405280602781526020016119706027913960605f5f856001600160a01b03168560405161115891906118c2565b5f60405180830381855af49150503d805f8114611190576040519150601f19603f3d011682016040523d82523d5f602084013e611195565b606091505b50915091506111a6868383876111b0565b9695505050505050565b6060831561121c5782515f03611215576111c985610f4e565b6112155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610200565b5081611226565b611226838361122e565b949350505050565b81511561123e5781518083602001fd5b8060405162461bcd60e51b815260040161020091906118dd565b6001600160a01b038116811461039c575f5ffd5b8035801515811461127b575f5ffd5b919050565b5f5f5f60608486031215611292575f5ffd5b833561129d81611258565b92506112ab6020850161126c565b91506112b96040850161126c565b90509250925092565b5f602082840312156112d2575f5ffd5b81356112dd81611258565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715611320576113206112e4565b604052919050565b5f6001600160401b03821115611340576113406112e4565b5060051b60200190565b5f5f6040838503121561135b575f5ffd5b823561136681611258565b915060208301356001600160401b03811115611380575f5ffd5b8301601f81018513611390575f5ffd5b80356113a361139e82611328565b6112f8565b8082825260208201915060208360051b8501019250878311156113c4575f5ffd5b6020840193505b828410156113ef5783356113de81611258565b8252602093840193909101906113cb565b809450505050509250929050565b5f8151808452602084019350602083015f5b8281101561142d57815186526020958601959091019060010161140f565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156114e857603f1987860301845281518051865260208101516020870152604081015160e0604088015261149760e08801826113fd565b9050606082015160608801526080820151608088015260a082015187820360a08901526114c482826113fd565b60c0938401519890930197909752509450602093840193919091019060010161145d565b50929695505050505050565b5f5f60408385031215611505575f5ffd5b823561151081611258565b915060208301356001600160401b0381111561152a575f5ffd5b8301601f8101851361153a575f5ffd5b80356001600160401b03811115611553576115536112e4565b611566601f8201601f19166020016112f8565b81815286602083850101111561157a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b6001600160a01b0391909116815260200190565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156114e857603f19878603018452815180518652602081015190506040602087015261160560408701826113fd565b95505060209384019391909101906001016115d3565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c908201525f5160206119105f395f51905f5260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201525f5160206119105f395f51905f5260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f5f5f606084860312156116e8575f5ffd5b83516116f381611258565b602085015190935061170481611258565b604085015190925061171581611258565b809150509250925092565b5f60208284031215611730575f5ffd5b5051919050565b5f82601f830112611746575f5ffd5b815161175461139e82611328565b8082825260208201915060208360051b860101925085831115611775575f5ffd5b602085015b8381101561179257805183526020928301920161177a565b5095945050505050565b5f602082840312156117ac575f5ffd5b81516001600160401b038111156117c1575f5ffd5b61122684828501611737565b5f602082840312156117dd575f5ffd5b81516001600160401b038111156117f2575f5ffd5b8201601f81018413611802575f5ffd5b805161181061139e82611328565b8082825260208201915060208360051b850101925086831115611831575f5ffd5b6020840193505b828410156111a657835161184b81611258565b825260209384019390910190611838565b5f5f6040838503121561186d575f5ffd5b825160208401519092506001600160401b0381111561188a575f5ffd5b61189685828601611737565b9150509250929050565b5f5b838110156118ba5781810151838201526020016118a2565b50505f910152565b5f82516118d38184602087016118a0565b9190910192915050565b602081525f82518060208401526118fb8160408501602087016118a0565b601f01601f1916919091016040019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122096bd322ac12ad5efd4cea1587f8a4a41abd43e5208ec52095ca2a37e198023c764736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
