{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC3525Mintable",
  "sourceName": "contracts/ERC3525Mintable.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ApprovalValue",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "metadataDescriptor",
          "type": "address"
        }
      ],
      "name": "SetMetadataDescriptor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_oldSlot",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_newSlot",
          "type": "uint256"
        }
      ],
      "name": "SlotChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_fromTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_toTokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "TransferValue",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contractURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metadataDescriptor",
      "outputs": [
        {
          "internalType": "contract IERC3525MetadataDescriptor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "mintTo_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "mintValue",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data_",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved_",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "slotOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        }
      ],
      "name": "slotURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "fromTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "newTokenId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "fromTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "toTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "valueDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200301938038062003019833981016040819052620000349162000147565b600160035582828260006200004a84826200025b565b5060016200005983826200025b565b506002805460ff191660ff9290921691909117905550620003279350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000a257600080fd5b81516001600160401b0380821115620000bf57620000bf6200007a565b604051601f8301601f19908116603f01168101908282118183101715620000ea57620000ea6200007a565b816040528381526020925086838588010111156200010757600080fd5b600091505b838210156200012b57858201830151818301840152908201906200010c565b838211156200013d5760008385830101525b9695505050505050565b6000806000606084860312156200015d57600080fd5b83516001600160401b03808211156200017557600080fd5b620001838783880162000090565b945060208601519150808211156200019a57600080fd5b50620001a98682870162000090565b925050604084015160ff81168114620001c157600080fd5b809150509250925092565b600181811c90821680620001e157607f821691505b6020821081036200020257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025657600081815260208120601f850160051c81016020861015620002315750805b601f850160051c820191505b8181101562000252578281556001016200023d565b5050505b505050565b81516001600160401b038111156200027757620002776200007a565b6200028f81620002888454620001cc565b8462000208565b602080601f831160018114620002c75760008415620002ae5750858301515b600019600386901b1c1916600185901b17855562000252565b600085815260208120601f198616915b82811015620002f857888601518255948401946001909101908401620002d7565b5085821015620003175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612ce280620003376000396000f3fe6080604052600436106101b75760003560e01c80636352211e116100ec578063a647e8ec1161008a578063e345e0bc11610064578063e345e0bc1461048c578063e8a3d485146104ac578063e985e9c5146104c1578063f0e88e7f1461050e57600080fd5b8063a647e8ec14610439578063b88d4fde14610459578063c87b56dd1461046c57600080fd5b80638cb0a511116100c65780638cb0a511146103d157806395d89b41146103e45780639cc7f708146103f9578063a22cb4651461041957600080fd5b80636352211e1461037157806370a0823114610391578063840f7113146103b157600080fd5b806323b872dd11610159578063310ed7f011610133578063310ed7f0146103095780633e7e86691461031c57806342842e0e1461033e5780634f6ccce71461035157600080fd5b806323b872dd146102b6578063263f3e7e146102c95780632f745c59146102e957600080fd5b8063095ea7b311610195578063095ea7b31461024b57806309c3dd87146102605780630f485c021461028057806318160ddd146102a157600080fd5b806301ffc9a7146101bc57806306fdde03146101f1578063081812fc14610213575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612567565b61052e565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b506102066105d1565b6040516101e891906125dc565b34801561021f57600080fd5b5061023361022e3660046125ef565b610663565b6040516001600160a01b0390911681526020016101e8565b61025e61025936600461261f565b6106b5565b005b34801561026c57600080fd5b5061020661027b3660046125ef565b610799565b61029361028e366004612649565b61088b565b6040519081526020016101e8565b3480156102ad57600080fd5b50600554610293565b61025e6102c436600461267e565b6108c3565b3480156102d557600080fd5b506102936102e43660046125ef565b6108f4565b3480156102f557600080fd5b5061029361030436600461261f565b61093c565b61025e6103173660046126aa565b6109dd565b34801561032857600080fd5b5060025460405160ff90911681526020016101e8565b61025e61034c36600461267e565b6109f3565b34801561035d57600080fd5b5061029361036c3660046125ef565b610a0e565b34801561037d57600080fd5b5061023361038c3660046125ef565b610a9f565b34801561039d57600080fd5b506102936103ac3660046126d6565b610b3b565b3480156103bd57600080fd5b50600854610233906001600160a01b031681565b61025e6103df366004612649565b610bc3565b3480156103f057600080fd5b50610206610c82565b34801561040557600080fd5b506102936104143660046125ef565b610c91565b34801561042557600080fd5b5061025e6104343660046126ff565b610cd9565b34801561044557600080fd5b5061025e610454366004612736565b610ce8565b61025e6104673660046127de565b610cf4565b34801561047857600080fd5b506102066104873660046125ef565b610d26565b34801561049857600080fd5b506102936104a7366004612889565b610dc5565b3480156104b857600080fd5b50610206610df9565b3480156104cd57600080fd5b506101dc6104dc3660046128b5565b6001600160a01b0391821660009081526007602090815260408083209390941682526002909201909152205460ff1690565b34801561051a57600080fd5b5061025e6105293660046128df565b610ef3565b60006001600160e01b031982166301ffc9a760e01b148061055f57506001600160e01b03198216630354d60560e61b145b8061057a57506001600160e01b031982166380ac58cd60e01b145b8061059557506001600160e01b031982166370b0048160e11b145b806105b057506001600160e01b0319821663780e9d6360e01b145b806105cb57506001600160e01b03198216635b5e139f60e01b145b92915050565b6060600080546105e090612901565b80601f016020809104026020016040519081016040528092919081815260200182805461060c90612901565b80156106595780601f1061062e57610100808354040283529160200191610659565b820191906000526020600020905b81548152906001019060200180831161063c57829003601f168201915b5050505050905090565b600061066e82610efd565b6000828152600660205260409020546005805490919081106106925761069261293b565b60009182526020909120600460069092020101546001600160a01b031692915050565b60006106c082610a9f565b9050806001600160a01b0316836001600160a01b0316036106fc5760405162461bcd60e51b81526004016106f390612951565b60405180910390fd5b336001600160a01b0382161480610718575061071881336104dc565b61078a5760405162461bcd60e51b815260206004820152603960248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016106f3565b6107948383610f51565b505050565b606060006107b260408051602081019091526000815290565b6008549091506001600160a01b03166108125760008151116107e35760405180602001604052806000815250610884565b806107ed84610fe8565b6040516020016107fe929190612993565b604051602081830303815290604052610884565b600854604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b600060405180830381865afa15801561085c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088491908101906129d3565b9392505050565b60006108983385846110f1565b6108a184611181565b90506108b883826108b1876108f4565b600061118b565b6108848482846112b5565b6108cd33826115ad565b6108e95760405162461bcd60e51b81526004016106f390612a4a565b61079483838361162f565b60006108ff82610efd565b6000828152600660205260409020546005805490919081106109235761092361293b565b9060005260206000209060060201600101549050919050565b600061094783610b3b565b82106109a05760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016106f3565b6001600160a01b03831660009081526007602052604090208054839081106109ca576109ca61293b565b9060005260206000200154905092915050565b6109e83384836110f1565b6107948383836112b5565b61079483838360405180602001604052806000815250610cf4565b6000610a1960055490565b8210610a735760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016106f3565b60058281548110610a8657610a8661293b565b9060005260206000209060060201600001549050919050565b6000610aaa82610efd565b600082815260066020526040902054600580549091908110610ace57610ace61293b565b60009182526020909120600360069092020101546001600160a01b0316905080610b365760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b60448201526064016106f3565b919050565b60006001600160a01b038216610ba75760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016106f3565b506001600160a01b031660009081526007602052604090205490565b6000610bce84610a9f565b9050806001600160a01b0316836001600160a01b031603610c015760405162461bcd60e51b81526004016106f390612951565b610c0b33856115ad565b610c715760405162461bcd60e51b815260206004820152603160248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b60648201526084016106f3565b610c7c848484611790565b50505050565b6060600180546105e090612901565b6000610c9c82610efd565b600082815260066020526040902054600580549091908110610cc057610cc061293b565b9060005260206000209060060201600201549050919050565b610ce43383836118c8565b5050565b610c7c8484848461118b565b610cfe33836115ad565b610d1a5760405162461bcd60e51b81526004016106f390612a4a565b610c7c84848484611992565b6060610d3182610efd565b6000610d4860408051602081019091526000815290565b6008549091506001600160a01b0316610d94576000815111610d795760405180602001604052806000815250610884565b80610d8384610fe8565b6040516020016107fe929190612a9c565b6008546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e9060240161083f565b6000610dd083610efd565b5060009182526004602090815260408084206001600160a01b0393909316845291905290205490565b60606000610e1260408051602081019091526000815290565b6008549091506001600160a01b0316610e72576000815111610e435760405180602001604052806000815250610eed565b80610e4d30611a05565b604051602001610e5e929190612acb565b604051602081830303815290604052610eed565b600860009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ec5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eed91908101906129d3565b91505090565b610ce48282611a1b565b610f0681611a3f565b610f4e5760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b60448201526064016106f3565b50565b600081815260066020526040902054600580548492908110610f7557610f7561293b565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b0392831617905581908316610faf82610a9f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60608160000361100f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611039578061102381612b25565b91506110329050600a83612b54565b9150611013565b60008167ffffffffffffffff8111156110545761105461276f565b6040519080825280601f01601f19166020018201604052801561107e576020820181803683370190505b5090505b84156110e957611093600183612b68565b91506110a0600a86612b7f565b6110ab906030612b93565b60f81b8183815181106110c0576110c061293b565b60200101906001600160f81b031916908160001a9053506110e2600a86612b54565b9450611082565b949350505050565b60006110fd8385610dc5565b905061110984846115ad565b15801561111857506000198114155b15610c7c578181101561116d5760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e63650060448201526064016106f3565b610c7c838561117c8585612b68565b611790565b60006105cb611a8b565b6001600160a01b0384166111eb5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106f3565b826000036112455760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b60648201526084016106f3565b61124e83611a3f565b1561129b5760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e74656400000060448201526064016106f3565b6112a6848484611aa5565b6112b08382611b6b565b610c7c565b6112be83611a3f565b61131a5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b60648201526084016106f3565b61132382611a3f565b61137d5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b60648201526084016106f3565b6000838152600660205260408120546005805490919081106113a1576113a161293b565b90600052602060002090600602019050600060056006600086815260200190815260200160002054815481106113d9576113d961293b565b9060005260206000209060060201905082826002015410156114505760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016106f3565b80600101548260010154146114be5760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b60648201526084016106f3565b828260020160008282546114d29190612b68565b92505081905550828160020160008282546114ed9190612b93565b9091555050604051838152849086907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a361154485858560405180602001604052806000815250611bf0565b6115a65760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b60648201526084016106f3565b5050505050565b6000806115b983610a9f565b9050806001600160a01b0316846001600160a01b0316148061160457506001600160a01b038082166000908152600760209081526040808320938816835260029093019052205460ff165b806110e95750836001600160a01b031661161d84610663565b6001600160a01b031614949350505050565b826001600160a01b031661164282610a9f565b6001600160a01b0316146116a45760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b60648201526084016106f3565b6001600160a01b0382166117085760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106f3565b6000611713826108f4565b9050600061172083610c91565b905061172d600084610f51565b61173683611d60565b6117408584611e0b565b61174a8484611f2c565b82846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115a6565b6001600160a01b0382166117f95760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b60648201526084016106f3565b6118038284611fb5565b6118695760008381526006602052604090205460058054909190811061182b5761182b61293b565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b60008381526004602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91015b60405180910390a3505050565b816001600160a01b0316836001600160a01b0316036119295760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c657200000000000060448201526064016106f3565b6001600160a01b0383811660008181526007602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016118bb565b61199d84848461162f565b6119a984848484612088565b610c7c5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b60648201526084016106f3565b60606105cb6001600160a01b03831660146121ce565b6000611a2683610a9f565b90506000611a33846108f4565b90506112b08484611b6b565b600554600090158015906105cb5750600082815260066020526040902054600580548492908110611a7257611a7261293b565b9060005260206000209060060201600001541492915050565b6003805460009182611a9c83612b25565b91905055905090565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a08201529050611af38161236a565b611afd8484611f2c565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b600082815260066020526040902054600580548392908110611b8f57611b8f61293b565b90600052602060002090600602016002016000828254611baf9190612b93565b909155505060405181815282906000907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a35050565b600080611bfc85610a9f565b9050803b63ffffffff1615611d56576040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa925050508015611c71575060408051601f3d908101601f19168201909252611c6e91810190612bab565b60015b611cb0573d808015611c9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ca4565b606091505b506001925050506110e9565b8015611d4b57604051629ce20b60e01b81526000906001600160a01b03841690629ce20b90611ceb9033908c908c908c908c90600401612bc8565b6020604051808303816000875af1158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e9190612c06565b6001600160e01b031916629ce20b60e01b1493506110e992505050565b6001925050506110e9565b60019150506110e9565b600081815260066020526040812054600580549091908110611d8457611d8461293b565b600091825260208220600560069092020190810154909250905b81811015611dfc576000836005018281548110611dbd57611dbd61293b565b60009182526020808320909101548783526004825260408084206001600160a01b03909216845291528120555080611df481612b25565b915050611d9e565b506107946005830160006124b9565b600081815260066020526040812054600580549091908110611e2f57611e2f61293b565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b0394851617905591841681526007909152604081208054909190611e7e90600190612b68565b90506000826000018281548110611e9757611e9761293b565b90600052602060002001549050600083600101600086815260200190815260200160002054905081846000018281548110611ed457611ed461293b565b60009182526020808320909101929092558381526001860190915260408082208390558682528120558354849080611f0e57611f0e612c23565b60019003818190600052602060002001600090559055505050505050565b600081815260066020526040902054600580548492908110611f5057611f5061293b565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152600780845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b600081815260066020526040812054600580548392908110611fd957611fd961293b565b6000918252602082206005600690920201015491505b8181101561207d57600084815260066020526040902054600580546001600160a01b038816929081106120245761202461293b565b906000526020600020906006020160050182815481106120465761204661293b565b6000918252602090912001546001600160a01b03160361206b576001925050506105cb565b8061207581612b25565b915050611fef565b506000949350505050565b6000833b63ffffffff16156121c657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120c9903390899088908890600401612c39565b6020604051808303816000875af1925050508015612104575060408051601f3d908101601f1916820190925261210191810190612c06565b60015b6121ac573d808015612132576040519150601f19603f3d011682016040523d82523d6000602084013e612137565b606091505b5080516000036121a45760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016106f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506110e9565b5060016110e9565b606060006121dd836002612c76565b6121e8906002612b93565b67ffffffffffffffff8111156122005761220061276f565b6040519080825280601f01601f19166020018201604052801561222a576020820181803683370190505b509050600360fc1b816000815181106122455761224561293b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106122745761227461293b565b60200101906001600160f81b031916908160001a9053506000612298846002612c76565b6122a3906001612b93565b90505b600181111561231b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106122d7576122d761293b565b1a60f81b8282815181106122ed576122ed61293b565b60200101906001600160f81b031916908160001a90535060049490941c9361231481612c95565b90506122a6565b5083156108845760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106f3565b600580548251600090815260066020818152604080842085905560018501865594909252845192027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101928355818501517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db1820155928401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db284015560608401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3840180546001600160a01b039283166001600160a01b03199182161790915560808601517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db48601805491909316911617905560a084015180518594610c7c937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db59091019201906124d7565b5080546000825590600052602060002090810190610f4e919061253c565b82805482825590600052602060002090810192821561252c579160200282015b8281111561252c57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906124f7565b5061253892915061253c565b5090565b5b80821115612538576000815560010161253d565b6001600160e01b031981168114610f4e57600080fd5b60006020828403121561257957600080fd5b813561088481612551565b60005b8381101561259f578181015183820152602001612587565b83811115610c7c5750506000910152565b600081518084526125c8816020860160208601612584565b601f01601f19169290920160200192915050565b60208152600061088460208301846125b0565b60006020828403121561260157600080fd5b5035919050565b80356001600160a01b0381168114610b3657600080fd5b6000806040838503121561263257600080fd5b61263b83612608565b946020939093013593505050565b60008060006060848603121561265e57600080fd5b8335925061266e60208501612608565b9150604084013590509250925092565b60008060006060848603121561269357600080fd5b61269c84612608565b925061266e60208501612608565b6000806000606084860312156126bf57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156126e857600080fd5b61088482612608565b8015158114610f4e57600080fd5b6000806040838503121561271257600080fd5b61271b83612608565b9150602083013561272b816126f1565b809150509250929050565b6000806000806080858703121561274c57600080fd5b61275585612608565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127ae576127ae61276f565b604052919050565b600067ffffffffffffffff8211156127d0576127d061276f565b50601f01601f191660200190565b600080600080608085870312156127f457600080fd5b6127fd85612608565b935061280b60208601612608565b925060408501359150606085013567ffffffffffffffff81111561282e57600080fd5b8501601f8101871361283f57600080fd5b803561285261284d826127b6565b612785565b81815288602083850101111561286757600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561289c57600080fd5b823591506128ac60208401612608565b90509250929050565b600080604083850312156128c857600080fd5b6128d183612608565b91506128ac60208401612608565b600080604083850312156128f257600080fd5b50508035926020909101359150565b600181811c9082168061291557607f821691505b60208210810361293557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f455243333532353a20617070726f76616c20746f2063757272656e74206f776e60408201526132b960f11b606082015260800190565b600083516129a5818460208801612584565b64736c6f742f60d81b90830190815283516129c7816005840160208801612584565b01600501949350505050565b6000602082840312156129e557600080fd5b815167ffffffffffffffff8111156129fc57600080fd5b8201601f81018413612a0d57600080fd5b8051612a1b61284d826127b6565b818152856020838501011115612a3057600080fd5b612a41826020830160208601612584565b95945050505050565b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b60008351612aae818460208801612584565b835190830190612ac2818360208801612584565b01949350505050565b60008351612add818460208801612584565b68636f6e74726163742f60b81b9083019081528351612b03816009840160208801612584565b01600901949350505050565b634e487b7160e01b600052601160045260246000fd5b600060018201612b3757612b37612b0f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612b6357612b63612b3e565b500490565b600082821015612b7a57612b7a612b0f565b500390565b600082612b8e57612b8e612b3e565b500690565b60008219821115612ba657612ba6612b0f565b500190565b600060208284031215612bbd57600080fd5b8151610884816126f1565b60018060a01b038616815284602082015283604082015282606082015260a060808201526000612bfb60a08301846125b0565b979650505050505050565b600060208284031215612c1857600080fd5b815161088481612551565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612c6c908301846125b0565b9695505050505050565b6000816000190483118215151615612c9057612c90612b0f565b500290565b600081612ca457612ca4612b0f565b50600019019056fea2646970667358221220e9ee4cf6e7ebe32d402c778fe5f0ca30c9bbd3e404fb091e60d76bc03ee9707864736f6c634300080f0033",
  "deployedBytecode": "0x6080604052600436106101b75760003560e01c80636352211e116100ec578063a647e8ec1161008a578063e345e0bc11610064578063e345e0bc1461048c578063e8a3d485146104ac578063e985e9c5146104c1578063f0e88e7f1461050e57600080fd5b8063a647e8ec14610439578063b88d4fde14610459578063c87b56dd1461046c57600080fd5b80638cb0a511116100c65780638cb0a511146103d157806395d89b41146103e45780639cc7f708146103f9578063a22cb4651461041957600080fd5b80636352211e1461037157806370a0823114610391578063840f7113146103b157600080fd5b806323b872dd11610159578063310ed7f011610133578063310ed7f0146103095780633e7e86691461031c57806342842e0e1461033e5780634f6ccce71461035157600080fd5b806323b872dd146102b6578063263f3e7e146102c95780632f745c59146102e957600080fd5b8063095ea7b311610195578063095ea7b31461024b57806309c3dd87146102605780630f485c021461028057806318160ddd146102a157600080fd5b806301ffc9a7146101bc57806306fdde03146101f1578063081812fc14610213575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004612567565b61052e565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b506102066105d1565b6040516101e891906125dc565b34801561021f57600080fd5b5061023361022e3660046125ef565b610663565b6040516001600160a01b0390911681526020016101e8565b61025e61025936600461261f565b6106b5565b005b34801561026c57600080fd5b5061020661027b3660046125ef565b610799565b61029361028e366004612649565b61088b565b6040519081526020016101e8565b3480156102ad57600080fd5b50600554610293565b61025e6102c436600461267e565b6108c3565b3480156102d557600080fd5b506102936102e43660046125ef565b6108f4565b3480156102f557600080fd5b5061029361030436600461261f565b61093c565b61025e6103173660046126aa565b6109dd565b34801561032857600080fd5b5060025460405160ff90911681526020016101e8565b61025e61034c36600461267e565b6109f3565b34801561035d57600080fd5b5061029361036c3660046125ef565b610a0e565b34801561037d57600080fd5b5061023361038c3660046125ef565b610a9f565b34801561039d57600080fd5b506102936103ac3660046126d6565b610b3b565b3480156103bd57600080fd5b50600854610233906001600160a01b031681565b61025e6103df366004612649565b610bc3565b3480156103f057600080fd5b50610206610c82565b34801561040557600080fd5b506102936104143660046125ef565b610c91565b34801561042557600080fd5b5061025e6104343660046126ff565b610cd9565b34801561044557600080fd5b5061025e610454366004612736565b610ce8565b61025e6104673660046127de565b610cf4565b34801561047857600080fd5b506102066104873660046125ef565b610d26565b34801561049857600080fd5b506102936104a7366004612889565b610dc5565b3480156104b857600080fd5b50610206610df9565b3480156104cd57600080fd5b506101dc6104dc3660046128b5565b6001600160a01b0391821660009081526007602090815260408083209390941682526002909201909152205460ff1690565b34801561051a57600080fd5b5061025e6105293660046128df565b610ef3565b60006001600160e01b031982166301ffc9a760e01b148061055f57506001600160e01b03198216630354d60560e61b145b8061057a57506001600160e01b031982166380ac58cd60e01b145b8061059557506001600160e01b031982166370b0048160e11b145b806105b057506001600160e01b0319821663780e9d6360e01b145b806105cb57506001600160e01b03198216635b5e139f60e01b145b92915050565b6060600080546105e090612901565b80601f016020809104026020016040519081016040528092919081815260200182805461060c90612901565b80156106595780601f1061062e57610100808354040283529160200191610659565b820191906000526020600020905b81548152906001019060200180831161063c57829003601f168201915b5050505050905090565b600061066e82610efd565b6000828152600660205260409020546005805490919081106106925761069261293b565b60009182526020909120600460069092020101546001600160a01b031692915050565b60006106c082610a9f565b9050806001600160a01b0316836001600160a01b0316036106fc5760405162461bcd60e51b81526004016106f390612951565b60405180910390fd5b336001600160a01b0382161480610718575061071881336104dc565b61078a5760405162461bcd60e51b815260206004820152603960248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016106f3565b6107948383610f51565b505050565b606060006107b260408051602081019091526000815290565b6008549091506001600160a01b03166108125760008151116107e35760405180602001604052806000815250610884565b806107ed84610fe8565b6040516020016107fe929190612993565b604051602081830303815290604052610884565b600854604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b600060405180830381865afa15801561085c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088491908101906129d3565b9392505050565b60006108983385846110f1565b6108a184611181565b90506108b883826108b1876108f4565b600061118b565b6108848482846112b5565b6108cd33826115ad565b6108e95760405162461bcd60e51b81526004016106f390612a4a565b61079483838361162f565b60006108ff82610efd565b6000828152600660205260409020546005805490919081106109235761092361293b565b9060005260206000209060060201600101549050919050565b600061094783610b3b565b82106109a05760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016106f3565b6001600160a01b03831660009081526007602052604090208054839081106109ca576109ca61293b565b9060005260206000200154905092915050565b6109e83384836110f1565b6107948383836112b5565b61079483838360405180602001604052806000815250610cf4565b6000610a1960055490565b8210610a735760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016106f3565b60058281548110610a8657610a8661293b565b9060005260206000209060060201600001549050919050565b6000610aaa82610efd565b600082815260066020526040902054600580549091908110610ace57610ace61293b565b60009182526020909120600360069092020101546001600160a01b0316905080610b365760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b60448201526064016106f3565b919050565b60006001600160a01b038216610ba75760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016106f3565b506001600160a01b031660009081526007602052604090205490565b6000610bce84610a9f565b9050806001600160a01b0316836001600160a01b031603610c015760405162461bcd60e51b81526004016106f390612951565b610c0b33856115ad565b610c715760405162461bcd60e51b815260206004820152603160248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b60648201526084016106f3565b610c7c848484611790565b50505050565b6060600180546105e090612901565b6000610c9c82610efd565b600082815260066020526040902054600580549091908110610cc057610cc061293b565b9060005260206000209060060201600201549050919050565b610ce43383836118c8565b5050565b610c7c8484848461118b565b610cfe33836115ad565b610d1a5760405162461bcd60e51b81526004016106f390612a4a565b610c7c84848484611992565b6060610d3182610efd565b6000610d4860408051602081019091526000815290565b6008549091506001600160a01b0316610d94576000815111610d795760405180602001604052806000815250610884565b80610d8384610fe8565b6040516020016107fe929190612a9c565b6008546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e9060240161083f565b6000610dd083610efd565b5060009182526004602090815260408084206001600160a01b0393909316845291905290205490565b60606000610e1260408051602081019091526000815290565b6008549091506001600160a01b0316610e72576000815111610e435760405180602001604052806000815250610eed565b80610e4d30611a05565b604051602001610e5e929190612acb565b604051602081830303815290604052610eed565b600860009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ec5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eed91908101906129d3565b91505090565b610ce48282611a1b565b610f0681611a3f565b610f4e5760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b60448201526064016106f3565b50565b600081815260066020526040902054600580548492908110610f7557610f7561293b565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b0392831617905581908316610faf82610a9f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60608160000361100f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611039578061102381612b25565b91506110329050600a83612b54565b9150611013565b60008167ffffffffffffffff8111156110545761105461276f565b6040519080825280601f01601f19166020018201604052801561107e576020820181803683370190505b5090505b84156110e957611093600183612b68565b91506110a0600a86612b7f565b6110ab906030612b93565b60f81b8183815181106110c0576110c061293b565b60200101906001600160f81b031916908160001a9053506110e2600a86612b54565b9450611082565b949350505050565b60006110fd8385610dc5565b905061110984846115ad565b15801561111857506000198114155b15610c7c578181101561116d5760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e63650060448201526064016106f3565b610c7c838561117c8585612b68565b611790565b60006105cb611a8b565b6001600160a01b0384166111eb5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106f3565b826000036112455760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b60648201526084016106f3565b61124e83611a3f565b1561129b5760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e74656400000060448201526064016106f3565b6112a6848484611aa5565b6112b08382611b6b565b610c7c565b6112be83611a3f565b61131a5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b60648201526084016106f3565b61132382611a3f565b61137d5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b60648201526084016106f3565b6000838152600660205260408120546005805490919081106113a1576113a161293b565b90600052602060002090600602019050600060056006600086815260200190815260200160002054815481106113d9576113d961293b565b9060005260206000209060060201905082826002015410156114505760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b60648201526084016106f3565b80600101548260010154146114be5760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b60648201526084016106f3565b828260020160008282546114d29190612b68565b92505081905550828160020160008282546114ed9190612b93565b9091555050604051838152849086907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a361154485858560405180602001604052806000815250611bf0565b6115a65760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b60648201526084016106f3565b5050505050565b6000806115b983610a9f565b9050806001600160a01b0316846001600160a01b0316148061160457506001600160a01b038082166000908152600760209081526040808320938816835260029093019052205460ff165b806110e95750836001600160a01b031661161d84610663565b6001600160a01b031614949350505050565b826001600160a01b031661164282610a9f565b6001600160a01b0316146116a45760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b60648201526084016106f3565b6001600160a01b0382166117085760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106f3565b6000611713826108f4565b9050600061172083610c91565b905061172d600084610f51565b61173683611d60565b6117408584611e0b565b61174a8484611f2c565b82846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46115a6565b6001600160a01b0382166117f95760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b60648201526084016106f3565b6118038284611fb5565b6118695760008381526006602052604090205460058054909190811061182b5761182b61293b565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b60008381526004602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91015b60405180910390a3505050565b816001600160a01b0316836001600160a01b0316036119295760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c657200000000000060448201526064016106f3565b6001600160a01b0383811660008181526007602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191016118bb565b61199d84848461162f565b6119a984848484612088565b610c7c5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b60648201526084016106f3565b60606105cb6001600160a01b03831660146121ce565b6000611a2683610a9f565b90506000611a33846108f4565b90506112b08484611b6b565b600554600090158015906105cb5750600082815260066020526040902054600580548492908110611a7257611a7261293b565b9060005260206000209060060201600001541492915050565b6003805460009182611a9c83612b25565b91905055905090565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a08201529050611af38161236a565b611afd8484611f2c565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b600082815260066020526040902054600580548392908110611b8f57611b8f61293b565b90600052602060002090600602016002016000828254611baf9190612b93565b909155505060405181815282906000907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a35050565b600080611bfc85610a9f565b9050803b63ffffffff1615611d56576040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa925050508015611c71575060408051601f3d908101601f19168201909252611c6e91810190612bab565b60015b611cb0573d808015611c9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ca4565b606091505b506001925050506110e9565b8015611d4b57604051629ce20b60e01b81526000906001600160a01b03841690629ce20b90611ceb9033908c908c908c908c90600401612bc8565b6020604051808303816000875af1158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e9190612c06565b6001600160e01b031916629ce20b60e01b1493506110e992505050565b6001925050506110e9565b60019150506110e9565b600081815260066020526040812054600580549091908110611d8457611d8461293b565b600091825260208220600560069092020190810154909250905b81811015611dfc576000836005018281548110611dbd57611dbd61293b565b60009182526020808320909101548783526004825260408084206001600160a01b03909216845291528120555080611df481612b25565b915050611d9e565b506107946005830160006124b9565b600081815260066020526040812054600580549091908110611e2f57611e2f61293b565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b0394851617905591841681526007909152604081208054909190611e7e90600190612b68565b90506000826000018281548110611e9757611e9761293b565b90600052602060002001549050600083600101600086815260200190815260200160002054905081846000018281548110611ed457611ed461293b565b60009182526020808320909101929092558381526001860190915260408082208390558682528120558354849080611f0e57611f0e612c23565b60019003818190600052602060002001600090559055505050505050565b600081815260066020526040902054600580548492908110611f5057611f5061293b565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152600780845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b600081815260066020526040812054600580548392908110611fd957611fd961293b565b6000918252602082206005600690920201015491505b8181101561207d57600084815260066020526040902054600580546001600160a01b038816929081106120245761202461293b565b906000526020600020906006020160050182815481106120465761204661293b565b6000918252602090912001546001600160a01b03160361206b576001925050506105cb565b8061207581612b25565b915050611fef565b506000949350505050565b6000833b63ffffffff16156121c657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120c9903390899088908890600401612c39565b6020604051808303816000875af1925050508015612104575060408051601f3d908101601f1916820190925261210191810190612c06565b60015b6121ac573d808015612132576040519150601f19603f3d011682016040523d82523d6000602084013e612137565b606091505b5080516000036121a45760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016106f3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506110e9565b5060016110e9565b606060006121dd836002612c76565b6121e8906002612b93565b67ffffffffffffffff8111156122005761220061276f565b6040519080825280601f01601f19166020018201604052801561222a576020820181803683370190505b509050600360fc1b816000815181106122455761224561293b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106122745761227461293b565b60200101906001600160f81b031916908160001a9053506000612298846002612c76565b6122a3906001612b93565b90505b600181111561231b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106122d7576122d761293b565b1a60f81b8282815181106122ed576122ed61293b565b60200101906001600160f81b031916908160001a90535060049490941c9361231481612c95565b90506122a6565b5083156108845760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106f3565b600580548251600090815260066020818152604080842085905560018501865594909252845192027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101928355818501517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db1820155928401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db284015560608401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3840180546001600160a01b039283166001600160a01b03199182161790915560808601517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db48601805491909316911617905560a084015180518594610c7c937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db59091019201906124d7565b5080546000825590600052602060002090810190610f4e919061253c565b82805482825590600052602060002090810192821561252c579160200282015b8281111561252c57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906124f7565b5061253892915061253c565b5090565b5b80821115612538576000815560010161253d565b6001600160e01b031981168114610f4e57600080fd5b60006020828403121561257957600080fd5b813561088481612551565b60005b8381101561259f578181015183820152602001612587565b83811115610c7c5750506000910152565b600081518084526125c8816020860160208601612584565b601f01601f19169290920160200192915050565b60208152600061088460208301846125b0565b60006020828403121561260157600080fd5b5035919050565b80356001600160a01b0381168114610b3657600080fd5b6000806040838503121561263257600080fd5b61263b83612608565b946020939093013593505050565b60008060006060848603121561265e57600080fd5b8335925061266e60208501612608565b9150604084013590509250925092565b60008060006060848603121561269357600080fd5b61269c84612608565b925061266e60208501612608565b6000806000606084860312156126bf57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156126e857600080fd5b61088482612608565b8015158114610f4e57600080fd5b6000806040838503121561271257600080fd5b61271b83612608565b9150602083013561272b816126f1565b809150509250929050565b6000806000806080858703121561274c57600080fd5b61275585612608565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127ae576127ae61276f565b604052919050565b600067ffffffffffffffff8211156127d0576127d061276f565b50601f01601f191660200190565b600080600080608085870312156127f457600080fd5b6127fd85612608565b935061280b60208601612608565b925060408501359150606085013567ffffffffffffffff81111561282e57600080fd5b8501601f8101871361283f57600080fd5b803561285261284d826127b6565b612785565b81815288602083850101111561286757600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561289c57600080fd5b823591506128ac60208401612608565b90509250929050565b600080604083850312156128c857600080fd5b6128d183612608565b91506128ac60208401612608565b600080604083850312156128f257600080fd5b50508035926020909101359150565b600181811c9082168061291557607f821691505b60208210810361293557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60208082526022908201527f455243333532353a20617070726f76616c20746f2063757272656e74206f776e60408201526132b960f11b606082015260800190565b600083516129a5818460208801612584565b64736c6f742f60d81b90830190815283516129c7816005840160208801612584565b01600501949350505050565b6000602082840312156129e557600080fd5b815167ffffffffffffffff8111156129fc57600080fd5b8201601f81018413612a0d57600080fd5b8051612a1b61284d826127b6565b818152856020838501011115612a3057600080fd5b612a41826020830160208601612584565b95945050505050565b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b60008351612aae818460208801612584565b835190830190612ac2818360208801612584565b01949350505050565b60008351612add818460208801612584565b68636f6e74726163742f60b81b9083019081528351612b03816009840160208801612584565b01600901949350505050565b634e487b7160e01b600052601160045260246000fd5b600060018201612b3757612b37612b0f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082612b6357612b63612b3e565b500490565b600082821015612b7a57612b7a612b0f565b500390565b600082612b8e57612b8e612b3e565b500690565b60008219821115612ba657612ba6612b0f565b500190565b600060208284031215612bbd57600080fd5b8151610884816126f1565b60018060a01b038616815284602082015283604082015282606082015260a060808201526000612bfb60a08301846125b0565b979650505050505050565b600060208284031215612c1857600080fd5b815161088481612551565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612c6c908301846125b0565b9695505050505050565b6000816000190483118215151615612c9057612c90612b0f565b500290565b600081612ca457612ca4612b0f565b50600019019056fea2646970667358221220e9ee4cf6e7ebe32d402c778fe5f0ca30c9bbd3e404fb091e60d76bc03ee9707864736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
