{
  "_format": "hh-sol-artifact-1",
  "contractName": "DesmoHub",
  "sourceName": "contracts/DesmoHub.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "key",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "url",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "disabled",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "score",
          "type": "uint256"
        }
      ],
      "name": "TDDCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "key",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "url",
          "type": "string"
        }
      ],
      "name": "TDDDisabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "key",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "url",
          "type": "string"
        }
      ],
      "name": "TDDEnabled",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "disableTDD",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "enableTDD",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getEnabledTDDByIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "url",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "disabled",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "score",
              "type": "uint256"
            }
          ],
          "internalType": "struct DesmoHub.TDD",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEnabledTDDsStorageLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTDD",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "url",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "disabled",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "score",
              "type": "uint256"
            }
          ],
          "internalType": "struct DesmoHub.TDD",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getTDDByIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "url",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "disabled",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "score",
              "type": "uint256"
            }
          ],
          "internalType": "struct DesmoHub.TDD",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTDDStorageLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "url",
          "type": "string"
        }
      ],
      "name": "registerTDD",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "score",
          "type": "uint8"
        }
      ],
      "name": "setScore",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "scoreManagerAddress",
          "type": "address"
        }
      ],
      "name": "setScoreManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005257600080fd5b506124e4806100626000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063aa8b0a0e11610066578063aa8b0a0e14610135578063bb3cf6cb14610151578063bf6982bd14610181578063db2ebdad1461018b578063eb7b608c146101a75761009e565b80631d890cec146100a35780634e5793b4146100c157806350783931146100f15780635be5e3a01461010d578063a43410151461012b575b600080fd5b6100ab6101c5565b6040516100b891906122de565b60405180910390f35b6100db60048036038101906100d69190611c21565b610453565b6040516100e891906122de565b60405180910390f35b61010b60048036038101906101069190611b7b565b610627565b005b6101156106fc565b6040516101229190612300565b60405180910390f35b61013361070d565b005b61014f600480360381019061014a9190611be0565b610a67565b005b61016b60048036038101906101669190611c21565b610fb2565b60405161017891906122de565b60405180910390f35b610189611141565b005b6101a560048036038101906101a09190611ba4565b611380565b005b6101af6114f9565b6040516101bc9190612300565b60405180910390f35b6101cd61193c565b60006101d9600161150a565b11610219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102109061221e565b60405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102df906121de565b60405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103ca5780601f1061039f576101008083540402835291602001916103ca565b820191906000526020600020905b8154815290600101906020018083116103ad57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff16151515158152602001600282015481525050905090565b61045b61193c565b6000610467600161150a565b116104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e9061221e565b60405180910390fd5b6000806104be84600161151f90919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561059c5780601f106105715761010080835404028352916020019161059c565b820191906000526020600020905b81548152906001019060200180831161057f57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff161515151581526020016002820154815250509050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106af9061227e565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610708600161150a565b905090565b600115156000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160149054906101000a900460ff1615151415610a2a5760008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160146101000a81548160ff0219169083151502179055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060066000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016040516108509190612167565b90815260200160405180910390206000820181600001908054600181600116156101000203166002900461088592919061197c565b506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900460ff168160010160146101000a81548160ff02191690831515021790555060028201548160020155905050610946610934600361150a565b33600361153c9092919063ffffffff16565b506001610953600361150a565b03600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f8f298709ca9d1fd07e047a0cd3891ca4d5bb6cec0512ea84de987e609cc94a546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001604051610a1d91906121bc565b60405180910390a2610a65565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061229e565b60405180910390fd5b565b610a6f61193c565b60405180608001604052808381526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160008152509050610ab4611571565b15610d3b57600115156000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160149054906101000a900460ff1615151415610cfb57806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000019080519060200190610b6f929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050508060068260000151604051610bf99190612150565b90815260200160405180910390206000820151816000019080519060200190610c23929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050503373ffffffffffffffffffffffffffffffffffffffff167ff590fbcd6cede44f3ca591c8203bcf55c4a377dadb0fa3e05288f4912b6a015c826000015183604001518460600151604051610cee9392919061217e565b60405180910390a2610d36565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d9061223e565b60405180910390fd5b610f1e565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000019080519060200190610d96929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050508060068260000151604051610e209190612150565b90815260200160405180910390206000820151816000019080519060200190610e4a929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050503373ffffffffffffffffffffffffffffffffffffffff167ff590fbcd6cede44f3ca591c8203bcf55c4a377dadb0fa3e05288f4912b6a015c826000015183604001518460600151604051610f159392919061217e565b60405180910390a25b610f3d610f2b600361150a565b33600361153c9092919063ffffffff16565b506001610f4a600361150a565b03600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fad610f9b600161150a565b33600161153c9092919063ffffffff16565b505050565b610fba61193c565b6000610fd08360036115e190919063ffffffff16565b9150506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff16151515158152602001600282015481525050915050919050565b611149611571565b156113435760016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160146101000a81548160ff02191690831515021790555060066000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016040516111f89190612167565b9081526020016040518091039020600080820160006112179190611a83565b6001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549060ff0219169055600282016000905550506112af600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600361160d90919063ffffffff16565b503373ffffffffffffffffffffffffffffffffffffffff167fc6ab7281b45b5d4c1bb3667eec9bb8588bd473e77b096afef76dce3f536e7d576000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160405161133691906121bc565b60405180910390a261137e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906121de565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061142a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611469576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611460906122be565b60405180910390fd5b8060ff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505050565b6000611505600361150a565b905090565b600061151882600001611627565b9050919050565b6000611531836000018360001b611638565b60001c905092915050565b6000611568846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6116c4565b90509392505050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546001816001161561010002031660029004905011156115d957600190506115de565b600090505b90565b6000806000806115f486600001866117a0565b915091508160001c8160001c9350935050509250929050565b600061161f836000018360001b611823565b905092915050565b600081600001805490509050919050565b6000808360010160008481526020019081526020016000205490506000811415611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061225e565b60405180910390fd5b8360000160018203815481106116a957fe5b90600052602060002090600202016001015491505092915050565b600080846001016000858152602001908152602001600020549050600081141561176b57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050611799565b8285600001600183038154811061177e57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b600080828460000180549050116117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e3906121fe565b60405180910390fd5b60008460000184815481106117fd57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008083600101600084815260200190815260200160002054905060008114611930576000600182039050600060018660000180549050039050600086600001828154811061186e57fe5b906000526020600020906002020190508087600001848154811061188e57fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600183018760010160008360000154815260200190815260200160002081905550866000018054806118e157fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050611936565b60009150505b92915050565b604051806080016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106119b557805485556119f2565b828001600101855582156119f257600052602060002091601f016020900482015b828111156119f15782548255916001019190600101906119d6565b5b5090506119ff9190611acb565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a4457805160ff1916838001178555611a72565b82800160010185558215611a72579182015b82811115611a71578251825591602001919060010190611a56565b5b509050611a7f9190611acb565b5090565b50805460018160011615610100020316600290046000825580601f10611aa95750611ac8565b601f016020900490600052602060002090810190611ac79190611acb565b5b50565b5b80821115611ae4576000816000905550600101611acc565b5090565b600081359050611af781612469565b92915050565b600082601f830112611b0e57600080fd5b8135611b21611b1c82612348565b61231b565b91508082526020830160208301858383011115611b3d57600080fd5b611b48838284612416565b50505092915050565b600081359050611b6081612480565b92915050565b600081359050611b7581612497565b92915050565b600060208284031215611b8d57600080fd5b6000611b9b84828501611ae8565b91505092915050565b60008060408385031215611bb757600080fd5b6000611bc585828601611ae8565b9250506020611bd685828601611b66565b9150509250929050565b600060208284031215611bf257600080fd5b600082013567ffffffffffffffff811115611c0c57600080fd5b611c1884828501611afd565b91505092915050565b600060208284031215611c3357600080fd5b6000611c4184828501611b51565b91505092915050565b611c53816123c1565b82525050565b611c62816123d3565b82525050565b611c71816123d3565b82525050565b6000611c8282612389565b611c8c8185612394565b9350611c9c818560208601612425565b611ca581612458565b840191505092915050565b6000611cbb82612389565b611cc581856123a5565b9350611cd5818560208601612425565b611cde81612458565b840191505092915050565b6000611cf482612389565b611cfe81856123b6565b9350611d0e818560208601612425565b80840191505092915050565b600081546001811660008114611d375760018114611d5d57611da1565b607f6002830416611d4881876123a5565b955060ff198316865260208601935050611da1565b60028204611d6b81876123a5565b9550611d7685612374565b60005b82811015611d9857815481890152600182019150602081019050611d79565b80880195505050505b505092915050565b600081546001811660008114611dc65760018114611deb57611e2f565b607f6002830416611dd781876123b6565b955060ff1983168652808601935050611e2f565b60028204611df981876123b6565b9550611e0485612374565b60005b82811015611e2657815481890152600182019150602081019050611e07565b82880195505050505b505092915050565b6000611e446012836123a5565b91507f4e6f742074686520544444206f776e65722e00000000000000000000000000006000830152602082019050919050565b6000611e846022836123a5565b91507f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e60008301527f64730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611eea6011836123a5565b91507f4e6f2054444420617661696c61626c652e0000000000000000000000000000006000830152602082019050919050565b6000611f2a6014836123a5565b91507f44697361626c6520746865206c617374206f6e650000000000000000000000006000830152602082019050919050565b6000611f6a601e836123a5565b91507f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006000830152602082019050919050565b6000611faa602c836123a5565b91507f4465736d6f4875623a2053636f7265206d616e616765722063616e206f6e6c7960008301527f20626520736574206f6e636500000000000000000000000000000000000000006020830152604082019050919050565b60006120106021836123a5565b91507f4e6f20544444206f776e6572206f72204e6f2054444420746f20656e61626c6560008301527f2e000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120766034836123a5565b91507f54686973206d6574686f642063616e206265206f6e6c792063616c6c6564206260008301527f79207468652073636f7265206d616e616765722e0000000000000000000000006020830152604082019050919050565b600060808301600083015184820360008601526120ec8282611c77565b91505060208301516121016020860182611c4a565b5060408301516121146040860182611c59565b5060608301516121276060860182612132565b508091505092915050565b61213b816123ff565b82525050565b61214a816123ff565b82525050565b600061215c8284611ce9565b915081905092915050565b60006121738284611da9565b915081905092915050565b600060608201905081810360008301526121988186611cb0565b90506121a76020830185611c68565b6121b46040830184612141565b949350505050565b600060208201905081810360008301526121d68184611d1a565b905092915050565b600060208201905081810360008301526121f781611e37565b9050919050565b6000602082019050818103600083015261221781611e77565b9050919050565b6000602082019050818103600083015261223781611edd565b9050919050565b6000602082019050818103600083015261225781611f1d565b9050919050565b6000602082019050818103600083015261227781611f5d565b9050919050565b6000602082019050818103600083015261229781611f9d565b9050919050565b600060208201905081810360008301526122b781612003565b9050919050565b600060208201905081810360008301526122d781612069565b9050919050565b600060208201905081810360008301526122f881846120cf565b905092915050565b60006020820190506123156000830184612141565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561233e57600080fd5b8060405250919050565b600067ffffffffffffffff82111561235f57600080fd5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006123cc826123df565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612443578082015181840152602081019050612428565b83811115612452576000848401525b50505050565b6000601f19601f8301169050919050565b612472816123c1565b811461247d57600080fd5b50565b612489816123ff565b811461249457600080fd5b50565b6124a081612409565b81146124ab57600080fd5b5056fea2646970667358221220545dc0e2291c4952dd72d66cb9986efa1281ffaa6e0f50e2157cc3411a33787764736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063aa8b0a0e11610066578063aa8b0a0e14610135578063bb3cf6cb14610151578063bf6982bd14610181578063db2ebdad1461018b578063eb7b608c146101a75761009e565b80631d890cec146100a35780634e5793b4146100c157806350783931146100f15780635be5e3a01461010d578063a43410151461012b575b600080fd5b6100ab6101c5565b6040516100b891906122de565b60405180910390f35b6100db60048036038101906100d69190611c21565b610453565b6040516100e891906122de565b60405180910390f35b61010b60048036038101906101069190611b7b565b610627565b005b6101156106fc565b6040516101229190612300565b60405180910390f35b61013361070d565b005b61014f600480360381019061014a9190611be0565b610a67565b005b61016b60048036038101906101669190611c21565b610fb2565b60405161017891906122de565b60405180910390f35b610189611141565b005b6101a560048036038101906101a09190611ba4565b611380565b005b6101af6114f9565b6040516101bc9190612300565b60405180910390f35b6101cd61193c565b60006101d9600161150a565b11610219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102109061221e565b60405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102df906121de565b60405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103ca5780601f1061039f576101008083540402835291602001916103ca565b820191906000526020600020905b8154815290600101906020018083116103ad57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff16151515158152602001600282015481525050905090565b61045b61193c565b6000610467600161150a565b116104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e9061221e565b60405180910390fd5b6000806104be84600161151f90919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561059c5780601f106105715761010080835404028352916020019161059c565b820191906000526020600020905b81548152906001019060200180831161057f57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff161515151581526020016002820154815250509050919050565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106af9061227e565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610708600161150a565b905090565b600115156000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160149054906101000a900460ff1615151415610a2a5760008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160146101000a81548160ff0219169083151502179055506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060066000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016040516108509190612167565b90815260200160405180910390206000820181600001908054600181600116156101000203166002900461088592919061197c565b506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900460ff168160010160146101000a81548160ff02191690831515021790555060028201548160020155905050610946610934600361150a565b33600361153c9092919063ffffffff16565b506001610953600361150a565b03600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f8f298709ca9d1fd07e047a0cd3891ca4d5bb6cec0512ea84de987e609cc94a546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001604051610a1d91906121bc565b60405180910390a2610a65565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c9061229e565b60405180910390fd5b565b610a6f61193c565b60405180608001604052808381526020013373ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160008152509050610ab4611571565b15610d3b57600115156000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160149054906101000a900460ff1615151415610cfb57806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000019080519060200190610b6f929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050508060068260000151604051610bf99190612150565b90815260200160405180910390206000820151816000019080519060200190610c23929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050503373ffffffffffffffffffffffffffffffffffffffff167ff590fbcd6cede44f3ca591c8203bcf55c4a377dadb0fa3e05288f4912b6a015c826000015183604001518460600151604051610cee9392919061217e565b60405180910390a2610d36565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d9061223e565b60405180910390fd5b610f1e565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000019080519060200190610d96929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050508060068260000151604051610e209190612150565b90815260200160405180910390206000820151816000019080519060200190610e4a929190611a03565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff021916908315150217905550606082015181600201559050503373ffffffffffffffffffffffffffffffffffffffff167ff590fbcd6cede44f3ca591c8203bcf55c4a377dadb0fa3e05288f4912b6a015c826000015183604001518460600151604051610f159392919061217e565b60405180910390a25b610f3d610f2b600361150a565b33600361153c9092919063ffffffff16565b506001610f4a600361150a565b03600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fad610f9b600161150a565b33600161153c9092919063ffffffff16565b505050565b610fba61193c565b6000610fd08360036115e190919063ffffffff16565b9150506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110b55780601f1061108a576101008083540402835291602001916110b5565b820191906000526020600020905b81548152906001019060200180831161109857829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff16151515158152602001600282015481525050915050919050565b611149611571565b156113435760016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160146101000a81548160ff02191690831515021790555060066000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016040516111f89190612167565b9081526020016040518091039020600080820160006112179190611a83565b6001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549060ff0219169055600282016000905550506112af600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600361160d90919063ffffffff16565b503373ffffffffffffffffffffffffffffffffffffffff167fc6ab7281b45b5d4c1bb3667eec9bb8588bd473e77b096afef76dce3f536e7d576000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160405161133691906121bc565b60405180910390a261137e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906121de565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061142a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611469576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611460906122be565b60405180910390fd5b8060ff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505050565b6000611505600361150a565b905090565b600061151882600001611627565b9050919050565b6000611531836000018360001b611638565b60001c905092915050565b6000611568846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b6116c4565b90509392505050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546001816001161561010002031660029004905011156115d957600190506115de565b600090505b90565b6000806000806115f486600001866117a0565b915091508160001c8160001c9350935050509250929050565b600061161f836000018360001b611823565b905092915050565b600081600001805490509050919050565b6000808360010160008481526020019081526020016000205490506000811415611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061225e565b60405180910390fd5b8360000160018203815481106116a957fe5b90600052602060002090600202016001015491505092915050565b600080846001016000858152602001908152602001600020549050600081141561176b57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050611799565b8285600001600183038154811061177e57fe5b90600052602060002090600202016001018190555060009150505b9392505050565b600080828460000180549050116117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e3906121fe565b60405180910390fd5b60008460000184815481106117fd57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008083600101600084815260200190815260200160002054905060008114611930576000600182039050600060018660000180549050039050600086600001828154811061186e57fe5b906000526020600020906002020190508087600001848154811061188e57fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600183018760010160008360000154815260200190815260200160002081905550866000018054806118e157fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055866001016000878152602001908152602001600020600090556001945050505050611936565b60009150505b92915050565b604051806080016040528060608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106119b557805485556119f2565b828001600101855582156119f257600052602060002091601f016020900482015b828111156119f15782548255916001019190600101906119d6565b5b5090506119ff9190611acb565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a4457805160ff1916838001178555611a72565b82800160010185558215611a72579182015b82811115611a71578251825591602001919060010190611a56565b5b509050611a7f9190611acb565b5090565b50805460018160011615610100020316600290046000825580601f10611aa95750611ac8565b601f016020900490600052602060002090810190611ac79190611acb565b5b50565b5b80821115611ae4576000816000905550600101611acc565b5090565b600081359050611af781612469565b92915050565b600082601f830112611b0e57600080fd5b8135611b21611b1c82612348565b61231b565b91508082526020830160208301858383011115611b3d57600080fd5b611b48838284612416565b50505092915050565b600081359050611b6081612480565b92915050565b600081359050611b7581612497565b92915050565b600060208284031215611b8d57600080fd5b6000611b9b84828501611ae8565b91505092915050565b60008060408385031215611bb757600080fd5b6000611bc585828601611ae8565b9250506020611bd685828601611b66565b9150509250929050565b600060208284031215611bf257600080fd5b600082013567ffffffffffffffff811115611c0c57600080fd5b611c1884828501611afd565b91505092915050565b600060208284031215611c3357600080fd5b6000611c4184828501611b51565b91505092915050565b611c53816123c1565b82525050565b611c62816123d3565b82525050565b611c71816123d3565b82525050565b6000611c8282612389565b611c8c8185612394565b9350611c9c818560208601612425565b611ca581612458565b840191505092915050565b6000611cbb82612389565b611cc581856123a5565b9350611cd5818560208601612425565b611cde81612458565b840191505092915050565b6000611cf482612389565b611cfe81856123b6565b9350611d0e818560208601612425565b80840191505092915050565b600081546001811660008114611d375760018114611d5d57611da1565b607f6002830416611d4881876123a5565b955060ff198316865260208601935050611da1565b60028204611d6b81876123a5565b9550611d7685612374565b60005b82811015611d9857815481890152600182019150602081019050611d79565b80880195505050505b505092915050565b600081546001811660008114611dc65760018114611deb57611e2f565b607f6002830416611dd781876123b6565b955060ff1983168652808601935050611e2f565b60028204611df981876123b6565b9550611e0485612374565b60005b82811015611e2657815481890152600182019150602081019050611e07565b82880195505050505b505092915050565b6000611e446012836123a5565b91507f4e6f742074686520544444206f776e65722e00000000000000000000000000006000830152602082019050919050565b6000611e846022836123a5565b91507f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e60008301527f64730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611eea6011836123a5565b91507f4e6f2054444420617661696c61626c652e0000000000000000000000000000006000830152602082019050919050565b6000611f2a6014836123a5565b91507f44697361626c6520746865206c617374206f6e650000000000000000000000006000830152602082019050919050565b6000611f6a601e836123a5565b91507f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006000830152602082019050919050565b6000611faa602c836123a5565b91507f4465736d6f4875623a2053636f7265206d616e616765722063616e206f6e6c7960008301527f20626520736574206f6e636500000000000000000000000000000000000000006020830152604082019050919050565b60006120106021836123a5565b91507f4e6f20544444206f776e6572206f72204e6f2054444420746f20656e61626c6560008301527f2e000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120766034836123a5565b91507f54686973206d6574686f642063616e206265206f6e6c792063616c6c6564206260008301527f79207468652073636f7265206d616e616765722e0000000000000000000000006020830152604082019050919050565b600060808301600083015184820360008601526120ec8282611c77565b91505060208301516121016020860182611c4a565b5060408301516121146040860182611c59565b5060608301516121276060860182612132565b508091505092915050565b61213b816123ff565b82525050565b61214a816123ff565b82525050565b600061215c8284611ce9565b915081905092915050565b60006121738284611da9565b915081905092915050565b600060608201905081810360008301526121988186611cb0565b90506121a76020830185611c68565b6121b46040830184612141565b949350505050565b600060208201905081810360008301526121d68184611d1a565b905092915050565b600060208201905081810360008301526121f781611e37565b9050919050565b6000602082019050818103600083015261221781611e77565b9050919050565b6000602082019050818103600083015261223781611edd565b9050919050565b6000602082019050818103600083015261225781611f1d565b9050919050565b6000602082019050818103600083015261227781611f5d565b9050919050565b6000602082019050818103600083015261229781611f9d565b9050919050565b600060208201905081810360008301526122b781612003565b9050919050565b600060208201905081810360008301526122d781612069565b9050919050565b600060208201905081810360008301526122f881846120cf565b905092915050565b60006020820190506123156000830184612141565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561233e57600080fd5b8060405250919050565b600067ffffffffffffffff82111561235f57600080fd5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006123cc826123df565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612443578082015181840152602081019050612428565b83811115612452576000848401525b50505050565b6000601f19601f8301169050919050565b612472816123c1565b811461247d57600080fd5b50565b612489816123ff565b811461249457600080fd5b50565b6124a081612409565b81146124ab57600080fd5b5056fea2646970667358221220545dc0e2291c4952dd72d66cb9986efa1281ffaa6e0f50e2157cc3411a33787764736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
