{
  "_format": "hh-sol-artifact-1",
  "contractName": "Datasets",
  "sourceName": "src/v0.8/module/dataset/Datasets.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "accessMethod",
          "type": "string"
        }
      ],
      "name": "DatasetMetadataAlreadyExist",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "datasetId",
          "type": "uint64"
        }
      ],
      "name": "InvalidDatasetState",
      "type": "error"
    },
    {
      "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": true,
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "DatasetApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "DatasetMetadataApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "DatasetMetadataRejected",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_provider",
          "type": "address"
        }
      ],
      "name": "DatasetMetadataSubmitted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "DatasetRejected",
      "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": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_size",
          "type": "uint64"
        }
      ],
      "name": "addDatasetUsedSize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "approveDataset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "approveDatasetMetadata",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "datasetsCount",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "escrow",
      "outputs": [
        {
          "internalType": "contract IEscrow",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "getDatasetMetadata",
      "outputs": [
        {
          "internalType": "string",
          "name": "title",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "industry",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "source",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "accessMethod",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "submitter",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "createdBlockNumber",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "sizeInBytes",
          "type": "uint64"
        },
        {
          "internalType": "bool",
          "name": "isPublic",
          "type": "bool"
        },
        {
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "getDatasetMetadataSubmitter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "getDatasetState",
      "outputs": [
        {
          "internalType": "enum DatasetType.State",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "getDatasetUsedSize",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getImplementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governanceAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_accessMethod",
          "type": "string"
        }
      ],
      "name": "hasDatasetMetadata",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_datasetsProof",
          "type": "address"
        }
      ],
      "name": "initDependencies",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governanceAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_roles",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_escrow",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "rejectDataset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "rejectDatasetMetadata",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "reportDatasetProofSubmitted",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "reportDatasetReplicaRequirementSubmitted",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "reportFundsEnough",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "reportFundsNotEnough",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "requireValidDatasetMetadata",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "roles",
      "outputs": [
        {
          "internalType": "contract IRoles",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_title",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_industry",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_description",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_source",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_accessMethod",
          "type": "string"
        },
        {
          "internalType": "uint64",
          "name": "_sizeInBytes",
          "type": "uint64"
        },
        {
          "internalType": "bool",
          "name": "_isPublic",
          "type": "bool"
        },
        {
          "internalType": "uint64",
          "name": "_version",
          "type": "uint64"
        }
      ],
      "name": "submitDatasetMetadata",
      "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": "0x60a06040523060805234801561001457600080fd5b5060805161339761004c60003960008181610558015281816105980152818161076f015281816107af01526109b001526133976000f3fe6080604052600436106101315760003560e01c80632b6a6d7a1461013657806333ff64491461016c5780633659cfe61461018e578063379c131e146101ae578063392f5f64146101db57806349421e6b146102085780634f1ef2861461022857806350cc54ab1461023b578063527535021461025b57806352d1902d146102885780635756d84a146102aa57806363d763ac146102ca57806368832a6b146102ea578063795053d3146103175780637c5705fb146103375780639c45216214610357578063a31e767114610377578063aaf10f4214610397578063ae3c1a6e146103ac578063c0c53b8b146103cc578063c33ff2a0146103ec578063cc07f20314610423578063e2fdcc1714610443578063e4714ed814610463578063ee03e10e14610483578063ef377d1d146104a3575b600080fd5b34801561014257600080fd5b506101566101513660046123cf565b6104c3565b604051610163919061243f565b60405180910390f35b34801561017857600080fd5b5061018c6101873660046123cf565b610527565b005b34801561019a57600080fd5b5061018c6101a9366004612478565b61054e565b3480156101ba57600080fd5b506065546101ce906001600160401b031681565b60405161016391906124a2565b3480156101e757600080fd5b506068546101fb906001600160a01b031681565b60405161016391906124e8565b34801561021457600080fd5b5061018c6102233660046123cf565b610616565b61018c6102363660046125f6565b610765565b34801561024757600080fd5b5061018c6102563660046123cf565b61081a565b34801561026757600080fd5b5061027b6102763660046123cf565b61097b565b6040516101639190612656565b34801561029457600080fd5b5061029d6109a3565b604051610163919061266a565b3480156102b657600080fd5b5061018c6102c53660046123cf565b610a00565b3480156102d657600080fd5b5061018c6102e5366004612678565b610a23565b3480156102f657600080fd5b5061030a6103053660046123cf565b610aa8565b60405161016391906126b3565b34801561032357600080fd5b5060675461027b906001600160a01b031681565b34801561034357600080fd5b5061018c6103523660046123cf565b610ad2565b34801561036357600080fd5b5061018c610372366004612478565b610af5565b34801561038357600080fd5b5061018c6103923660046126d4565b610bad565b3480156103a357600080fd5b5061027b610cda565b3480156103b857600080fd5b5061018c6103c73660046123cf565b610ce9565b3480156103d857600080fd5b5061018c6103e7366004612836565b610d0d565b3480156103f857600080fd5b5061040c6104073660046123cf565b610e23565b6040516101639b9a999897969594939291906128de565b34801561042f57600080fd5b5061030a61043e3660046129aa565b611273565b34801561044f57600080fd5b506069546101fb906001600160a01b031681565b34801561046f57600080fd5b5061018c61047e3660046123cf565b6112db565b34801561048f57600080fd5b506101ce61049e3660046123cf565b61143c565b3480156104af57600080fd5b5061018c6104be3660046123cf565b61148b565b600081806001600160401b03166000036104f85760405162461bcd60e51b81526004016104ef90612a14565b60405180910390fd5b6001600160401b038316600090815260666020526040902060080154600160401b900460ff1691505b50919050565b6001600160401b038116600090815260666020526040902061054a816004611785565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105965760405162461bcd60e51b81526004016104ef90612a5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105c8611994565b6001600160a01b0316146105ee5760405162461bcd60e51b81526004016104ef90612aa5565b6105f7816119b0565b6040805160008082526020820190925261061391839190611a49565b50565b80806001600160401b03166000036106405760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906005908390632b6a6d7a9061066a9085906004016124a2565b602060405180830381865afa158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190612acd565b60068111156106bc576106bc6123f0565b8160068111156106ce576106ce6123f0565b146106ee57816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b03163381146107195760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b038616600090815260666020526040902061073a81611b2b565b6040516001600160401b038816906000805160206132db83398151915290600090a250505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107ad5760405162461bcd60e51b81526004016104ef90612a5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107df611994565b6001600160a01b0316146108055760405162461bcd60e51b81526004016104ef90612aa5565b61080e826119b0565b61054a82826001611a49565b80806001600160401b03166000036108445760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906001908390632b6a6d7a9061086e9085906004016124a2565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190612acd565b60068111156108c0576108c06123f0565b8160068111156108d2576108d26123f0565b146108f257816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b031633811461091d5760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b038616600090815260666020526040902061093e81611b75565b6040516001600160401b038816907fc6542258ba8401255b1fd15ee4fab37bb91a180b999e1c3f40a5ca63a58af50f90600090a250505050505050565b6001600160401b038116600090815260666020526040812061099c81611bbf565b9392505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ed5760405162461bcd60e51b81526004016104ef90612b87565b5060008051602061331b83398151915290565b6001600160401b038116600090815260666020526040902061054a816005611785565b81806001600160401b0316600003610a4d5760405162461bcd60e51b81526004016104ef90612a14565b6001600160401b038084166000908152606660205260408120600881018054919386939192610a7e91859116612bad565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555050505050565b6001600160401b0381166000908152606660205260408120610ac981611c01565b50600192915050565b6001600160401b038116600090815260666020526040902061054a816003611785565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d1485490610b2c9084903390600401612be0565b602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612c06565b610b895760405162461bcd60e51b81526004016104ef90612c58565b5050606a80546001600160a01b0319166001600160a01b0392909216919091179055565b60405163cc07f20360e01b815230908590829063cc07f20390610bd4908490600401612c68565b602060405180830381865afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190612c06565b15610c35578060405163972de51960e01b81526004016104ef9190612c68565b606580546001600160401b0316906000610c4e83612c79565b82546101009290920a6001600160401b038181021990931691831602179091556065541660009081526066602052604090209050610c94818d8d8d8d8d8d8d8d8d611f74565b60655460405133916001600160401b0316907fdbef5fb8ee173d73266166645e184e7fefac6651f7b7adc1e7985a0f46d2be4390600090a3505050505050505050505050565b6000610ce4611994565b905090565b6001600160401b03811660009081526066602052604081209061054a908290611785565b600054610100900460ff1615808015610d2d5750600054600160ff909116105b80610d4e5750610d3c30612069565b158015610d4e575060005460ff166001145b610d6a5760405162461bcd60e51b81526004016104ef90612cee565b6000805460ff191660011790558015610d8d576000805461ff0019166101001790555b606780546001600160a01b038087166001600160a01b031992831617909255606880548684169083161790556069805492851692909116919091179055610dd2612078565b8015610e1d576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610e1490600190612d12565b60405180910390a15b50505050565b60608060608060608060008060008060008b806001600160401b0316600003610e5e5760405162461bcd60e51b81526004016104ef90612a14565b6001600160401b038d16600090815260666020526040812080549091908290610e8690612d36565b905011610ea55760405162461bcd60e51b81526004016104ef90612d8a565b6006810154600782015482548392600184019260028501926003860192600487019260058801926001600160a01b038316926001600160401b03600160a01b9091048116928082169260ff600160401b83041692600160481b909204909116908b90610f1090612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3c90612d36565b8015610f895780601f10610f5e57610100808354040283529160200191610f89565b820191906000526020600020905b815481529060010190602001808311610f6c57829003601f168201915b50505050509a50898054610f9c90612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc890612d36565b80156110155780601f10610fea57610100808354040283529160200191611015565b820191906000526020600020905b815481529060010190602001808311610ff857829003601f168201915b5050505050995088805461102890612d36565b80601f016020809104026020016040519081016040528092919081815260200182805461105490612d36565b80156110a15780601f10611076576101008083540402835291602001916110a1565b820191906000526020600020905b81548152906001019060200180831161108457829003601f168201915b505050505098508780546110b490612d36565b80601f01602080910402602001604051908101604052809291908181526020018280546110e090612d36565b801561112d5780601f106111025761010080835404028352916020019161112d565b820191906000526020600020905b81548152906001019060200180831161111057829003601f168201915b5050505050975086805461114090612d36565b80601f016020809104026020016040519081016040528092919081815260200182805461116c90612d36565b80156111b95780601f1061118e576101008083540402835291602001916111b9565b820191906000526020600020905b81548152906001019060200180831161119c57829003601f168201915b505050505096508580546111cc90612d36565b80601f01602080910402602001604051908101604052809291908181526020018280546111f890612d36565b80156112455780601f1061121a57610100808354040283529160200191611245565b820191906000526020600020905b81548152906001019060200180831161122857829003601f168201915b505050505095509c509c509c509c509c509c509c509c509c509c509c50505091939597999b90929496989a50565b600060015b6065546001600160401b03908116908216116112d2576001600160401b03811660009081526066602052604090206112b081856120a1565b156112bf575060019392505050565b50806112ca81612c79565b915050611278565b50600092915050565b80806001600160401b03166000036113055760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906001908390632b6a6d7a9061132f9085906004016124a2565b602060405180830381865afa15801561134c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113709190612acd565b6006811115611381576113816123f0565b816006811115611393576113936123f0565b146113b357816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b03163381146113de5760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b03861660009081526066602052604090206113ff816120cf565b6040516001600160401b038816907fd4d52f4d2ee1c7789e6771c84aacb4e5610db8c7a725caeaeff18e8c1b988a4990600090a250505050505050565b600081806001600160401b03166000036114685760405162461bcd60e51b81526004016104ef90612a14565b50506001600160401b039081166000908152606660205260409020600801541690565b80806001600160401b03166000036114b55760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906005908390632b6a6d7a906114df9085906004016124a2565b602060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115209190612acd565b6006811115611531576115316123f0565b816006811115611543576115436123f0565b1461156357816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b031633811461158e5760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b03861660009081526066602052604080822060695460068201549251632093cf7160e11b81529193926001600160a01b03918216926341279ee2926115e39286929116908d90600401612dc8565b602060405180830381865afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190612e01565b606a546040516305ce199d60e31b81529192506001600160a01b031690632e70cce890611655908b906004016124a2565b602060405180830381865afa158015611672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116969190612e01565b811061174f576069546006830154604051630cad8cc560e31b81526001600160a01b039283169263656c6628926116db92600092909116908d90600190600401612e50565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b5050505061171682612119565b6040516001600160401b038916907f41556162b6fcd672c4c54031c35825457e7e0f6887389d5e51ce62142de955f990600090a261177b565b61175882611b2b565b6040516001600160401b038916906000805160206132db83398151915290600090a25b5050505050505050565b6008820154600160401b900460ff166000808360078111156117a9576117a96123f0565b036117d05760008260068111156117c2576117c26123f0565b036117cb575060015b611949565b60018360078111156117e4576117e46123f0565b0361180b5760015b8260068111156117fe576117fe6123f0565b036117cb57506002611949565b600283600781111561181f5761181f6123f0565b03611845576001826006811115611838576118386123f0565b036117cb57506003611949565b6003836007811115611859576118596123f0565b0361187f576002826006811115611872576118726123f0565b036117cb57506004611949565b6004836007811115611893576118936123f0565b0361189f5760046117ec565b60058360078111156118b3576118b36123f0565b036118d95760028260068111156118cc576118cc6123f0565b036117cb57506005611949565b60068360078111156118ed576118ed6123f0565b03611913576005826006811115611906576119066123f0565b036117cb57506006611949565b6007836007811115611927576119276123f0565b03611949576005826006811115611940576119406123f0565b03611949575060025b600081600681111561195d5761195d6123f0565b14610e1d5760088401805482919060ff60401b1916600160401b836006811115611989576119896123f0565b021790555050505050565b60008051602061331b833981519152546001600160a01b031690565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d14854906119e79084903390600401612be0565b602060405180830381865afa158015611a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a289190612c06565b611a445760405162461bcd60e51b81526004016104ef90612c58565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a7c57611a4483612163565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ad6575060408051601f3d908101601f19168201909252611ad391810190612e01565b60015b611af25760405162461bcd60e51b81526004016104ef90612ed9565b60008051602061331b8339815191528114611b1f5760405162461bcd60e51b81526004016104ef90612f2f565b50611a448383836121b7565b60056008820154600160401b900460ff166006811115611b4d57611b4d6123f0565b14611b6a5760405162461bcd60e51b81526004016104ef90612f63565b610613816007611785565b60016008820154600160401b900460ff166006811115611b9757611b976123f0565b14611bb45760405162461bcd60e51b81526004016104ef90612f63565b610613816002611785565b805460009081908390611bd190612d36565b905011611bf05760405162461bcd60e51b81526004016104ef90612d8a565b50600601546001600160a01b031690565b8054610613908290611c1290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611c3e90612d36565b8015611c8b5780601f10611c6057610100808354040283529160200191611c8b565b820191906000526020600020905b815481529060010190602001808311611c6e57829003601f168201915b5050505050826000016001018054611ca290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611cce90612d36565b8015611d1b5780601f10611cf057610100808354040283529160200191611d1b565b820191906000526020600020905b815481529060010190602001808311611cfe57829003601f168201915b5050505050836000016002018054611d3290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5e90612d36565b8015611dab5780601f10611d8057610100808354040283529160200191611dab565b820191906000526020600020905b815481529060010190602001808311611d8e57829003601f168201915b5050505050846000016003018054611dc290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611dee90612d36565b8015611e3b5780601f10611e1057610100808354040283529160200191611e3b565b820191906000526020600020905b815481529060010190602001808311611e1e57829003601f168201915b5050505050856000016004018054611e5290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7e90612d36565b8015611ecb5780601f10611ea057610100808354040283529160200191611ecb565b820191906000526020600020905b815481529060010190602001808311611eae57829003601f168201915b5050505050866000016005018054611ee290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0e90612d36565b8015611f5b5780601f10611f3057610100808354040283529160200191611f5b565b820191906000526020600020905b815481529060010190602001808311611f3e57829003601f168201915b5050505060078901546001600160401b031690506121dc565b611f8c898989898989896001600160401b03166121dc565b89611f978a82613037565b5060018a01611fa68982613037565b5060028a01611fb58882613037565b5060038a01611fc48782613037565b5060048a01611fd38682613037565b5060058a01611fe28582613037565b5060068a0180546001600160401b03438116600160a01b02600160a01b600160e01b031933166001600160e01b031990931692909217919091179091556007909a018054918b16600160481b02600160481b600160881b0319931515600160401b026001600160481b031990931694909b1693909317171697909717909655505050505050565b6001600160a01b03163b151590565b600054610100900460ff1661209f5760405162461bcd60e51b81526004016104ef9061313d565b565b80516020820120604051600091906120bd9060058601906131bf565b60405180910390201490505b92915050565b60016008820154600160401b900460ff1660068111156120f1576120f16123f0565b1461210e5760405162461bcd60e51b81526004016104ef90612f63565b610613816001611785565b60056008820154600160401b900460ff16600681111561213b5761213b6123f0565b146121585760405162461bcd60e51b81526004016104ef90612f63565b610613816006611785565b61216c81612069565b6121885760405162461bcd60e51b81526004016104ef90613215565b60008051602061331b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6121c083612253565b6000825111806121cd5750805b15611a4457610e1d8383612293565b600087511180156121ee575060008651115b80156121fb575060008551115b8015612208575060008451115b8015612215575060008351115b8015612222575060008251115b801561222e5750600081115b61224a5760405162461bcd60e51b81526004016104ef90613258565b50505050505050565b61225c81612163565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061099c838360405180606001604052806027815260200161333b602791396060600080856001600160a01b0316856040516122d0919061328a565b600060405180830381855af49150503d806000811461230b576040519150601f19603f3d011682016040523d82523d6000602084013e612310565b606091505b50915091506123218683838761232b565b9695505050505050565b606083156123685782516000036123615761234585612069565b6123615760405162461bcd60e51b81526004016104ef906132ca565b5081612372565b612372838361237a565b949350505050565b81511561238a5781518083602001fd5b8060405162461bcd60e51b81526004016104ef9190612c68565b6001600160401b031690565b6123b9816123a4565b811461061357600080fd5b80356120c9816123b0565b6000602082840312156123e4576123e4600080fd5b600061237284846123c4565b634e487b7160e01b600052602160045260246000fd5b60078110610613576106136123f0565b8061242081612406565b919050565b60006120c982612416565b61243981612425565b82525050565b602081016120c98284612430565b6001600160a01b031690565b60006120c98261244d565b6123b981612459565b80356120c981612464565b60006020828403121561248d5761248d600080fd5b6000612372848461246d565b612439816123a4565b602081016120c98284612499565b60006120c96124c46124c18461244d565b90565b61244d565b60006120c9826124b0565b60006120c9826124c9565b612439816124d4565b602081016120c982846124df565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b61251f826124f6565b81018181106001600160401b038211171561253c5761253c612500565b6040525050565b600061254e60405190565b90506124208282612516565b60006001600160401b0382111561257357612573612500565b61257c826124f6565b60200192915050565b82818337506000910152565b60006125a461259f8461255a565b612543565b9050828152602081018484840111156125bf576125bf600080fd5b6125ca848285612585565b509392505050565b600082601f8301126125e6576125e6600080fd5b8135612372848260208601612591565b6000806040838503121561260c5761260c600080fd5b6000612618858561246d565b92505060208301356001600160401b0381111561263757612637600080fd5b612643858286016125d2565b9150509250929050565b61243981612459565b602081016120c9828461264d565b80612439565b602081016120c98284612664565b6000806040838503121561268e5761268e600080fd5b600061269a85856123c4565b9250506020612643858286016123c4565b801515612439565b602081016120c982846126ab565b8015156123b9565b80356120c9816126c1565b60008060008060008060008060006101208a8c0312156126f6576126f6600080fd5b89356001600160401b0381111561270f5761270f600080fd5b61271b8c828d016125d2565b99505060208a01356001600160401b0381111561273a5761273a600080fd5b6127468c828d016125d2565b98505060408a01356001600160401b0381111561276557612765600080fd5b6127718c828d016125d2565b97505060608a01356001600160401b0381111561279057612790600080fd5b61279c8c828d016125d2565b96505060808a01356001600160401b038111156127bb576127bb600080fd5b6127c78c828d016125d2565b95505060a08a01356001600160401b038111156127e6576127e6600080fd5b6127f28c828d016125d2565b94505060c06128038c828d016123c4565b93505060e06128148c828d016126c9565b9250506101006128268c828d016123c4565b9150509295985092959850929598565b60008060006060848603121561284e5761284e600080fd5b600061285a868661246d565b935050602061286b8682870161246d565b925050604061287c8682870161246d565b9150509250925092565b60005b838110156128a1578181015183820152602001612889565b50506000910152565b60006128b4825190565b8084526020840193506128cb818560208601612886565b6128d4816124f6565b9093019392505050565b61016080825281016128f0818e6128aa565b90508181036020830152612904818d6128aa565b90508181036040830152612918818c6128aa565b9050818103606083015261292c818b6128aa565b90508181036080830152612940818a6128aa565b905081810360a083015261295481896128aa565b905061296360c083018861264d565b61297060e0830187612499565b61297e610100830186612499565b61298c6101208301856126ab565b61299a610140830184612499565b9c9b505050505050505050505050565b6000602082840312156129bf576129bf600080fd5b81356001600160401b038111156129d8576129d8600080fd5b612372848285016125d2565b601681526000602082017556616c7565206d757374206e6f74206265207a65726f60501b815291505b5060200190565b602080825281016120c9816129e4565b602c81526000602082016000805160206132fb83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291505b5060400190565b602080825281016120c981612a24565b602c81526000602082016000805160206132fb83398151915281526b6163746976652070726f787960a01b60208201529150612a57565b602080825281016120c981612a6e565b6007811061061357600080fd5b80516120c981612ab5565b600060208284031215612ae257612ae2600080fd5b60006123728484612ac2565b601d81526000602082017f4f6e6c7920616c6c6f77656420616464726573732063616e2063616c6c00000081529150612a0d565b602080825281016120c981612aee565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60208201529150612a57565b602080825281016120c981612b32565b634e487b7160e01b600052601160045260246000fd5b6000612bb8826123a4565b9150612bc3836123a4565b9250508082016001600160401b038111156120c9576120c9612b97565b60408101612bee8285612664565b61099c602083018461264d565b80516120c9816126c1565b600060208284031215612c1b57612c1b600080fd5b60006123728484612bfb565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b81529150612a0d565b602080825281016120c981612c27565b6020808252810161099c81846128aa565b6000612c84826123a4565b91506001600160401b038203612c9c57612c9c612b97565b5060010190565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150612a57565b602080825281016120c981612ca3565b600060ff82166120c9565b61243981612cfe565b602081016120c98284612d09565b634e487b7160e01b600052602260045260246000fd5b600281046001821680612d4a57607f821691505b60208210810361052157610521612d20565b601781526000602082017613595d1859185d1848191bd95cc81b9bdd08195e1a5cdd604a1b81529150612a0d565b602080825281016120c981612d5c565b60088110610613576106136123f0565b8061242081612d9a565b60006120c982612daa565b61243981612db4565b60608101612dd68286612dbf565b612de3602083018561264d565b6123726040830184612499565b806123b9565b80516120c981612df0565b600060208284031215612e1657612e16600080fd5b60006123728484612df6565b60028110610613576106136123f0565b8061242081612e22565b60006120c982612e32565b61243981612e3c565b60808101612e5e8287612dbf565b612e6b602083018661264d565b612e786040830185612499565b612e856060830184612e47565b95945050505050565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529150612a57565b602080825281016120c981612e8e565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529150612a57565b602080825281016120c981612ee9565b600d81526000602082016c496e76616c696420737461746560981b81529150612a0d565b602080825281016120c981612f3f565b60006120c96124c18381565b612f8883612f73565b815460001960089490940293841b1916921b91909117905550565b6000611a44818484612f7f565b8181101561054a57612fc3600082612fa3565b600101612fb0565b601f821115611a44576000818152602090206020601f85010481016020851015612ff25750805b6130046020601f860104830182612fb0565b5050505050565b6000196008929092029190911c191690565b6000613029838361300b565b600290930290921792915050565b81516001600160401b0381111561305057613050612500565b61305a8254612d36565b613065828285612fcb565b6020601f83116001811461309357600084156130815750858201515b61308b858261301d565b8655506130ed565b600085815260208120601f198616915b828110156130c357888501518255602094850194600190920191016130a3565b868310156130e057848901516130dc601f89168261300b565b8355505b6001600288020188555050505b505050505050565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150612a57565b602080825281016120c9816130f5565b6000815461315a81612d36565b6001821680156131715760018114613186576131b6565b60ff19831686528115158202860193506131b6565b60008581526020902060005b838110156131ae57815488820152600190910190602001613192565b838801955050505b50505092915050565b600061099c828461314d565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529150612a57565b602080825281016120c9816131cb565b601c81526000602082017b616c6c20706172616d73206d757374206265206e6f6e2d656d70747960201b81529150612a0d565b602080825281016120c981613225565b6000613272825190565b613280818560208601612886565b9290920192915050565b600061099c8284613268565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612a0d565b602080825281016120c98161329656fe571b4e518ce1c666c0cfdad09d8001b252f51f088e4c54ebde3bd2a4d9d2ed5c46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203738aa4301dfbe58bacc293faa8114079c2b28dd08b4e150be8aa4a6d77d640a64736f6c63430008150033",
  "deployedBytecode": "0x6080604052600436106101315760003560e01c80632b6a6d7a1461013657806333ff64491461016c5780633659cfe61461018e578063379c131e146101ae578063392f5f64146101db57806349421e6b146102085780634f1ef2861461022857806350cc54ab1461023b578063527535021461025b57806352d1902d146102885780635756d84a146102aa57806363d763ac146102ca57806368832a6b146102ea578063795053d3146103175780637c5705fb146103375780639c45216214610357578063a31e767114610377578063aaf10f4214610397578063ae3c1a6e146103ac578063c0c53b8b146103cc578063c33ff2a0146103ec578063cc07f20314610423578063e2fdcc1714610443578063e4714ed814610463578063ee03e10e14610483578063ef377d1d146104a3575b600080fd5b34801561014257600080fd5b506101566101513660046123cf565b6104c3565b604051610163919061243f565b60405180910390f35b34801561017857600080fd5b5061018c6101873660046123cf565b610527565b005b34801561019a57600080fd5b5061018c6101a9366004612478565b61054e565b3480156101ba57600080fd5b506065546101ce906001600160401b031681565b60405161016391906124a2565b3480156101e757600080fd5b506068546101fb906001600160a01b031681565b60405161016391906124e8565b34801561021457600080fd5b5061018c6102233660046123cf565b610616565b61018c6102363660046125f6565b610765565b34801561024757600080fd5b5061018c6102563660046123cf565b61081a565b34801561026757600080fd5b5061027b6102763660046123cf565b61097b565b6040516101639190612656565b34801561029457600080fd5b5061029d6109a3565b604051610163919061266a565b3480156102b657600080fd5b5061018c6102c53660046123cf565b610a00565b3480156102d657600080fd5b5061018c6102e5366004612678565b610a23565b3480156102f657600080fd5b5061030a6103053660046123cf565b610aa8565b60405161016391906126b3565b34801561032357600080fd5b5060675461027b906001600160a01b031681565b34801561034357600080fd5b5061018c6103523660046123cf565b610ad2565b34801561036357600080fd5b5061018c610372366004612478565b610af5565b34801561038357600080fd5b5061018c6103923660046126d4565b610bad565b3480156103a357600080fd5b5061027b610cda565b3480156103b857600080fd5b5061018c6103c73660046123cf565b610ce9565b3480156103d857600080fd5b5061018c6103e7366004612836565b610d0d565b3480156103f857600080fd5b5061040c6104073660046123cf565b610e23565b6040516101639b9a999897969594939291906128de565b34801561042f57600080fd5b5061030a61043e3660046129aa565b611273565b34801561044f57600080fd5b506069546101fb906001600160a01b031681565b34801561046f57600080fd5b5061018c61047e3660046123cf565b6112db565b34801561048f57600080fd5b506101ce61049e3660046123cf565b61143c565b3480156104af57600080fd5b5061018c6104be3660046123cf565b61148b565b600081806001600160401b03166000036104f85760405162461bcd60e51b81526004016104ef90612a14565b60405180910390fd5b6001600160401b038316600090815260666020526040902060080154600160401b900460ff1691505b50919050565b6001600160401b038116600090815260666020526040902061054a816004611785565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105965760405162461bcd60e51b81526004016104ef90612a5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105c8611994565b6001600160a01b0316146105ee5760405162461bcd60e51b81526004016104ef90612aa5565b6105f7816119b0565b6040805160008082526020820190925261061391839190611a49565b50565b80806001600160401b03166000036106405760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906005908390632b6a6d7a9061066a9085906004016124a2565b602060405180830381865afa158015610687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ab9190612acd565b60068111156106bc576106bc6123f0565b8160068111156106ce576106ce6123f0565b146106ee57816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b03163381146107195760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b038616600090815260666020526040902061073a81611b2b565b6040516001600160401b038816906000805160206132db83398151915290600090a250505050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107ad5760405162461bcd60e51b81526004016104ef90612a5e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107df611994565b6001600160a01b0316146108055760405162461bcd60e51b81526004016104ef90612aa5565b61080e826119b0565b61054a82826001611a49565b80806001600160401b03166000036108445760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906001908390632b6a6d7a9061086e9085906004016124a2565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190612acd565b60068111156108c0576108c06123f0565b8160068111156108d2576108d26123f0565b146108f257816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b031633811461091d5760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b038616600090815260666020526040902061093e81611b75565b6040516001600160401b038816907fc6542258ba8401255b1fd15ee4fab37bb91a180b999e1c3f40a5ca63a58af50f90600090a250505050505050565b6001600160401b038116600090815260666020526040812061099c81611bbf565b9392505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109ed5760405162461bcd60e51b81526004016104ef90612b87565b5060008051602061331b83398151915290565b6001600160401b038116600090815260666020526040902061054a816005611785565b81806001600160401b0316600003610a4d5760405162461bcd60e51b81526004016104ef90612a14565b6001600160401b038084166000908152606660205260408120600881018054919386939192610a7e91859116612bad565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555050505050565b6001600160401b0381166000908152606660205260408120610ac981611c01565b50600192915050565b6001600160401b038116600090815260666020526040902061054a816003611785565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d1485490610b2c9084903390600401612be0565b602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612c06565b610b895760405162461bcd60e51b81526004016104ef90612c58565b5050606a80546001600160a01b0319166001600160a01b0392909216919091179055565b60405163cc07f20360e01b815230908590829063cc07f20390610bd4908490600401612c68565b602060405180830381865afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190612c06565b15610c35578060405163972de51960e01b81526004016104ef9190612c68565b606580546001600160401b0316906000610c4e83612c79565b82546101009290920a6001600160401b038181021990931691831602179091556065541660009081526066602052604090209050610c94818d8d8d8d8d8d8d8d8d611f74565b60655460405133916001600160401b0316907fdbef5fb8ee173d73266166645e184e7fefac6651f7b7adc1e7985a0f46d2be4390600090a3505050505050505050505050565b6000610ce4611994565b905090565b6001600160401b03811660009081526066602052604081209061054a908290611785565b600054610100900460ff1615808015610d2d5750600054600160ff909116105b80610d4e5750610d3c30612069565b158015610d4e575060005460ff166001145b610d6a5760405162461bcd60e51b81526004016104ef90612cee565b6000805460ff191660011790558015610d8d576000805461ff0019166101001790555b606780546001600160a01b038087166001600160a01b031992831617909255606880548684169083161790556069805492851692909116919091179055610dd2612078565b8015610e1d576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610e1490600190612d12565b60405180910390a15b50505050565b60608060608060608060008060008060008b806001600160401b0316600003610e5e5760405162461bcd60e51b81526004016104ef90612a14565b6001600160401b038d16600090815260666020526040812080549091908290610e8690612d36565b905011610ea55760405162461bcd60e51b81526004016104ef90612d8a565b6006810154600782015482548392600184019260028501926003860192600487019260058801926001600160a01b038316926001600160401b03600160a01b9091048116928082169260ff600160401b83041692600160481b909204909116908b90610f1090612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3c90612d36565b8015610f895780601f10610f5e57610100808354040283529160200191610f89565b820191906000526020600020905b815481529060010190602001808311610f6c57829003601f168201915b50505050509a50898054610f9c90612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc890612d36565b80156110155780601f10610fea57610100808354040283529160200191611015565b820191906000526020600020905b815481529060010190602001808311610ff857829003601f168201915b5050505050995088805461102890612d36565b80601f016020809104026020016040519081016040528092919081815260200182805461105490612d36565b80156110a15780601f10611076576101008083540402835291602001916110a1565b820191906000526020600020905b81548152906001019060200180831161108457829003601f168201915b505050505098508780546110b490612d36565b80601f01602080910402602001604051908101604052809291908181526020018280546110e090612d36565b801561112d5780601f106111025761010080835404028352916020019161112d565b820191906000526020600020905b81548152906001019060200180831161111057829003601f168201915b5050505050975086805461114090612d36565b80601f016020809104026020016040519081016040528092919081815260200182805461116c90612d36565b80156111b95780601f1061118e576101008083540402835291602001916111b9565b820191906000526020600020905b81548152906001019060200180831161119c57829003601f168201915b505050505096508580546111cc90612d36565b80601f01602080910402602001604051908101604052809291908181526020018280546111f890612d36565b80156112455780601f1061121a57610100808354040283529160200191611245565b820191906000526020600020905b81548152906001019060200180831161122857829003601f168201915b505050505095509c509c509c509c509c509c509c509c509c509c509c50505091939597999b90929496989a50565b600060015b6065546001600160401b03908116908216116112d2576001600160401b03811660009081526066602052604090206112b081856120a1565b156112bf575060019392505050565b50806112ca81612c79565b915050611278565b50600092915050565b80806001600160401b03166000036113055760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906001908390632b6a6d7a9061132f9085906004016124a2565b602060405180830381865afa15801561134c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113709190612acd565b6006811115611381576113816123f0565b816006811115611393576113936123f0565b146113b357816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b03163381146113de5760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b03861660009081526066602052604090206113ff816120cf565b6040516001600160401b038816907fd4d52f4d2ee1c7789e6771c84aacb4e5610db8c7a725caeaeff18e8c1b988a4990600090a250505050505050565b600081806001600160401b03166000036114685760405162461bcd60e51b81526004016104ef90612a14565b50506001600160401b039081166000908152606660205260409020600801541690565b80806001600160401b03166000036114b55760405162461bcd60e51b81526004016104ef90612a14565b6040516315b536bd60e11b8152309083906005908390632b6a6d7a906114df9085906004016124a2565b602060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115209190612acd565b6006811115611531576115316123f0565b816006811115611543576115436123f0565b1461156357816040516311bc7abb60e21b81526004016104ef91906124a2565b6067546001600160a01b031633811461158e5760405162461bcd60e51b81526004016104ef90612b22565b6001600160401b03861660009081526066602052604080822060695460068201549251632093cf7160e11b81529193926001600160a01b03918216926341279ee2926115e39286929116908d90600401612dc8565b602060405180830381865afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190612e01565b606a546040516305ce199d60e31b81529192506001600160a01b031690632e70cce890611655908b906004016124a2565b602060405180830381865afa158015611672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116969190612e01565b811061174f576069546006830154604051630cad8cc560e31b81526001600160a01b039283169263656c6628926116db92600092909116908d90600190600401612e50565b600060405180830381600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b5050505061171682612119565b6040516001600160401b038916907f41556162b6fcd672c4c54031c35825457e7e0f6887389d5e51ce62142de955f990600090a261177b565b61175882611b2b565b6040516001600160401b038916906000805160206132db83398151915290600090a25b5050505050505050565b6008820154600160401b900460ff166000808360078111156117a9576117a96123f0565b036117d05760008260068111156117c2576117c26123f0565b036117cb575060015b611949565b60018360078111156117e4576117e46123f0565b0361180b5760015b8260068111156117fe576117fe6123f0565b036117cb57506002611949565b600283600781111561181f5761181f6123f0565b03611845576001826006811115611838576118386123f0565b036117cb57506003611949565b6003836007811115611859576118596123f0565b0361187f576002826006811115611872576118726123f0565b036117cb57506004611949565b6004836007811115611893576118936123f0565b0361189f5760046117ec565b60058360078111156118b3576118b36123f0565b036118d95760028260068111156118cc576118cc6123f0565b036117cb57506005611949565b60068360078111156118ed576118ed6123f0565b03611913576005826006811115611906576119066123f0565b036117cb57506006611949565b6007836007811115611927576119276123f0565b03611949576005826006811115611940576119406123f0565b03611949575060025b600081600681111561195d5761195d6123f0565b14610e1d5760088401805482919060ff60401b1916600160401b836006811115611989576119896123f0565b021790555050505050565b60008051602061331b833981519152546001600160a01b031690565b606854604051632474521560e21b81526001600160a01b039091169060009082906391d14854906119e79084903390600401612be0565b602060405180830381865afa158015611a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a289190612c06565b611a445760405162461bcd60e51b81526004016104ef90612c58565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a7c57611a4483612163565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ad6575060408051601f3d908101601f19168201909252611ad391810190612e01565b60015b611af25760405162461bcd60e51b81526004016104ef90612ed9565b60008051602061331b8339815191528114611b1f5760405162461bcd60e51b81526004016104ef90612f2f565b50611a448383836121b7565b60056008820154600160401b900460ff166006811115611b4d57611b4d6123f0565b14611b6a5760405162461bcd60e51b81526004016104ef90612f63565b610613816007611785565b60016008820154600160401b900460ff166006811115611b9757611b976123f0565b14611bb45760405162461bcd60e51b81526004016104ef90612f63565b610613816002611785565b805460009081908390611bd190612d36565b905011611bf05760405162461bcd60e51b81526004016104ef90612d8a565b50600601546001600160a01b031690565b8054610613908290611c1290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611c3e90612d36565b8015611c8b5780601f10611c6057610100808354040283529160200191611c8b565b820191906000526020600020905b815481529060010190602001808311611c6e57829003601f168201915b5050505050826000016001018054611ca290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611cce90612d36565b8015611d1b5780601f10611cf057610100808354040283529160200191611d1b565b820191906000526020600020905b815481529060010190602001808311611cfe57829003601f168201915b5050505050836000016002018054611d3290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5e90612d36565b8015611dab5780601f10611d8057610100808354040283529160200191611dab565b820191906000526020600020905b815481529060010190602001808311611d8e57829003601f168201915b5050505050846000016003018054611dc290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611dee90612d36565b8015611e3b5780601f10611e1057610100808354040283529160200191611e3b565b820191906000526020600020905b815481529060010190602001808311611e1e57829003601f168201915b5050505050856000016004018054611e5290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7e90612d36565b8015611ecb5780601f10611ea057610100808354040283529160200191611ecb565b820191906000526020600020905b815481529060010190602001808311611eae57829003601f168201915b5050505050866000016005018054611ee290612d36565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0e90612d36565b8015611f5b5780601f10611f3057610100808354040283529160200191611f5b565b820191906000526020600020905b815481529060010190602001808311611f3e57829003601f168201915b5050505060078901546001600160401b031690506121dc565b611f8c898989898989896001600160401b03166121dc565b89611f978a82613037565b5060018a01611fa68982613037565b5060028a01611fb58882613037565b5060038a01611fc48782613037565b5060048a01611fd38682613037565b5060058a01611fe28582613037565b5060068a0180546001600160401b03438116600160a01b02600160a01b600160e01b031933166001600160e01b031990931692909217919091179091556007909a018054918b16600160481b02600160481b600160881b0319931515600160401b026001600160481b031990931694909b1693909317171697909717909655505050505050565b6001600160a01b03163b151590565b600054610100900460ff1661209f5760405162461bcd60e51b81526004016104ef9061313d565b565b80516020820120604051600091906120bd9060058601906131bf565b60405180910390201490505b92915050565b60016008820154600160401b900460ff1660068111156120f1576120f16123f0565b1461210e5760405162461bcd60e51b81526004016104ef90612f63565b610613816001611785565b60056008820154600160401b900460ff16600681111561213b5761213b6123f0565b146121585760405162461bcd60e51b81526004016104ef90612f63565b610613816006611785565b61216c81612069565b6121885760405162461bcd60e51b81526004016104ef90613215565b60008051602061331b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6121c083612253565b6000825111806121cd5750805b15611a4457610e1d8383612293565b600087511180156121ee575060008651115b80156121fb575060008551115b8015612208575060008451115b8015612215575060008351115b8015612222575060008251115b801561222e5750600081115b61224a5760405162461bcd60e51b81526004016104ef90613258565b50505050505050565b61225c81612163565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061099c838360405180606001604052806027815260200161333b602791396060600080856001600160a01b0316856040516122d0919061328a565b600060405180830381855af49150503d806000811461230b576040519150601f19603f3d011682016040523d82523d6000602084013e612310565b606091505b50915091506123218683838761232b565b9695505050505050565b606083156123685782516000036123615761234585612069565b6123615760405162461bcd60e51b81526004016104ef906132ca565b5081612372565b612372838361237a565b949350505050565b81511561238a5781518083602001fd5b8060405162461bcd60e51b81526004016104ef9190612c68565b6001600160401b031690565b6123b9816123a4565b811461061357600080fd5b80356120c9816123b0565b6000602082840312156123e4576123e4600080fd5b600061237284846123c4565b634e487b7160e01b600052602160045260246000fd5b60078110610613576106136123f0565b8061242081612406565b919050565b60006120c982612416565b61243981612425565b82525050565b602081016120c98284612430565b6001600160a01b031690565b60006120c98261244d565b6123b981612459565b80356120c981612464565b60006020828403121561248d5761248d600080fd5b6000612372848461246d565b612439816123a4565b602081016120c98284612499565b60006120c96124c46124c18461244d565b90565b61244d565b60006120c9826124b0565b60006120c9826124c9565b612439816124d4565b602081016120c982846124df565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b61251f826124f6565b81018181106001600160401b038211171561253c5761253c612500565b6040525050565b600061254e60405190565b90506124208282612516565b60006001600160401b0382111561257357612573612500565b61257c826124f6565b60200192915050565b82818337506000910152565b60006125a461259f8461255a565b612543565b9050828152602081018484840111156125bf576125bf600080fd5b6125ca848285612585565b509392505050565b600082601f8301126125e6576125e6600080fd5b8135612372848260208601612591565b6000806040838503121561260c5761260c600080fd5b6000612618858561246d565b92505060208301356001600160401b0381111561263757612637600080fd5b612643858286016125d2565b9150509250929050565b61243981612459565b602081016120c9828461264d565b80612439565b602081016120c98284612664565b6000806040838503121561268e5761268e600080fd5b600061269a85856123c4565b9250506020612643858286016123c4565b801515612439565b602081016120c982846126ab565b8015156123b9565b80356120c9816126c1565b60008060008060008060008060006101208a8c0312156126f6576126f6600080fd5b89356001600160401b0381111561270f5761270f600080fd5b61271b8c828d016125d2565b99505060208a01356001600160401b0381111561273a5761273a600080fd5b6127468c828d016125d2565b98505060408a01356001600160401b0381111561276557612765600080fd5b6127718c828d016125d2565b97505060608a01356001600160401b0381111561279057612790600080fd5b61279c8c828d016125d2565b96505060808a01356001600160401b038111156127bb576127bb600080fd5b6127c78c828d016125d2565b95505060a08a01356001600160401b038111156127e6576127e6600080fd5b6127f28c828d016125d2565b94505060c06128038c828d016123c4565b93505060e06128148c828d016126c9565b9250506101006128268c828d016123c4565b9150509295985092959850929598565b60008060006060848603121561284e5761284e600080fd5b600061285a868661246d565b935050602061286b8682870161246d565b925050604061287c8682870161246d565b9150509250925092565b60005b838110156128a1578181015183820152602001612889565b50506000910152565b60006128b4825190565b8084526020840193506128cb818560208601612886565b6128d4816124f6565b9093019392505050565b61016080825281016128f0818e6128aa565b90508181036020830152612904818d6128aa565b90508181036040830152612918818c6128aa565b9050818103606083015261292c818b6128aa565b90508181036080830152612940818a6128aa565b905081810360a083015261295481896128aa565b905061296360c083018861264d565b61297060e0830187612499565b61297e610100830186612499565b61298c6101208301856126ab565b61299a610140830184612499565b9c9b505050505050505050505050565b6000602082840312156129bf576129bf600080fd5b81356001600160401b038111156129d8576129d8600080fd5b612372848285016125d2565b601681526000602082017556616c7565206d757374206e6f74206265207a65726f60501b815291505b5060200190565b602080825281016120c9816129e4565b602c81526000602082016000805160206132fb83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291505b5060400190565b602080825281016120c981612a24565b602c81526000602082016000805160206132fb83398151915281526b6163746976652070726f787960a01b60208201529150612a57565b602080825281016120c981612a6e565b6007811061061357600080fd5b80516120c981612ab5565b600060208284031215612ae257612ae2600080fd5b60006123728484612ac2565b601d81526000602082017f4f6e6c7920616c6c6f77656420616464726573732063616e2063616c6c00000081529150612a0d565b602080825281016120c981612aee565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60208201529150612a57565b602080825281016120c981612b32565b634e487b7160e01b600052601160045260246000fd5b6000612bb8826123a4565b9150612bc3836123a4565b9250508082016001600160401b038111156120c9576120c9612b97565b60408101612bee8285612664565b61099c602083018461264d565b80516120c9816126c1565b600060208284031215612c1b57612c1b600080fd5b60006123728484612bfb565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b81529150612a0d565b602080825281016120c981612c27565b6020808252810161099c81846128aa565b6000612c84826123a4565b91506001600160401b038203612c9c57612c9c612b97565b5060010190565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150612a57565b602080825281016120c981612ca3565b600060ff82166120c9565b61243981612cfe565b602081016120c98284612d09565b634e487b7160e01b600052602260045260246000fd5b600281046001821680612d4a57607f821691505b60208210810361052157610521612d20565b601781526000602082017613595d1859185d1848191bd95cc81b9bdd08195e1a5cdd604a1b81529150612a0d565b602080825281016120c981612d5c565b60088110610613576106136123f0565b8061242081612d9a565b60006120c982612daa565b61243981612db4565b60608101612dd68286612dbf565b612de3602083018561264d565b6123726040830184612499565b806123b9565b80516120c981612df0565b600060208284031215612e1657612e16600080fd5b60006123728484612df6565b60028110610613576106136123f0565b8061242081612e22565b60006120c982612e32565b61243981612e3c565b60808101612e5e8287612dbf565b612e6b602083018661264d565b612e786040830185612499565b612e856060830184612e47565b95945050505050565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529150612a57565b602080825281016120c981612e8e565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529150612a57565b602080825281016120c981612ee9565b600d81526000602082016c496e76616c696420737461746560981b81529150612a0d565b602080825281016120c981612f3f565b60006120c96124c18381565b612f8883612f73565b815460001960089490940293841b1916921b91909117905550565b6000611a44818484612f7f565b8181101561054a57612fc3600082612fa3565b600101612fb0565b601f821115611a44576000818152602090206020601f85010481016020851015612ff25750805b6130046020601f860104830182612fb0565b5050505050565b6000196008929092029190911c191690565b6000613029838361300b565b600290930290921792915050565b81516001600160401b0381111561305057613050612500565b61305a8254612d36565b613065828285612fcb565b6020601f83116001811461309357600084156130815750858201515b61308b858261301d565b8655506130ed565b600085815260208120601f198616915b828110156130c357888501518255602094850194600190920191016130a3565b868310156130e057848901516130dc601f89168261300b565b8355505b6001600288020188555050505b505050505050565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150612a57565b602080825281016120c9816130f5565b6000815461315a81612d36565b6001821680156131715760018114613186576131b6565b60ff19831686528115158202860193506131b6565b60008581526020902060005b838110156131ae57815488820152600190910190602001613192565b838801955050505b50505092915050565b600061099c828461314d565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529150612a57565b602080825281016120c9816131cb565b601c81526000602082017b616c6c20706172616d73206d757374206265206e6f6e2d656d70747960201b81529150612a0d565b602080825281016120c981613225565b6000613272825190565b613280818560208601612886565b9290920192915050565b600061099c8284613268565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612a0d565b602080825281016120c98161329656fe571b4e518ce1c666c0cfdad09d8001b252f51f088e4c54ebde3bd2a4d9d2ed5c46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203738aa4301dfbe58bacc293faa8114079c2b28dd08b4e150be8aa4a6d77d640a64736f6c63430008150033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
