{
  "_format": "hh-sol-artifact-1",
  "contractName": "BinanceOracle",
  "sourceName": "contracts/oracles/BinanceOracle.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "calledContract",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "methodSignature",
          "type": "string"
        }
      ],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldFeedRegistry",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newFeedRegistry",
          "type": "address"
        }
      ],
      "name": "FeedRegistryUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "asset",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxStalePeriod",
          "type": "uint256"
        }
      ],
      "name": "MaxStalePeriodAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAccessControlManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAccessControlManager",
          "type": "address"
        }
      ],
      "name": "NewAccessControlManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "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": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "overriddenSymbol",
          "type": "string"
        }
      ],
      "name": "SymbolOverridden",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BNB_ADDR",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accessControlManager",
      "outputs": [
        {
          "internalType": "contract IAccessControlManagerV8",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feedRegistryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFeedRegistryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sidRegistryAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_acm",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "maxStalePeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "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": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "setAccessControlManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newfeedRegistryAddress",
          "type": "address"
        }
      ],
      "name": "setFeedRegistryAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_maxStalePeriod",
          "type": "uint256"
        }
      ],
      "name": "setMaxStalePeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "overrideSymbol",
          "type": "string"
        }
      ],
      "name": "setSymbolOverride",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sidRegistryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "symbols",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561000f575f80fd5b5061001861001d565b610101565b5f54610100900460ff161561004d5760405162461bcd60e51b8152600401610044906100a1565b60405180910390fd5b5f5460ff9081161461009f575f805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891610096916100f2565b60405180910390a15b565b602080825281016100ec81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff82168152602081016100ec565b611bfe8061010e5f395ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063715018a61161009e5780639eab1ad61161006e5780639eab1ad614610223578063b4a0bdf314610236578063e30c39781461024f578063f2fde38b14610260578063fdfbc27714610273575f80fd5b8063715018a6146101fa57806379ba5097146102025780638da5cb5b1461020a57806399fe040e1461021b575f80fd5b80633e83b6b8116100e45780633e83b6b81461018657806341976e09146101a1578063475e7de5146101c1578063485cc955146101d4578063636b999a146101e7575f80fd5b8063011d396214610115578063047a74b21461013e5780630e32cb861461015e578063255ce37a14610173575b5f80fd5b60cc54610128906001600160a01b031681565b6040516101359190610ed1565b60405180910390f35b61015161014c366004610fd9565b61029e565b604051610135919061104f565b61017161016c366004611085565b610341565b005b610171610181366004611085565b610355565b61012873bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6101b46101af366004611085565b610412565b60405161013591906110a9565b60c954610128906001600160a01b031681565b6101716101e23660046110b7565b6105f4565b6101716101f5366004611102565b6106db565b6101716107ad565b6101716107c0565b6033546001600160a01b0316610128565b6101286107f5565b61017161023136600461119a565b610905565b6097546001600160a01b0316604051610135919061124d565b6065546001600160a01b0316610128565b61017161026e366004611085565b6109ea565b6101b4610281366004610fd9565b805160208183018101805160ca8252928201919093012091525481565b805160208183018101805160cb82529282019190930120915280546102c29061126f565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee9061126f565b80156103395780601f1061031057610100808354040283529160200191610339565b820191905f5260205f20905b81548152906001019060200180831161031c57829003601f168201915b505050505081565b610349610a5b565b61035281610a85565b50565b806001600160a01b0381166103855760405162461bcd60e51b815260040161037c906112c9565b60405180910390fd5b61038d610a5b565b60c9546001600160a01b0316156103b65760405162461bcd60e51b815260040161037c9061130c565b60cc546040516001600160a01b038085169216907f6d1006252b3dd171af76c28c184327bfddc39f439a50e0ac7f418c660b8894b5905f90a35060cc80546001600160a01b0319166001600160a01b0392909216919091179055565b5f60608173bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0385160161045e57505060408051808201909152600381526221272160e91b6020820152601261052d565b5f849050806001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561049d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104c49190810190611370565b9250806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610502573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052691906113bc565b60ff169150505b5f60cb8360405161053e91906113fb565b908152602001604051809103902080546105579061126f565b80601f01602080910402602001604051908101604052809291908181526020018280546105839061126f565b80156105ce5780601f106105a5576101008083540402835291602001916105ce565b820191905f5260205f20905b8154815290600101906020018083116105b157829003601f168201915b5050505050905080515f146105e1578092505b6105eb8383610b0a565b95945050505050565b5f54610100900460ff161580801561061257505f54600160ff909116105b8061062b5750303b15801561062b57505f5460ff166001145b6106475760405162461bcd60e51b815260040161037c90611453565b5f805460ff191660011790558015610668575f805461ff0019166101001790555b60c980546001600160a01b0319166001600160a01b03851617905561068c82610cf3565b80156106d6575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906106cd90600190611476565b60405180910390a15b505050565b6106fc604051806060016040528060218152602001611ba860219139610d2a565b805f0361071b5760405162461bcd60e51b815260040161037c906114b7565b81515f0361073b5760405162461bcd60e51b815260040161037c906114f3565b8060ca8360405161074c91906113fb565b9081526040519081900360200181209190915561076a9083906113fb565b60405180910390207f37839d4a80c5e3f2578f59515c911ee8cce42383d7ebaa1c92afcde9871c4b58826040516107a191906110a9565b60405180910390a25050565b6107b5610a5b565b6107be5f610dc5565b565b60655433906001600160a01b031681146107ec5760405162461bcd60e51b815260040161037c90611548565b61035281610dc5565b60c954604051630178b8bf60e01b81525f917f94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff916001600160a01b039091169083908290630178b8bf9061084d9086906004016110a9565b602060405180830381865afa158015610868573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088c9190611563565b604051631d9dabef60e11b815290915081906001600160a01b03821690633b3b57de906108bd9087906004016110a9565b602060405180830381865afa1580156108d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fc9190611563565b94505050505090565b6109436040518060400160405280602081526020017f73657453796d626f6c4f7665727269646528737472696e672c737472696e6729815250610d2a565b5f8390036109635760405162461bcd60e51b815260040161037c906114f3565b818160cb8686604051610977929190611593565b90815260200160405180910390209182610992929190611632565b5083836040516109a3929190611593565b60405180910390207fceb1f47aa91b96f02ea70e1deed25fe154ad1885aea509bd7222f9eec0a0bda583836040516109dc929190611713565b60405180910390a250505050565b6109f2610a5b565b606580546001600160a01b0383166001600160a01b03199091168117909155610a236033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107be5760405162461bcd60e51b815260040161037c90611756565b6001600160a01b038116610aab5760405162461bcd60e51b815260040161037c906117a7565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090610afe90839085906117b7565b60405180910390a15050565b60c9545f9081906001600160a01b031615610b2e57610b276107f5565b9050610b3c565b5060cc546001600160a01b03165b5f80826001600160a01b031663bfda5e71876040518263ffffffff1660e01b8152600401610b6a91906117eb565b60a060405180830381865afa158015610b85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba99190611837565b509350509250505f8213610bcf5760405162461bcd60e51b815260040161037c906118dd565b80421015610bef5760405162461bcd60e51b815260040161037c90611920565b5f814203905060ca87604051610c0591906113fb565b908152602001604051809103902054811115610c335760405162461bcd60e51b815260040161037c90611963565b604051633748ccad60e11b81525f906001600160a01b03861690636e91995a90610c61908b906004016117eb565b602060405180830381865afa158015610c7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca091906113bc565b60ff169050610cb0876012611987565b610cbb90600a611aa6565b610cc6826012611987565b610cd190600a611aa6565b610cdb9086611ab3565b610ce59190611ab3565b955050505050505b92915050565b5f54610100900460ff16610d195760405162461bcd60e51b815260040161037c90611b19565b610d21610dde565b61035281610e0c565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab90610d5c9033908690600401611b29565b602060405180830381865afa158015610d77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9b9190611b5c565b905080610dc157333083604051634a3fa29360e01b815260040161037c93929190611b7a565b5050565b606580546001600160a01b031916905561035281610e32565b5f54610100900460ff16610e045760405162461bcd60e51b815260040161037c90611b19565b6107be610e83565b5f54610100900460ff166103495760405162461bcd60e51b815260040161037c90611b19565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610ea95760405162461bcd60e51b815260040161037c90611b19565b6107be33610dc5565b5f6001600160a01b038216610ced565b610ecb81610eb2565b82525050565b60208101610ced8284610ec2565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff82111715610f1957610f19610edf565b6040525050565b5f610f2a60405190565b9050610f368282610ef3565b919050565b5f67ffffffffffffffff821115610f5457610f54610edf565b601f19601f83011660200192915050565b82818337505f910152565b5f610f82610f7d84610f3b565b610f20565b905082815260208101848484011115610f9c57610f9c5f80fd5b610fa7848285610f65565b509392505050565b5f82601f830112610fc157610fc15f80fd5b8135610fd1848260208601610f70565b949350505050565b5f60208284031215610fec57610fec5f80fd5b813567ffffffffffffffff811115611005576110055f80fd5b610fd184828501610faf565b8281835e505f910152565b5f611025825190565b80845260208401935061103c818560208601611011565b601f19601f8201165b9093019392505050565b60208082528101611060818461101c565b9392505050565b61107081610eb2565b8114610352575f80fd5b8035610ced81611067565b5f60208284031215611098576110985f80fd5b5f610fd1848461107a565b80610ecb565b60208101610ced82846110a3565b5f80604083850312156110cb576110cb5f80fd5b5f6110d6858561107a565b92505060206110e78582860161107a565b9150509250929050565b80611070565b8035610ced816110f1565b5f8060408385031215611116576111165f80fd5b823567ffffffffffffffff81111561112f5761112f5f80fd5b61113b85828601610faf565b92505060206110e7858286016110f7565b5f8083601f84011261115f5761115f5f80fd5b50813567ffffffffffffffff811115611179576111795f80fd5b602083019150836001820283011115611193576111935f80fd5b9250929050565b5f805f80604085870312156111b0576111b05f80fd5b843567ffffffffffffffff8111156111c9576111c95f80fd5b6111d58782880161114c565b9450945050602085013567ffffffffffffffff8111156111f6576111f65f80fd5b6112028782880161114c565b95989497509550505050565b5f610ced6001600160a01b038316611224565b90565b6001600160a01b031690565b5f610ced8261120e565b5f610ced82611230565b610ecb8161123a565b60208101610ced8284611244565b634e487b7160e01b5f52602260045260245ffd5b60028104600182168061128357607f821691505b6020821081036112955761129561125b565b50919050565b601581525f602082017463616e2774206265207a65726f206164647265737360581b815291505b5060200190565b60208082528101610ced8161129b565b601f81525f602082017f736964526567697374727941646472657373206d757374206265207a65726f00815291506112c2565b60208082528101610ced816112d9565b5f611329610f7d84610f3b565b905082815260208101848484011115611343576113435f80fd5b610fa7848285611011565b5f82601f830112611360576113605f80fd5b8151610fd184826020860161131c565b5f60208284031215611383576113835f80fd5b815167ffffffffffffffff81111561139c5761139c5f80fd5b610fd18482850161134e565b60ff8116611070565b8051610ced816113a8565b5f602082840312156113cf576113cf5f80fd5b5f610fd184846113b1565b5f6113e3825190565b6113f1818560208601611011565b9290920192915050565b5f61106082846113da565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291505b5060400190565b60208082528101610ced81611406565b5f60ff8216610ced565b610ecb81611463565b60208101610ced828461146d565b601a81525f602082017f7374616c6520706572696f642063616e2774206265207a65726f000000000000815291506112c2565b60208082528101610ced81611484565b601681525f602082017573796d626f6c2063616e6e6f7420626520656d70747960501b815291506112c2565b60208082528101610ced816114c7565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061144c565b60208082528101610ced81611503565b8051610ced81611067565b5f60208284031215611576576115765f80fd5b5f610fd18484611558565b5f61158d838584610f65565b50500190565b5f610fd1828486611581565b5f610ced6112218381565b6115b38361159f565b81545f1960089490940293841b1916921b91909117905550565b5f6106d68184846115aa565b81811015610dc1576115eb5f826115cd565b6001016115d9565b601f8211156106d6575f818152602090206020601f850104810160208510156116195750805b61162b6020601f8601048301826115d9565b5050505050565b8267ffffffffffffffff81111561164b5761164b610edf565b611655825461126f565b6116608282856115f3565b5f601f831160018114611691575f841561167a5750858201355b5f19600886021c19811660028602178655506116e8565b5f85815260208120601f198616915b828110156116c057888501358255602094850194600190920191016116a0565b868310156116db575f19601f88166008021c19858a01351682555b6001600288020188555050505b50505050505050565b8183525f602084019350611706838584610f65565b601f19601f840116611045565b60208082528101610fd18184866116f1565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f6112c2565b60208082528101610ced81611725565b602581525f602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061144c565b60208082528101610ced81611766565b604081016117c58285610ec2565b6110606020830184610ec2565b600381525f60208201621554d160ea1b815291506112c2565b604080825281016117fc818461101c565b90508181036020830152611060816117d2565b69ffffffffffffffffffff8116611070565b8051610ced8161180f565b8051610ced816110f1565b5f805f805f60a0868803121561184e5761184e5f80fd5b5f6118598888611821565b955050602061186a8882890161182c565b945050604061187b8882890161182c565b935050606061188c8882890161182c565b925050608061189d88828901611821565b9150509295509295909350565b601c81525f602082017f696e76616c69642062696e616e6365206f7261636c6520707269636500000000815291506112c2565b60208082528101610ced816118aa565b601c81525f602082017f757064617465644174206578636565647320626c6f636b2074696d6500000000815291506112c2565b60208082528101610ced816118ed565b601c81525f602082017f62696e616e6365206f7261636c65207072696365206578706972656400000000815291506112c2565b60208082528101610ced81611930565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ced57610ced611973565b80825b60018511156119d9578086048111156119b8576119b8611973565b60018516156119c657908102905b80026119d28560011c90565b945061199d565b94509492505050565b5f826119f057506001611060565b816119fc57505f611060565b8160018114611a125760028114611a1c57611a49565b6001915050611060565b60ff841115611a2d57611a2d611973565b8360020a915084821115611a4357611a43611973565b50611060565b5060208310610133831016604e8410600b8410161715611a7c575081810a83811115611a7757611a77611973565b611060565b611a89848484600161199a565b92509050818404811115611a9f57611a9f611973565b0292915050565b5f6110605f1984846119e2565b818102808215838204851417611acb57611acb611973565b5092915050565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061144c565b60208082528101610ced81611ad2565b60408101611b378285610ec2565b8181036020830152610fd1818461101c565b801515611070565b8051610ced81611b49565b5f60208284031215611b6f57611b6f5f80fd5b5f610fd18484611b51565b60608101611b888286610ec2565b611b956020830185610ec2565b81810360408301526105eb818461101c56fe7365744d61785374616c65506572696f6428737472696e672c75696e7432353629a2646970667358221220e10415d7ffbd005634ab082e486b496d2db8ba3fddd8d01da5c6016db52b095564736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c8063715018a61161009e5780639eab1ad61161006e5780639eab1ad614610223578063b4a0bdf314610236578063e30c39781461024f578063f2fde38b14610260578063fdfbc27714610273575f80fd5b8063715018a6146101fa57806379ba5097146102025780638da5cb5b1461020a57806399fe040e1461021b575f80fd5b80633e83b6b8116100e45780633e83b6b81461018657806341976e09146101a1578063475e7de5146101c1578063485cc955146101d4578063636b999a146101e7575f80fd5b8063011d396214610115578063047a74b21461013e5780630e32cb861461015e578063255ce37a14610173575b5f80fd5b60cc54610128906001600160a01b031681565b6040516101359190610ed1565b60405180910390f35b61015161014c366004610fd9565b61029e565b604051610135919061104f565b61017161016c366004611085565b610341565b005b610171610181366004611085565b610355565b61012873bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb81565b6101b46101af366004611085565b610412565b60405161013591906110a9565b60c954610128906001600160a01b031681565b6101716101e23660046110b7565b6105f4565b6101716101f5366004611102565b6106db565b6101716107ad565b6101716107c0565b6033546001600160a01b0316610128565b6101286107f5565b61017161023136600461119a565b610905565b6097546001600160a01b0316604051610135919061124d565b6065546001600160a01b0316610128565b61017161026e366004611085565b6109ea565b6101b4610281366004610fd9565b805160208183018101805160ca8252928201919093012091525481565b805160208183018101805160cb82529282019190930120915280546102c29061126f565b80601f01602080910402602001604051908101604052809291908181526020018280546102ee9061126f565b80156103395780601f1061031057610100808354040283529160200191610339565b820191905f5260205f20905b81548152906001019060200180831161031c57829003601f168201915b505050505081565b610349610a5b565b61035281610a85565b50565b806001600160a01b0381166103855760405162461bcd60e51b815260040161037c906112c9565b60405180910390fd5b61038d610a5b565b60c9546001600160a01b0316156103b65760405162461bcd60e51b815260040161037c9061130c565b60cc546040516001600160a01b038085169216907f6d1006252b3dd171af76c28c184327bfddc39f439a50e0ac7f418c660b8894b5905f90a35060cc80546001600160a01b0319166001600160a01b0392909216919091179055565b5f60608173bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba196001600160a01b0385160161045e57505060408051808201909152600381526221272160e91b6020820152601261052d565b5f849050806001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561049d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104c49190810190611370565b9250806001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610502573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052691906113bc565b60ff169150505b5f60cb8360405161053e91906113fb565b908152602001604051809103902080546105579061126f565b80601f01602080910402602001604051908101604052809291908181526020018280546105839061126f565b80156105ce5780601f106105a5576101008083540402835291602001916105ce565b820191905f5260205f20905b8154815290600101906020018083116105b157829003601f168201915b5050505050905080515f146105e1578092505b6105eb8383610b0a565b95945050505050565b5f54610100900460ff161580801561061257505f54600160ff909116105b8061062b5750303b15801561062b57505f5460ff166001145b6106475760405162461bcd60e51b815260040161037c90611453565b5f805460ff191660011790558015610668575f805461ff0019166101001790555b60c980546001600160a01b0319166001600160a01b03851617905561068c82610cf3565b80156106d6575f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906106cd90600190611476565b60405180910390a15b505050565b6106fc604051806060016040528060218152602001611ba860219139610d2a565b805f0361071b5760405162461bcd60e51b815260040161037c906114b7565b81515f0361073b5760405162461bcd60e51b815260040161037c906114f3565b8060ca8360405161074c91906113fb565b9081526040519081900360200181209190915561076a9083906113fb565b60405180910390207f37839d4a80c5e3f2578f59515c911ee8cce42383d7ebaa1c92afcde9871c4b58826040516107a191906110a9565b60405180910390a25050565b6107b5610a5b565b6107be5f610dc5565b565b60655433906001600160a01b031681146107ec5760405162461bcd60e51b815260040161037c90611548565b61035281610dc5565b60c954604051630178b8bf60e01b81525f917f94fe3821e0768eb35012484db4df61890f9a6ca5bfa984ef8ff717e73139faff916001600160a01b039091169083908290630178b8bf9061084d9086906004016110a9565b602060405180830381865afa158015610868573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088c9190611563565b604051631d9dabef60e11b815290915081906001600160a01b03821690633b3b57de906108bd9087906004016110a9565b602060405180830381865afa1580156108d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fc9190611563565b94505050505090565b6109436040518060400160405280602081526020017f73657453796d626f6c4f7665727269646528737472696e672c737472696e6729815250610d2a565b5f8390036109635760405162461bcd60e51b815260040161037c906114f3565b818160cb8686604051610977929190611593565b90815260200160405180910390209182610992929190611632565b5083836040516109a3929190611593565b60405180910390207fceb1f47aa91b96f02ea70e1deed25fe154ad1885aea509bd7222f9eec0a0bda583836040516109dc929190611713565b60405180910390a250505050565b6109f2610a5b565b606580546001600160a01b0383166001600160a01b03199091168117909155610a236033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107be5760405162461bcd60e51b815260040161037c90611756565b6001600160a01b038116610aab5760405162461bcd60e51b815260040161037c906117a7565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090610afe90839085906117b7565b60405180910390a15050565b60c9545f9081906001600160a01b031615610b2e57610b276107f5565b9050610b3c565b5060cc546001600160a01b03165b5f80826001600160a01b031663bfda5e71876040518263ffffffff1660e01b8152600401610b6a91906117eb565b60a060405180830381865afa158015610b85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba99190611837565b509350509250505f8213610bcf5760405162461bcd60e51b815260040161037c906118dd565b80421015610bef5760405162461bcd60e51b815260040161037c90611920565b5f814203905060ca87604051610c0591906113fb565b908152602001604051809103902054811115610c335760405162461bcd60e51b815260040161037c90611963565b604051633748ccad60e11b81525f906001600160a01b03861690636e91995a90610c61908b906004016117eb565b602060405180830381865afa158015610c7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca091906113bc565b60ff169050610cb0876012611987565b610cbb90600a611aa6565b610cc6826012611987565b610cd190600a611aa6565b610cdb9086611ab3565b610ce59190611ab3565b955050505050505b92915050565b5f54610100900460ff16610d195760405162461bcd60e51b815260040161037c90611b19565b610d21610dde565b61035281610e0c565b6097546040516318c5e8ab60e01b81525f916001600160a01b0316906318c5e8ab90610d5c9033908690600401611b29565b602060405180830381865afa158015610d77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9b9190611b5c565b905080610dc157333083604051634a3fa29360e01b815260040161037c93929190611b7a565b5050565b606580546001600160a01b031916905561035281610e32565b5f54610100900460ff16610e045760405162461bcd60e51b815260040161037c90611b19565b6107be610e83565b5f54610100900460ff166103495760405162461bcd60e51b815260040161037c90611b19565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610ea95760405162461bcd60e51b815260040161037c90611b19565b6107be33610dc5565b5f6001600160a01b038216610ced565b610ecb81610eb2565b82525050565b60208101610ced8284610ec2565b634e487b7160e01b5f52604160045260245ffd5b601f19601f830116810181811067ffffffffffffffff82111715610f1957610f19610edf565b6040525050565b5f610f2a60405190565b9050610f368282610ef3565b919050565b5f67ffffffffffffffff821115610f5457610f54610edf565b601f19601f83011660200192915050565b82818337505f910152565b5f610f82610f7d84610f3b565b610f20565b905082815260208101848484011115610f9c57610f9c5f80fd5b610fa7848285610f65565b509392505050565b5f82601f830112610fc157610fc15f80fd5b8135610fd1848260208601610f70565b949350505050565b5f60208284031215610fec57610fec5f80fd5b813567ffffffffffffffff811115611005576110055f80fd5b610fd184828501610faf565b8281835e505f910152565b5f611025825190565b80845260208401935061103c818560208601611011565b601f19601f8201165b9093019392505050565b60208082528101611060818461101c565b9392505050565b61107081610eb2565b8114610352575f80fd5b8035610ced81611067565b5f60208284031215611098576110985f80fd5b5f610fd1848461107a565b80610ecb565b60208101610ced82846110a3565b5f80604083850312156110cb576110cb5f80fd5b5f6110d6858561107a565b92505060206110e78582860161107a565b9150509250929050565b80611070565b8035610ced816110f1565b5f8060408385031215611116576111165f80fd5b823567ffffffffffffffff81111561112f5761112f5f80fd5b61113b85828601610faf565b92505060206110e7858286016110f7565b5f8083601f84011261115f5761115f5f80fd5b50813567ffffffffffffffff811115611179576111795f80fd5b602083019150836001820283011115611193576111935f80fd5b9250929050565b5f805f80604085870312156111b0576111b05f80fd5b843567ffffffffffffffff8111156111c9576111c95f80fd5b6111d58782880161114c565b9450945050602085013567ffffffffffffffff8111156111f6576111f65f80fd5b6112028782880161114c565b95989497509550505050565b5f610ced6001600160a01b038316611224565b90565b6001600160a01b031690565b5f610ced8261120e565b5f610ced82611230565b610ecb8161123a565b60208101610ced8284611244565b634e487b7160e01b5f52602260045260245ffd5b60028104600182168061128357607f821691505b6020821081036112955761129561125b565b50919050565b601581525f602082017463616e2774206265207a65726f206164647265737360581b815291505b5060200190565b60208082528101610ced8161129b565b601f81525f602082017f736964526567697374727941646472657373206d757374206265207a65726f00815291506112c2565b60208082528101610ced816112d9565b5f611329610f7d84610f3b565b905082815260208101848484011115611343576113435f80fd5b610fa7848285611011565b5f82601f830112611360576113605f80fd5b8151610fd184826020860161131c565b5f60208284031215611383576113835f80fd5b815167ffffffffffffffff81111561139c5761139c5f80fd5b610fd18482850161134e565b60ff8116611070565b8051610ced816113a8565b5f602082840312156113cf576113cf5f80fd5b5f610fd184846113b1565b5f6113e3825190565b6113f1818560208601611011565b9290920192915050565b5f61106082846113da565b602e81525f602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291505b5060400190565b60208082528101610ced81611406565b5f60ff8216610ced565b610ecb81611463565b60208101610ced828461146d565b601a81525f602082017f7374616c6520706572696f642063616e2774206265207a65726f000000000000815291506112c2565b60208082528101610ced81611484565b601681525f602082017573796d626f6c2063616e6e6f7420626520656d70747960501b815291506112c2565b60208082528101610ced816114c7565b602981525f602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061144c565b60208082528101610ced81611503565b8051610ced81611067565b5f60208284031215611576576115765f80fd5b5f610fd18484611558565b5f61158d838584610f65565b50500190565b5f610fd1828486611581565b5f610ced6112218381565b6115b38361159f565b81545f1960089490940293841b1916921b91909117905550565b5f6106d68184846115aa565b81811015610dc1576115eb5f826115cd565b6001016115d9565b601f8211156106d6575f818152602090206020601f850104810160208510156116195750805b61162b6020601f8601048301826115d9565b5050505050565b8267ffffffffffffffff81111561164b5761164b610edf565b611655825461126f565b6116608282856115f3565b5f601f831160018114611691575f841561167a5750858201355b5f19600886021c19811660028602178655506116e8565b5f85815260208120601f198616915b828110156116c057888501358255602094850194600190920191016116a0565b868310156116db575f19601f88166008021c19858a01351682555b6001600288020188555050505b50505050505050565b8183525f602084019350611706838584610f65565b601f19601f840116611045565b60208082528101610fd18184866116f1565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081525f6112c2565b60208082528101610ced81611725565b602581525f602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061144c565b60208082528101610ced81611766565b604081016117c58285610ec2565b6110606020830184610ec2565b600381525f60208201621554d160ea1b815291506112c2565b604080825281016117fc818461101c565b90508181036020830152611060816117d2565b69ffffffffffffffffffff8116611070565b8051610ced8161180f565b8051610ced816110f1565b5f805f805f60a0868803121561184e5761184e5f80fd5b5f6118598888611821565b955050602061186a8882890161182c565b945050604061187b8882890161182c565b935050606061188c8882890161182c565b925050608061189d88828901611821565b9150509295509295909350565b601c81525f602082017f696e76616c69642062696e616e6365206f7261636c6520707269636500000000815291506112c2565b60208082528101610ced816118aa565b601c81525f602082017f757064617465644174206578636565647320626c6f636b2074696d6500000000815291506112c2565b60208082528101610ced816118ed565b601c81525f602082017f62696e616e6365206f7261636c65207072696365206578706972656400000000815291506112c2565b60208082528101610ced81611930565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ced57610ced611973565b80825b60018511156119d9578086048111156119b8576119b8611973565b60018516156119c657908102905b80026119d28560011c90565b945061199d565b94509492505050565b5f826119f057506001611060565b816119fc57505f611060565b8160018114611a125760028114611a1c57611a49565b6001915050611060565b60ff841115611a2d57611a2d611973565b8360020a915084821115611a4357611a43611973565b50611060565b5060208310610133831016604e8410600b8410161715611a7c575081810a83811115611a7757611a77611973565b611060565b611a89848484600161199a565b92509050818404811115611a9f57611a9f611973565b0292915050565b5f6110605f1984846119e2565b818102808215838204851417611acb57611acb611973565b5092915050565b602b81525f602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061144c565b60208082528101610ced81611ad2565b60408101611b378285610ec2565b8181036020830152610fd1818461101c565b801515611070565b8051610ced81611b49565b5f60208284031215611b6f57611b6f5f80fd5b5f610fd18484611b51565b60608101611b888286610ec2565b611b956020830185610ec2565b81810360408301526105eb818461101c56fe7365744d61785374616c65506572696f6428737472696e672c75696e7432353629a2646970667358221220e10415d7ffbd005634ab082e486b496d2db8ba3fddd8d01da5c6016db52b095564736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
