{
  "_format": "hh-sol-artifact-1",
  "contractName": "Desmo",
  "sourceName": "contracts/Desmo.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "desmoHubAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "iexecproxy",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "requestID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "taskID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes1[]",
              "name": "scores",
              "type": "bytes1[]"
            },
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "indexed": false,
          "internalType": "struct Desmo.QueryResult",
          "name": "result",
          "type": "tuple"
        }
      ],
      "name": "QueryCompleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "QueryFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "requestID",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "string[]",
              "name": "selectedTDDsURLs",
              "type": "string[]"
            },
            {
              "internalType": "address[]",
              "name": "selectedAddresses",
              "type": "address[]"
            }
          ],
          "indexed": false,
          "internalType": "struct Desmo.Request",
          "name": "request",
          "type": "tuple"
        }
      ],
      "name": "RequestCreated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "generateNewRequestID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "taskID",
          "type": "bytes32"
        }
      ],
      "name": "getQueryResult",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "requestID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "taskID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes1[]",
              "name": "scores",
              "type": "bytes1[]"
            },
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "internalType": "struct Desmo.QueryResult",
          "name": "result",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "requestID",
          "type": "bytes32"
        }
      ],
      "name": "getQueryResultByRequestID",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "requestID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "taskID",
              "type": "bytes32"
            },
            {
              "internalType": "bytes1[]",
              "name": "scores",
              "type": "bytes1[]"
            },
            {
              "internalType": "bytes",
              "name": "result",
              "type": "bytes"
            }
          ],
          "internalType": "struct Desmo.QueryResult",
          "name": "result",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "iexecproxy",
      "outputs": [
        {
          "internalType": "contract IexecInterfaceToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_authorizedApp",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_authorizedDataset",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_authorizedWorkerpool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_requiredtag",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "m_requiredtrust",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "taskID",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "receiveResult",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "authorizedApp",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "authorizedDataset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "authorizedWorkerpool",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "requiredtag",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "requiredtrust",
          "type": "uint256"
        }
      ],
      "name": "updateEnv",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000600755600460085560006009553480156200002057600080fd5b50604051620035153803806200351583398181016040528101906200004691906200032e565b808060006200005a620002f660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200010981620002fe60201b60201c565b15620001565780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200021a565b6200017b733eca1b216a7df1c7689aeb259ffb83adfb894e7f620002fe60201b60201c565b15620001dc57733eca1b216a7df1c7689aeb259ffb83adfb894e7f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000219565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021090620003df565b60405180910390fd5b5b505081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350783931306040518263ffffffff1660e01b8152600401620002ba9190620003c2565b600060405180830381600087803b158015620002d557600080fd5b505af1158015620002ea573d6000803e3d6000fd5b50505050505062000460565b600033905090565b600080823b905060008163ffffffff1611915050919050565b600081519050620003288162000446565b92915050565b600080604083850312156200034257600080fd5b6000620003528582860162000317565b9250506020620003658582860162000317565b9150509250929050565b6200037a8162000412565b82525050565b60006200038f601a8362000401565b91507f696e76616c69642d696578656370726f78792d616464726573730000000000006000830152602082019050919050565b6000602082019050620003d960008301846200036f565b92915050565b60006020820190508181036000830152620003fa8162000380565b9050919050565b600082825260208201905092915050565b60006200041f8262000426565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620004518162000412565b81146200045d57600080fd5b50565b6130a580620004706000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806387ecbf591161008c578063e73482a211610066578063e73482a214610227578063f075b66614610245578063f2fde38b14610263578063f6eba5471461027f576100ea565b806387ecbf59146101bb5780638da5cb5b146101eb578063ca2ef3c414610209576100ea565b80635dd80855116100c85780635dd8085514610159578063715018a614610175578063745ec3a51461017f57806378dd4ae51461019d576100ea565b806318a4b2d0146100ef57806330d95cc21461010b578063482fb13e1461013b575b600080fd5b6101096004803603810190610104919061256b565b61029d565b005b6101256004803603810190610120919061260b565b61032d565b6040516101329190612d01565b60405180910390f35b610143610429565b6040516101509190612bdc565b60405180910390f35b610173600480360381019061016e919061265d565b61044f565b005b61017d61077e565b005b6101876108b8565b6040516101949190612c20565b60405180910390f35b6101a5610d38565b6040516101b29190612bdc565b60405180910390f35b6101d560048036038101906101d0919061260b565b610d5e565b6040516101e29190612d01565b60405180910390f35b6101f3610e71565b6040516102009190612bdc565b60405180910390f35b610211610e9a565b60405161021e9190612bdc565b60405180910390f35b61022f610ec0565b60405161023c9190612d45565b60405180910390f35b61024d610ec6565b60405161025a9190612c64565b60405180910390f35b61027d60048036038101906102789190612542565b610eec565b005b610287611095565b6040516102949190612c20565b60405180910390f35b6102a561109b565b73ffffffffffffffffffffffffffffffffffffffff166102c3610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031090612cc1565b60405180910390fd5b61032685858585856110a3565b5050505050565b610335611ae6565b60606103408361117b565b905060008151141561040a5760405180608001604052806000801b8152602001848152602001600067ffffffffffffffff8111801561037e57600080fd5b506040519080825280602002602001820160405280156103ad5781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff811180156103cb57600080fd5b506040519080825280601f01601f1916602001820160405280156103fe5781602001600182028036833780820191505090505b50815250915050610424565b610412611ae6565b61041c84836111e0565b905080925050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061045a8361117b565b905060008151141561049957827feb5aa58d1e67e9901d4047208dd47e9ce1c853f98552ac3c9f8a618787ca19e660405160405180910390a25061077a565b6104a1611ae6565b6104ab84836111e0565b90506060816040015190506104be611b14565b600a6000846000015181526020019081526020016000206040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156105cb578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105b75780601f1061058c576101008083540402835291602001916105b7565b820191906000526020600020905b81548152906001019060200180831161059a57829003601f168201915b50505050508152602001906001019061050f565b5050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561065857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161060e575b505050505081525050905060005b81604001515181101561073c57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db2ebdad836040015183815181106106c157fe5b60200260200101518584815181106106d557fe5b602002602001015160f81c6040518363ffffffff1660e01b81526004016106fd929190612bf7565b600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b505050508080600101915050610666565b50857f7ca910b273d9b3d1d24a628abe3b80aa058fb47c8cc762bc0d4839aefe43621a8460405161076d9190612d01565b60405180910390a2505050505b5050565b61078661109b565b73ffffffffffffffffffffffffffffffffffffffff166107a4610e71565b73ffffffffffffffffffffffffffffffffffffffff16146107fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f190612cc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060075460001b9050600060085490506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb7b608c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093457600080fd5b505afa158015610948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096c9190612774565b905060018110156109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990612ce1565b60405180910390fd5b600081600954816109bf57fe5b069050818311156109ce578192505b60008390506109db611b14565b60405180606001604052808781526020018367ffffffffffffffff81118015610a0357600080fd5b50604051908082528060200260200182016040528015610a3757816020015b6060815260200190600190039081610a225790505b5081526020018367ffffffffffffffff81118015610a5457600080fd5b50604051908082528060200260200182016040528015610a835781602001602082028036833780820191505090505b5081525090505b6000851115610c8157600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610aee9190612d45565b60006040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b4391906126f2565b60200151816040015186840381518110610b5957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610bee9190612d45565b60006040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4391906126f2565b60000151816020015186840381518110610c5957fe5b6020026020010181905250836001840181610c7057fe5b069250848060019003955050610a8a565b82600981905550600160076000828254019250508190555080600a6000888152602001908152602001600020600082015181600001556020820151816001019080519060200190610cd3929190611b38565b506040820151816002019080519060200190610cf0929190611b98565b50905050857f056ae828068d78df7bc67a1f01305cd45513887ee9abeed6b2b77eeb10d533d882604051610d249190612d23565b60405180910390a285965050505050505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d66611ae6565b6000600b60008481526020019081526020016000205490506060610d898261117b565b9050600081511415610e51576040518060800160405280858152602001838152602001600067ffffffffffffffff81118015610dc457600080fd5b50604051908082528060200260200182016040528015610df35781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff81118015610e1157600080fd5b506040519080825280601f01601f191660200182016040528015610e445781602001600182028036833780820191505090505b5081525092505050610e6c565b610e59611ae6565b610e6383836111e0565b90508093505050505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ef461109b565b73ffffffffffffffffffffffffffffffffffffffff16610f12610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612cc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90612ca1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600033905090565b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600581905550806006819055505050505050565b6060600060608061118b85611420565b9250925092508281906111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb9190612c7f565b60405180910390fd5b50819350505050919050565b6111e8611ae6565b600060209050600080848060200190518101906112059190612634565b9050848360ff168151811061121657fe5b602001015160f81c60f81b60f81c915060608260ff1667ffffffffffffffff8111801561124257600080fd5b506040519080825280602002602001820160405280156112715781602001602082028036833780820191505090505b50905060005b8360ff168160ff1610156113185760008760018388010160ff168151811061129b57fe5b602001015160f81c60f81b905080838360ff16815181106112b857fe5b60200260200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050508080600101915050611277565b5060608360ff168560ff166001895103030367ffffffffffffffff8111801561134057600080fd5b506040519080825280601f01601f1916602001820160405280156113735781602001600182028036833780820191505090505b50905060005b81518160ff1610156113f15787600182878901010160ff168151811061139b57fe5b602001015160f81c60f81b828260ff16815181106113b557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050611379565b506040518060800160405280848152602001898152602001838152602001828152509550505050505092915050565b600060608061142d611c22565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adccf0d5866040518263ffffffff1660e01b81526004016114889190612c20565b60006040518083038186803b1580156114a057600080fd5b505afa1580156114b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114dd9190612733565b90506114e7611cac565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b74861b283602001516040518263ffffffff1660e01b81526004016115469190612c20565b60006040518083038186803b15801561155e57600080fd5b505afa158015611572573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061159b91906126b1565b9050600360048111156115aa57fe5b826000015160048111156115ba57fe5b1461160a576000826101c001516040518060400160405280601481526020017f726573756c742d6e6f742d617661696c61626c650000000000000000000000008152509450945094505050611988565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561169c575061169a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000015160000151600461198f565b155b156116ec576000826101c001516040518060400160405280601081526020017f756e617574686f72697a65642d617070000000000000000000000000000000008152509450945094505050611988565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561177e575061177c600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826020015160000151600461198f565b155b156117ce576000826101c001516040518060400160405280601481526020017f756e617574686f72697a65642d646174617365740000000000000000000000008152509450945094505050611988565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611860575061185e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040015160000151600461198f565b155b156118b0576000826101c001516040518060400160405280601781526020017f756e617574686f72697a65642d776f726b6572706f6f6c0000000000000000008152509450945094505050611988565b6000801b8160a0015119600554161461190e576000826101c001516040518060400160405280600b81526020017f696e76616c69642d7461670000000000000000000000000000000000000000008152509450945094505050611988565b80606001516006541115611967576000826101c001516040518060400160405280600d81526020017f696e76616c69642d7472757374000000000000000000000000000000000000008152509450945094505050611988565b6001826101c001516040518060200160405280600081525094509450945050505b9193909250565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119ce5760019050611ac6565b6119d784611acd565b6119e45760009050611ac6565b8373ffffffffffffffffffffffffffffffffffffffff1663d202158d8473ffffffffffffffffffffffffffffffffffffffff1660001b846040518363ffffffff1660e01b8152600401611a38929190612c3b565b60206040518083038186803b158015611a5057600080fd5b505afa925050508015611a8157506040513d601f19601f82011682018060405250810190611a7e91906125e2565b60015b611ac1573d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b506000915050611ac6565b809150505b9392505050565b600080823b905060008163ffffffff1611915050919050565b6040518060800160405280600080191681526020016000801916815260200160608152602001606081525090565b60405180606001604052806000801916815260200160608152602001606081525090565b828054828255906000526020600020908101928215611b87579160200282015b82811115611b86578251829080519060200190611b76929190611d79565b5091602001919060010190611b58565b5b509050611b949190611df9565b5090565b828054828255906000526020600020908101928215611c11579160200282015b82811115611c105782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611bb8565b5b509050611c1e9190611e1d565b5090565b604051806101e0016040528060006004811115611c3b57fe5b815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815260200160008019168152602001600081526020016000815260200160608152602001600080191681526020016060815260200160008152602001606081525090565b604051806101e00160405280611cc0611e58565b8152602001611ccd611e58565b8152602001611cda611e58565b8152602001600081526020016000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dba57805160ff1916838001178555611de8565b82800160010185558215611de8579182015b82811115611de7578251825591602001919060010190611dcc565b5b509050611df59190611ea5565b5090565b5b80821115611e195760008181611e109190611ec2565b50600101611dfa565b5090565b5b80821115611e5457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611e1e565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b5b80821115611ebe576000816000905550600101611ea6565b5090565b50805460018160011615610100020316600290046000825580601f10611ee85750611f07565b601f016020900490600052602060002090810190611f069190611ea5565b5b50565b600081359050611f1981613003565b92915050565b600081519050611f2e81613003565b92915050565b600082601f830112611f4557600080fd5b8151611f58611f5382612d8d565b612d60565b91508181835260208401935060208101905083856020840282011115611f7d57600080fd5b60005b83811015611fad5781611f938882611f1f565b845260208401935060208301925050600181019050611f80565b5050505092915050565b600081519050611fc68161301a565b92915050565b600081359050611fdb81613031565b92915050565b600081519050611ff081613031565b92915050565b600082601f83011261200757600080fd5b813561201a61201582612db5565b612d60565b9150808252602083016020830185838301111561203657600080fd5b612041838284612fb0565b50505092915050565b600082601f83011261205b57600080fd5b815161206e61206982612db5565b612d60565b9150808252602083016020830185838301111561208a57600080fd5b612095838284612fbf565b50505092915050565b6000815190506120ad81613048565b92915050565b600082601f8301126120c457600080fd5b81516120d76120d282612de1565b612d60565b915080825260208301602083018583830111156120f357600080fd5b6120fe838284612fbf565b50505092915050565b60006102a0828403121561211a57600080fd5b6121256101e0612d60565b9050600061213584828501612284565b600083015250606061214984828501612284565b60208301525060c061215d84828501612284565b6040830152506101206121728482850161252d565b6060830152506101406121878482850161252d565b60808301525061016061219c84828501611fe1565b60a0830152506101806121b184828501611f1f565b60c0830152506101a06121c684828501611f1f565b60e0830152506101c06121db84828501611f1f565b610100830152506101e082015167ffffffffffffffff8111156121fd57600080fd5b612209848285016120b3565b6101208301525061020061221f8482850161252d565b610140830152506102206122358482850161252d565b6101608301525061024061224b8482850161252d565b610180830152506102606122618482850161252d565b6101a0830152506102806122778482850161252d565b6101c08301525092915050565b60006060828403121561229657600080fd5b6122a06060612d60565b905060006122b084828501611f1f565b60008301525060206122c484828501611f1f565b60208301525060406122d88482850161252d565b60408301525092915050565b6000608082840312156122f657600080fd5b6123006080612d60565b9050600082015167ffffffffffffffff81111561231c57600080fd5b612328848285016120b3565b600083015250602061233c84828501611f1f565b602083015250604061235084828501611fb7565b60408301525060606123648482850161252d565b60608301525092915050565b60006101e0828403121561238357600080fd5b61238e6101e0612d60565b9050600061239e8482850161209e565b60008301525060206123b284828501611fe1565b60208301525060406123c68482850161252d565b60408301525060606123da8482850161252d565b60608301525060806123ee8482850161252d565b60808301525060a06124028482850161252d565b60a08301525060c06124168482850161252d565b60c08301525060e061242a84828501611fe1565b60e08301525061010061243f8482850161252d565b610100830152506101206124558482850161252d565b6101208301525061014082015167ffffffffffffffff81111561247757600080fd5b61248384828501611f34565b6101408301525061016061249984828501611fe1565b6101608301525061018082015167ffffffffffffffff8111156124bb57600080fd5b6124c78482850161204a565b610180830152506101a06124dd8482850161252d565b6101a0830152506101c082015167ffffffffffffffff8111156124ff57600080fd5b61250b8482850161204a565b6101c08301525092915050565b60008135905061252781613058565b92915050565b60008151905061253c81613058565b92915050565b60006020828403121561255457600080fd5b600061256284828501611f0a565b91505092915050565b600080600080600060a0868803121561258357600080fd5b600061259188828901611f0a565b95505060206125a288828901611f0a565b94505060406125b388828901611f0a565b93505060606125c488828901611fcc565b92505060806125d588828901612518565b9150509295509295909350565b6000602082840312156125f457600080fd5b600061260284828501611fb7565b91505092915050565b60006020828403121561261d57600080fd5b600061262b84828501611fcc565b91505092915050565b60006020828403121561264657600080fd5b600061265484828501611fe1565b91505092915050565b6000806040838503121561267057600080fd5b600061267e85828601611fcc565b925050602083013567ffffffffffffffff81111561269b57600080fd5b6126a785828601611ff6565b9150509250929050565b6000602082840312156126c357600080fd5b600082015167ffffffffffffffff8111156126dd57600080fd5b6126e984828501612107565b91505092915050565b60006020828403121561270457600080fd5b600082015167ffffffffffffffff81111561271e57600080fd5b61272a848285016122e4565b91505092915050565b60006020828403121561274557600080fd5b600082015167ffffffffffffffff81111561275f57600080fd5b61276b84828501612370565b91505092915050565b60006020828403121561278657600080fd5b60006127948482850161252d565b91505092915050565b60006127a983836127e1565b60208301905092915050565b60006127c18383612930565b60208301905092915050565b60006127d983836129a5565b905092915050565b6127ea81612f01565b82525050565b6127f981612f01565b82525050565b600061280a82612e3d565b6128148185612e9b565b935061281f83612e0d565b8060005b83811015612850578151612837888261279d565b975061284283612e74565b925050600181019050612823565b5085935050505092915050565b600061286882612e48565b6128728185612eac565b935061287d83612e1d565b8060005b838110156128ae57815161289588826127b5565b97506128a083612e81565b925050600181019050612881565b5085935050505092915050565b60006128c682612e53565b6128d08185612ebd565b9350836020820285016128e285612e2d565b8060005b8581101561291e57848403895281516128ff85826127cd565b945061290a83612e8e565b925060208a019950506001810190506128e6565b50829750879550505050505092915050565b61293981612f1f565b82525050565b61294881612f4b565b82525050565b61295781612f4b565b82525050565b600061296882612e5e565b6129728185612ece565b9350612982818560208601612fbf565b61298b81612ff2565b840191505092915050565b61299f81612f8c565b82525050565b60006129b082612e69565b6129ba8185612edf565b93506129ca818560208601612fbf565b6129d381612ff2565b840191505092915050565b60006129e982612e69565b6129f38185612ef0565b9350612a03818560208601612fbf565b612a0c81612ff2565b840191505092915050565b6000612a24602683612ef0565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a8a602083612ef0565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612aca601183612ef0565b91507f4e6f205444447320617661696c61626c650000000000000000000000000000006000830152602082019050919050565b6000608083016000830151612b15600086018261293f565b506020830151612b28602086018261293f565b5060408301518482036040860152612b40828261285d565b91505060608301518482036060860152612b5a828261295d565b9150508091505092915050565b6000606083016000830151612b7f600086018261293f565b5060208301518482036020860152612b9782826128bb565b91505060408301518482036040860152612bb182826127ff565b9150508091505092915050565b612bc781612f75565b82525050565b612bd681612f7f565b82525050565b6000602082019050612bf160008301846127f0565b92915050565b6000604082019050612c0c60008301856127f0565b612c196020830184612bcd565b9392505050565b6000602082019050612c35600083018461294e565b92915050565b6000604082019050612c50600083018561294e565b612c5d6020830184612bbe565b9392505050565b6000602082019050612c796000830184612996565b92915050565b60006020820190508181036000830152612c9981846129de565b905092915050565b60006020820190508181036000830152612cba81612a17565b9050919050565b60006020820190508181036000830152612cda81612a7d565b9050919050565b60006020820190508181036000830152612cfa81612abd565b9050919050565b60006020820190508181036000830152612d1b8184612afd565b905092915050565b60006020820190508181036000830152612d3d8184612b67565b905092915050565b6000602082019050612d5a6000830184612bbe565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612d8357600080fd5b8060405250919050565b600067ffffffffffffffff821115612da457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612dcc57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612df857600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612f0c82612f55565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612f9782612f9e565b9050919050565b6000612fa982612f55565b9050919050565b82818337600083830152505050565b60005b83811015612fdd578082015181840152602081019050612fc2565b83811115612fec576000848401525b50505050565b6000601f19601f8301169050919050565b61300c81612f01565b811461301757600080fd5b50565b61302381612f13565b811461302e57600080fd5b50565b61303a81612f4b565b811461304557600080fd5b50565b6005811061305557600080fd5b50565b61306181612f75565b811461306c57600080fd5b5056fea26469706673582212204152f63ca630d3cdbea05d236e8bb01e2e09490dfef69f3e4306af03342ab01564736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806387ecbf591161008c578063e73482a211610066578063e73482a214610227578063f075b66614610245578063f2fde38b14610263578063f6eba5471461027f576100ea565b806387ecbf59146101bb5780638da5cb5b146101eb578063ca2ef3c414610209576100ea565b80635dd80855116100c85780635dd8085514610159578063715018a614610175578063745ec3a51461017f57806378dd4ae51461019d576100ea565b806318a4b2d0146100ef57806330d95cc21461010b578063482fb13e1461013b575b600080fd5b6101096004803603810190610104919061256b565b61029d565b005b6101256004803603810190610120919061260b565b61032d565b6040516101329190612d01565b60405180910390f35b610143610429565b6040516101509190612bdc565b60405180910390f35b610173600480360381019061016e919061265d565b61044f565b005b61017d61077e565b005b6101876108b8565b6040516101949190612c20565b60405180910390f35b6101a5610d38565b6040516101b29190612bdc565b60405180910390f35b6101d560048036038101906101d0919061260b565b610d5e565b6040516101e29190612d01565b60405180910390f35b6101f3610e71565b6040516102009190612bdc565b60405180910390f35b610211610e9a565b60405161021e9190612bdc565b60405180910390f35b61022f610ec0565b60405161023c9190612d45565b60405180910390f35b61024d610ec6565b60405161025a9190612c64565b60405180910390f35b61027d60048036038101906102789190612542565b610eec565b005b610287611095565b6040516102949190612c20565b60405180910390f35b6102a561109b565b73ffffffffffffffffffffffffffffffffffffffff166102c3610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031090612cc1565b60405180910390fd5b61032685858585856110a3565b5050505050565b610335611ae6565b60606103408361117b565b905060008151141561040a5760405180608001604052806000801b8152602001848152602001600067ffffffffffffffff8111801561037e57600080fd5b506040519080825280602002602001820160405280156103ad5781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff811180156103cb57600080fd5b506040519080825280601f01601f1916602001820160405280156103fe5781602001600182028036833780820191505090505b50815250915050610424565b610412611ae6565b61041c84836111e0565b905080925050505b919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061045a8361117b565b905060008151141561049957827feb5aa58d1e67e9901d4047208dd47e9ce1c853f98552ac3c9f8a618787ca19e660405160405180910390a25061077a565b6104a1611ae6565b6104ab84836111e0565b90506060816040015190506104be611b14565b600a6000846000015181526020019081526020016000206040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156105cb578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105b75780601f1061058c576101008083540402835291602001916105b7565b820191906000526020600020905b81548152906001019060200180831161059a57829003601f168201915b50505050508152602001906001019061050f565b5050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561065857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161060e575b505050505081525050905060005b81604001515181101561073c57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db2ebdad836040015183815181106106c157fe5b60200260200101518584815181106106d557fe5b602002602001015160f81c6040518363ffffffff1660e01b81526004016106fd929190612bf7565b600060405180830381600087803b15801561071757600080fd5b505af115801561072b573d6000803e3d6000fd5b505050508080600101915050610666565b50857f7ca910b273d9b3d1d24a628abe3b80aa058fb47c8cc762bc0d4839aefe43621a8460405161076d9190612d01565b60405180910390a2505050505b5050565b61078661109b565b73ffffffffffffffffffffffffffffffffffffffff166107a4610e71565b73ffffffffffffffffffffffffffffffffffffffff16146107fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f190612cc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060075460001b9050600060085490506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eb7b608c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093457600080fd5b505afa158015610948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096c9190612774565b905060018110156109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990612ce1565b60405180910390fd5b600081600954816109bf57fe5b069050818311156109ce578192505b60008390506109db611b14565b60405180606001604052808781526020018367ffffffffffffffff81118015610a0357600080fd5b50604051908082528060200260200182016040528015610a3757816020015b6060815260200190600190039081610a225790505b5081526020018367ffffffffffffffff81118015610a5457600080fd5b50604051908082528060200260200182016040528015610a835781602001602082028036833780820191505090505b5081525090505b6000851115610c8157600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610aee9190612d45565b60006040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b4391906126f2565b60200151816040015186840381518110610b5957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb3cf6cb846040518263ffffffff1660e01b8152600401610bee9190612d45565b60006040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c4391906126f2565b60000151816020015186840381518110610c5957fe5b6020026020010181905250836001840181610c7057fe5b069250848060019003955050610a8a565b82600981905550600160076000828254019250508190555080600a6000888152602001908152602001600020600082015181600001556020820151816001019080519060200190610cd3929190611b38565b506040820151816002019080519060200190610cf0929190611b98565b50905050857f056ae828068d78df7bc67a1f01305cd45513887ee9abeed6b2b77eeb10d533d882604051610d249190612d23565b60405180910390a285965050505050505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d66611ae6565b6000600b60008481526020019081526020016000205490506060610d898261117b565b9050600081511415610e51576040518060800160405280858152602001838152602001600067ffffffffffffffff81118015610dc457600080fd5b50604051908082528060200260200182016040528015610df35781602001602082028036833780820191505090505b508152602001600067ffffffffffffffff81118015610e1157600080fd5b506040519080825280601f01601f191660200182016040528015610e445781602001600182028036833780820191505090505b5081525092505050610e6c565b610e59611ae6565b610e6383836111e0565b90508093505050505b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ef461109b565b73ffffffffffffffffffffffffffffffffffffffff16610f12610e71565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612cc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90612ca1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b600033905090565b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600581905550806006819055505050505050565b6060600060608061118b85611420565b9250925092508281906111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb9190612c7f565b60405180910390fd5b50819350505050919050565b6111e8611ae6565b600060209050600080848060200190518101906112059190612634565b9050848360ff168151811061121657fe5b602001015160f81c60f81b60f81c915060608260ff1667ffffffffffffffff8111801561124257600080fd5b506040519080825280602002602001820160405280156112715781602001602082028036833780820191505090505b50905060005b8360ff168160ff1610156113185760008760018388010160ff168151811061129b57fe5b602001015160f81c60f81b905080838360ff16815181106112b857fe5b60200260200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050508080600101915050611277565b5060608360ff168560ff166001895103030367ffffffffffffffff8111801561134057600080fd5b506040519080825280601f01601f1916602001820160405280156113735781602001600182028036833780820191505090505b50905060005b81518160ff1610156113f15787600182878901010160ff168151811061139b57fe5b602001015160f81c60f81b828260ff16815181106113b557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050611379565b506040518060800160405280848152602001898152602001838152602001828152509550505050505092915050565b600060608061142d611c22565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663adccf0d5866040518263ffffffff1660e01b81526004016114889190612c20565b60006040518083038186803b1580156114a057600080fd5b505afa1580156114b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114dd9190612733565b90506114e7611cac565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b74861b283602001516040518263ffffffff1660e01b81526004016115469190612c20565b60006040518083038186803b15801561155e57600080fd5b505afa158015611572573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061159b91906126b1565b9050600360048111156115aa57fe5b826000015160048111156115ba57fe5b1461160a576000826101c001516040518060400160405280601481526020017f726573756c742d6e6f742d617661696c61626c650000000000000000000000008152509450945094505050611988565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561169c575061169a600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000015160000151600461198f565b155b156116ec576000826101c001516040518060400160405280601081526020017f756e617574686f72697a65642d617070000000000000000000000000000000008152509450945094505050611988565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561177e575061177c600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826020015160000151600461198f565b155b156117ce576000826101c001516040518060400160405280601481526020017f756e617574686f72697a65642d646174617365740000000000000000000000008152509450945094505050611988565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611860575061185e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040015160000151600461198f565b155b156118b0576000826101c001516040518060400160405280601781526020017f756e617574686f72697a65642d776f726b6572706f6f6c0000000000000000008152509450945094505050611988565b6000801b8160a0015119600554161461190e576000826101c001516040518060400160405280600b81526020017f696e76616c69642d7461670000000000000000000000000000000000000000008152509450945094505050611988565b80606001516006541115611967576000826101c001516040518060400160405280600d81526020017f696e76616c69642d7472757374000000000000000000000000000000000000008152509450945094505050611988565b6001826101c001516040518060200160405280600081525094509450945050505b9193909250565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119ce5760019050611ac6565b6119d784611acd565b6119e45760009050611ac6565b8373ffffffffffffffffffffffffffffffffffffffff1663d202158d8473ffffffffffffffffffffffffffffffffffffffff1660001b846040518363ffffffff1660e01b8152600401611a38929190612c3b565b60206040518083038186803b158015611a5057600080fd5b505afa925050508015611a8157506040513d601f19601f82011682018060405250810190611a7e91906125e2565b60015b611ac1573d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b506000915050611ac6565b809150505b9392505050565b600080823b905060008163ffffffff1611915050919050565b6040518060800160405280600080191681526020016000801916815260200160608152602001606081525090565b60405180606001604052806000801916815260200160608152602001606081525090565b828054828255906000526020600020908101928215611b87579160200282015b82811115611b86578251829080519060200190611b76929190611d79565b5091602001919060010190611b58565b5b509050611b949190611df9565b5090565b828054828255906000526020600020908101928215611c11579160200282015b82811115611c105782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611bb8565b5b509050611c1e9190611e1d565b5090565b604051806101e0016040528060006004811115611c3b57fe5b815260200160008019168152602001600081526020016000815260200160008152602001600081526020016000815260200160008019168152602001600081526020016000815260200160608152602001600080191681526020016060815260200160008152602001606081525090565b604051806101e00160405280611cc0611e58565b8152602001611ccd611e58565b8152602001611cda611e58565b8152602001600081526020016000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611dba57805160ff1916838001178555611de8565b82800160010185558215611de8579182015b82811115611de7578251825591602001919060010190611dcc565b5b509050611df59190611ea5565b5090565b5b80821115611e195760008181611e109190611ec2565b50600101611dfa565b5090565b5b80821115611e5457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611e1e565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b5b80821115611ebe576000816000905550600101611ea6565b5090565b50805460018160011615610100020316600290046000825580601f10611ee85750611f07565b601f016020900490600052602060002090810190611f069190611ea5565b5b50565b600081359050611f1981613003565b92915050565b600081519050611f2e81613003565b92915050565b600082601f830112611f4557600080fd5b8151611f58611f5382612d8d565b612d60565b91508181835260208401935060208101905083856020840282011115611f7d57600080fd5b60005b83811015611fad5781611f938882611f1f565b845260208401935060208301925050600181019050611f80565b5050505092915050565b600081519050611fc68161301a565b92915050565b600081359050611fdb81613031565b92915050565b600081519050611ff081613031565b92915050565b600082601f83011261200757600080fd5b813561201a61201582612db5565b612d60565b9150808252602083016020830185838301111561203657600080fd5b612041838284612fb0565b50505092915050565b600082601f83011261205b57600080fd5b815161206e61206982612db5565b612d60565b9150808252602083016020830185838301111561208a57600080fd5b612095838284612fbf565b50505092915050565b6000815190506120ad81613048565b92915050565b600082601f8301126120c457600080fd5b81516120d76120d282612de1565b612d60565b915080825260208301602083018583830111156120f357600080fd5b6120fe838284612fbf565b50505092915050565b60006102a0828403121561211a57600080fd5b6121256101e0612d60565b9050600061213584828501612284565b600083015250606061214984828501612284565b60208301525060c061215d84828501612284565b6040830152506101206121728482850161252d565b6060830152506101406121878482850161252d565b60808301525061016061219c84828501611fe1565b60a0830152506101806121b184828501611f1f565b60c0830152506101a06121c684828501611f1f565b60e0830152506101c06121db84828501611f1f565b610100830152506101e082015167ffffffffffffffff8111156121fd57600080fd5b612209848285016120b3565b6101208301525061020061221f8482850161252d565b610140830152506102206122358482850161252d565b6101608301525061024061224b8482850161252d565b610180830152506102606122618482850161252d565b6101a0830152506102806122778482850161252d565b6101c08301525092915050565b60006060828403121561229657600080fd5b6122a06060612d60565b905060006122b084828501611f1f565b60008301525060206122c484828501611f1f565b60208301525060406122d88482850161252d565b60408301525092915050565b6000608082840312156122f657600080fd5b6123006080612d60565b9050600082015167ffffffffffffffff81111561231c57600080fd5b612328848285016120b3565b600083015250602061233c84828501611f1f565b602083015250604061235084828501611fb7565b60408301525060606123648482850161252d565b60608301525092915050565b60006101e0828403121561238357600080fd5b61238e6101e0612d60565b9050600061239e8482850161209e565b60008301525060206123b284828501611fe1565b60208301525060406123c68482850161252d565b60408301525060606123da8482850161252d565b60608301525060806123ee8482850161252d565b60808301525060a06124028482850161252d565b60a08301525060c06124168482850161252d565b60c08301525060e061242a84828501611fe1565b60e08301525061010061243f8482850161252d565b610100830152506101206124558482850161252d565b6101208301525061014082015167ffffffffffffffff81111561247757600080fd5b61248384828501611f34565b6101408301525061016061249984828501611fe1565b6101608301525061018082015167ffffffffffffffff8111156124bb57600080fd5b6124c78482850161204a565b610180830152506101a06124dd8482850161252d565b6101a0830152506101c082015167ffffffffffffffff8111156124ff57600080fd5b61250b8482850161204a565b6101c08301525092915050565b60008135905061252781613058565b92915050565b60008151905061253c81613058565b92915050565b60006020828403121561255457600080fd5b600061256284828501611f0a565b91505092915050565b600080600080600060a0868803121561258357600080fd5b600061259188828901611f0a565b95505060206125a288828901611f0a565b94505060406125b388828901611f0a565b93505060606125c488828901611fcc565b92505060806125d588828901612518565b9150509295509295909350565b6000602082840312156125f457600080fd5b600061260284828501611fb7565b91505092915050565b60006020828403121561261d57600080fd5b600061262b84828501611fcc565b91505092915050565b60006020828403121561264657600080fd5b600061265484828501611fe1565b91505092915050565b6000806040838503121561267057600080fd5b600061267e85828601611fcc565b925050602083013567ffffffffffffffff81111561269b57600080fd5b6126a785828601611ff6565b9150509250929050565b6000602082840312156126c357600080fd5b600082015167ffffffffffffffff8111156126dd57600080fd5b6126e984828501612107565b91505092915050565b60006020828403121561270457600080fd5b600082015167ffffffffffffffff81111561271e57600080fd5b61272a848285016122e4565b91505092915050565b60006020828403121561274557600080fd5b600082015167ffffffffffffffff81111561275f57600080fd5b61276b84828501612370565b91505092915050565b60006020828403121561278657600080fd5b60006127948482850161252d565b91505092915050565b60006127a983836127e1565b60208301905092915050565b60006127c18383612930565b60208301905092915050565b60006127d983836129a5565b905092915050565b6127ea81612f01565b82525050565b6127f981612f01565b82525050565b600061280a82612e3d565b6128148185612e9b565b935061281f83612e0d565b8060005b83811015612850578151612837888261279d565b975061284283612e74565b925050600181019050612823565b5085935050505092915050565b600061286882612e48565b6128728185612eac565b935061287d83612e1d565b8060005b838110156128ae57815161289588826127b5565b97506128a083612e81565b925050600181019050612881565b5085935050505092915050565b60006128c682612e53565b6128d08185612ebd565b9350836020820285016128e285612e2d565b8060005b8581101561291e57848403895281516128ff85826127cd565b945061290a83612e8e565b925060208a019950506001810190506128e6565b50829750879550505050505092915050565b61293981612f1f565b82525050565b61294881612f4b565b82525050565b61295781612f4b565b82525050565b600061296882612e5e565b6129728185612ece565b9350612982818560208601612fbf565b61298b81612ff2565b840191505092915050565b61299f81612f8c565b82525050565b60006129b082612e69565b6129ba8185612edf565b93506129ca818560208601612fbf565b6129d381612ff2565b840191505092915050565b60006129e982612e69565b6129f38185612ef0565b9350612a03818560208601612fbf565b612a0c81612ff2565b840191505092915050565b6000612a24602683612ef0565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a8a602083612ef0565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612aca601183612ef0565b91507f4e6f205444447320617661696c61626c650000000000000000000000000000006000830152602082019050919050565b6000608083016000830151612b15600086018261293f565b506020830151612b28602086018261293f565b5060408301518482036040860152612b40828261285d565b91505060608301518482036060860152612b5a828261295d565b9150508091505092915050565b6000606083016000830151612b7f600086018261293f565b5060208301518482036020860152612b9782826128bb565b91505060408301518482036040860152612bb182826127ff565b9150508091505092915050565b612bc781612f75565b82525050565b612bd681612f7f565b82525050565b6000602082019050612bf160008301846127f0565b92915050565b6000604082019050612c0c60008301856127f0565b612c196020830184612bcd565b9392505050565b6000602082019050612c35600083018461294e565b92915050565b6000604082019050612c50600083018561294e565b612c5d6020830184612bbe565b9392505050565b6000602082019050612c796000830184612996565b92915050565b60006020820190508181036000830152612c9981846129de565b905092915050565b60006020820190508181036000830152612cba81612a17565b9050919050565b60006020820190508181036000830152612cda81612a7d565b9050919050565b60006020820190508181036000830152612cfa81612abd565b9050919050565b60006020820190508181036000830152612d1b8184612afd565b905092915050565b60006020820190508181036000830152612d3d8184612b67565b905092915050565b6000602082019050612d5a6000830184612bbe565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612d8357600080fd5b8060405250919050565b600067ffffffffffffffff821115612da457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff821115612dcc57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612df857600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612f0c82612f55565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612f9782612f9e565b9050919050565b6000612fa982612f55565b9050919050565b82818337600083830152505050565b60005b83811015612fdd578082015181840152602081019050612fc2565b83811115612fec576000848401525b50505050565b6000601f19601f8301169050919050565b61300c81612f01565b811461301757600080fd5b50565b61302381612f13565b811461302e57600080fd5b50565b61303a81612f4b565b811461304557600080fd5b50565b6005811061305557600080fd5b50565b61306181612f75565b811461306c57600080fd5b5056fea26469706673582212204152f63ca630d3cdbea05d236e8bb01e2e09490dfef69f3e4306af03342ab01564736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
