{
  "_format": "hh-sol-artifact-1",
  "contractName": "DatasetsChallenge",
  "sourceName": "src/v0.8/module/dataset/DatasetsChallenge.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_verifier",
          "type": "address"
        }
      ],
      "name": "DatasetChallengeProofsSubmitted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "datasetProof",
      "outputs": [
        {
          "internalType": "contract IDatasetsProof",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "escrow",
      "outputs": [
        {
          "internalType": "contract IEscrow",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "getChallengeCount",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "_auditor",
          "type": "address"
        }
      ],
      "name": "getDatasetChallengeProofs",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[][]",
          "name": "_siblings",
          "type": "bytes32[][]"
        },
        {
          "internalType": "uint32[]",
          "name": "_paths",
          "type": "uint32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        }
      ],
      "name": "getDatasetChallengeProofsCount",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getImplementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governanceAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governanceAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_roles",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_datasetProof",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_merkleUtils",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_escrow",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "_auditor",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_randomSeed",
          "type": "uint64"
        }
      ],
      "name": "isDatasetChallengeProofDuplicate",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "merkleUtils",
      "outputs": [
        {
          "internalType": "contract IMerkleUtils",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "roles",
      "outputs": [
        {
          "internalType": "contract IRoles",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_datasetId",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "_randomSeed",
          "type": "uint64"
        },
        {
          "internalType": "bytes32[]",
          "name": "_leaves",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[][]",
          "name": "_siblings",
          "type": "bytes32[][]"
        },
        {
          "internalType": "uint32[]",
          "name": "_paths",
          "type": "uint32[]"
        }
      ],
      "name": "submitDatasetChallengeProofs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612d6961004c60003960008181610591015281816105d1015281816106590152818161069901526107150152612d696000f3fe6080604052600436106100b85760003560e01c80630465c1e1146100bd5780630ecee42d146100f35780631459457a146101225780631fd40abb146101445780633659cfe614610171578063392f5f641461019157806347b0f08e146101be5780634f1ef286146101de57806352d1902d146101f157806357ca304f14610213578063795053d31461023357806396b1a02b14610260578063aaf10f421461028d578063cc22e64f146102a2578063e2fdcc17146102c2575b600080fd5b3480156100c957600080fd5b506100dd6100d8366004611a9f565b6102e2565b6040516100ea9190611acc565b60405180910390f35b3480156100ff57600080fd5b5061011361010e366004611b05565b61033e565b6040516100ea93929190611cab565b34801561012e57600080fd5b5061014261013d366004611ce4565b61039e565b005b34801561015057600080fd5b5061016461015f366004611a9f565b6104cf565b6040516100ea9190611d65565b34801561017d57600080fd5b5061014261018c366004611d73565b610587565b34801561019d57600080fd5b506067546101b1906001600160a01b031681565b6040516100ea9190611dcc565b3480156101ca57600080fd5b506069546101b1906001600160a01b031681565b6101426101ec366004611edf565b61064f565b3480156101fd57600080fd5b50610206610708565b6040516100ea9190611f2c565b34801561021f57600080fd5b5061014261022e36600461210a565b610765565b34801561023f57600080fd5b50606654610253906001600160a01b031681565b6040516100ea91906121cc565b34801561026c57600080fd5b5061028061027b3660046121da565b610b50565b6040516100ea9190612232565b34801561029957600080fd5b50610253610b7e565b3480156102ae57600080fd5b50606a546101b1906001600160a01b031681565b3480156102ce57600080fd5b506068546101b1906001600160a01b031681565b600081806001600160401b03166000036103175760405162461bcd60e51b815260040161030e90612270565b60405180910390fd5b6001600160401b0383166000908152606560205260409020805461ffff165b949350505050565b606080606084806001600160401b031660000361036d5760405162461bcd60e51b815260040161030e90612270565b6001600160401b038616600090815260656020526040902061038f8187610b8d565b94509450945050509250925092565b600054610100900460ff16158080156103be5750600054600160ff909116105b806103df57506103cd30610d74565b1580156103df575060005460ff166001145b6103fb5760405162461bcd60e51b815260040161030e906122ce565b6000805460ff19166001179055801561041e576000805461ff0019166101001790555b606680546001600160a01b03199081166001600160a01b0389811691909117909255606780548216888416179055606880548216858416179055606a805482168784161790556069805490911691851691909117905561047c610d83565b80156104c7576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906104be906001906122f2565b60405180910390a15b505050505050565b606a5460405163365e3b9b60e11b81526000916103e89183916001600160a01b031690636cbc7736906105089087908590600401612344565b602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610549919061236a565b90508163ffffffff16816001600160401b0316101561056c575060019392505050565b61057c63ffffffff8316826123b7565b6103369060016123e1565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105cf5760405162461bcd60e51b815260040161030e9061244b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610601610dac565b6001600160a01b0316146106275760405162461bcd60e51b815260040161030e90612492565b61063081610dc8565b6040805160008082526020820190925261064c91839190610e61565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106975760405162461bcd60e51b815260040161030e9061244b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106c9610dac565b6001600160a01b0316146106ef5760405162461bcd60e51b815260040161030e90612492565b6106f882610dc8565b61070482826001610e61565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107525760405162461bcd60e51b815260040161030e906124f7565b50600080516020612ced83398151915290565b606754604051632474521560e21b81526001600160a01b03909116907facb68218675a6b8f94b96a4ce188a1d45e6ec45c7e40f7b357bd68d677840f3d9082906391d14854906107bb9084903390600401612507565b602060405180830381865afa1580156107d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fc9190612535565b6108185760405162461bcd60e51b815260040161030e90612587565b600a80610824896102e2565b61ffff1611156108465760405162461bcd60e51b815260040161030e906125da565b6001600160401b0388166000908152606560205260408120906108728a8a61086d826104cf565b610f43565b6069549091506108969083908b908b908b908b9087906001600160a01b0316610ffe565b50606854606a546040805163ab2d10f760e01b815290516001600160a01b039384169363d8ea185e9360049391169163ab2d10f79180850191602091819003860181865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190612609565b6001600160a01b031663527535028e6040518263ffffffff1660e01b815260040161093b9190611d65565b602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c9190612635565b8d3360016040518663ffffffff1660e01b81526004016109a09594939291906126b2565b600060405180830381600087803b1580156109ba57600080fd5b505af11580156109ce573d6000803e3d6000fd5b5050606854606a546040805163ab2d10f760e01b815290516001600160a01b03938416955063d8ea185e94506004939092169163ab2d10f79184810191602091819003860181865afa158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612609565b6001600160a01b031663527535028e6040518263ffffffff1660e01b8152600401610a779190611d65565b602060405180830381865afa158015610a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab89190612635565b8d3360006040518663ffffffff1660e01b8152600401610adc9594939291906126b2565b600060405180830381600087803b158015610af657600080fd5b505af1158015610b0a573d6000803e3d6000fd5b50506040513392506001600160401b038d1691507fe8a40fe112c091094e01693b4d3d6deb60fb476936d4e4c30719bb2253fadccc90600090a350505050505050505050565b6001600160401b0383166000908152606560205260408120610b73818585611261565b9150505b9392505050565b6000610b88610dac565b905090565b6001600160a01b038116600090815260018084016020526040822090810154606092839283929091906001600160401b03811115610bcd57610bcd611de4565b604051908082528060200260200182016040528015610c0057816020015b6060815260200190600190039081610beb5790505b5060018301549091506000906001600160401b03811115610c2357610c23611de4565b604051908082528060200260200182016040528015610c4c578160200160208202803683370190505b5060018401549091506000906001600160401b03811115610c6f57610c6f611de4565b604051908082528060200260200182016040528015610c98578160200160208202803683370190505b50905060005b6001850154811015610d66576000856001018281548110610cc157610cc16126f4565b906000526020600020906003020190506000806000610cdf84611317565b92509250925082868681518110610cf857610cf86126f4565b60200260200101818152505081888681518110610d1757610d176126f4565b602002602001018190525080878681518110610d3557610d356126f4565b602002602001019063ffffffff16908163ffffffff1681525050505050508080610d5e9061270a565b915050610c9e565b509891975095509350505050565b6001600160a01b03163b151590565b600054610100900460ff16610daa5760405162461bcd60e51b815260040161030e9061276c565b565b600080516020612ced833981519152546001600160a01b031690565b606754604051632474521560e21b81526001600160a01b039091169060009082906391d1485490610dff9084903390600401612507565b602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e409190612535565b610e5c5760405162461bcd60e51b815260040161030e90612587565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e9457610e5c836113e7565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610eee575060408051601f3d908101601f19168201909252610eeb91810190612787565b60015b610f0a5760405162461bcd60e51b815260040161030e906127f3565b600080516020612ced8339815191528114610f375760405162461bcd60e51b815260040161030e90612849565b50610e5c83838361143b565b60606000826001600160401b03166001600160401b03811115610f6857610f68611de4565b604051908082528060200260200182016040528015610f91578160200160208202803683370190505b50905060005b836001600160401b0316816001600160401b03161015610ff557610fbd86868387611466565b82826001600160401b031681518110610fd857610fd86126f4565b602090810291909101015280610fed81612859565b915050610f97565b50949350505050565b600061100b883389611261565b156110285760405162461bcd60e51b815260040161030e906128ac565b6000876001600160401b0316116110515760405162461bcd60e51b815260040161030e906128e6565b61105e8686868686611517565b61106a57506000611256565b875461ffff1688600061107c836128f6565b825461ffff9182166101009390930a9283029190920219909116179055503360009081526001890160205260408120905b85518163ffffffff16101561122a5760408051606080820183526000808352602083019190915291810191909152878263ffffffff16815181106110f3576110f36126f4565b6020026020010151516001600160401b0381111561111357611113611de4565b60405190808252806020026020018201604052801561113c578160200160208202803683370190505b5081602001819052506111b9898363ffffffff1681518110611160576111606126f4565b6020026020010151898463ffffffff1681518110611180576111806126f4565b6020026020010151898563ffffffff16815181106111a0576111a06126f4565b6020026020010151846116ac909392919063ffffffff16565b60018084018054808301825560009182526020918290208451600390920201908155818401518051859492936111f3938501920190611a14565b50604091909101516002909101805463ffffffff191663ffffffff90921691909117905550806112228161290e565b9150506110ad565b50505060028701805460018181018355600092835260209092200180546001600160a01b031916331790555b979650505050505050565b6000805b600285015463ffffffff8216101561130c57836001600160a01b0316856002018263ffffffff168154811061129c5761129c6126f4565b6000918252602090912001546001600160a01b0316036112c0576001915050610b77565b6001600160a01b0384166000908152600186016020526040902080546001600160401b038086169116036112f957600192505050610b77565b50806113048161290e565b915050611265565b506000949350505050565b6000606060008084600101805490506001600160401b0381111561133d5761133d611de4565b604051908082528060200260200182016040528015611366578160200160208202803683370190505b50905060008060005b60018801548110156113ca57876001018181548110611390576113906126f4565b90600052602060002001548482815181106113ad576113ad6126f4565b6020908102919091010152806113c28161270a565b91505061136f565b505085546002909601549596919563ffffffff1694509092505050565b6113f081610d74565b61140c5760405162461bcd60e51b815260040161030e90612974565b600080516020612ced83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61144483611718565b6000825111806114515750805b15610e5c576114608383611758565b50505050565b600080611474858585611786565b606a5460405163192e965360e01b81529192506001600160a01b03169063192e9653906114ad9089906000908690600190600401612998565b600060405180830381865afa1580156114ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f29190810190612a42565b600081518110611504576115046126f4565b6020026020010151915050949350505050565b6000855183511461153a5760405162461bcd60e51b815260040161030e90612ab0565b845183511461155b5760405162461bcd60e51b815260040161030e90612af2565b835183511461157c5760405162461bcd60e51b815260040161030e90612b36565b60005b83518163ffffffff16101561169d57826001600160a01b03166341c2412d858363ffffffff16815181106115b5576115b56126f4565b6020026020010151898463ffffffff16815181106115d5576115d56126f4565b6020026020010151898563ffffffff16815181106115f5576115f56126f4565b6020026020010151898663ffffffff1681518110611615576116156126f4565b60200260200101516040518563ffffffff1660e01b815260040161163c9493929190612b46565b602060405180830381865afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167d9190612535565b61168b5760009150506116a3565b806116958161290e565b91505061157f565b50600190505b95945050505050565b60005b8251811015611705578281815181106116ca576116ca6126f4565b6020026020010151856020015182815181106116e8576116e86126f4565b6020908102919091010152806116fd8161270a565b9150506116af565b509183525063ffffffff16604090910152565b611721816113e7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061177d8383604051806060016040528060278152602001612d0d60279139611930565b90505b92915050565b60408051601080825281830190925260009182919060208201818036833701905050905060c085811b9085901b60005b600881101561186d57826117cb826007612b82565b600881106117db576117db6126f4565b1a60f81b8482815181106117f1576117f16126f4565b60200101906001600160f81b031916908160001a90535081611814826007612b82565b60088110611824576118246126f4565b1a60f81b84611834836008612b95565b81518110611844576118446126f4565b60200101906001600160f81b031916908160001a905350806118658161270a565b9150506117b6565b5060006002846040516118809190612bee565b602060405180830381855afa15801561189d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906118c09190612787565b90506000805b6008811015611918576118da816008612bfa565b6001600160401b03168382602081106118f5576118f56126f4565b1a6001600160401b0316901b9190911790806119108161270a565b9150506118c6565b506119238782612c19565b9998505050505050505050565b6060600080856001600160a01b03168560405161194d9190612bee565b600060405180830381855af49150503d8060008114611988576040519150601f19603f3d011682016040523d82523d6000602084013e61198d565b606091505b509150915061199e868383876119a8565b9695505050505050565b606083156119e55782516000036119de576119c285610d74565b6119de5760405162461bcd60e51b815260040161030e90612c77565b5081610336565b61033683838151156119fa5781518083602001fd5b8060405162461bcd60e51b815260040161030e9190612cbb565b828054828255906000526020600020908101928215611a4f579160200282015b82811115611a4f578251825591602001919060010190611a34565b50611a5b929150611a5f565b5090565b5b80821115611a5b5760008155600101611a60565b6001600160401b031690565b611a8981611a74565b811461064c57600080fd5b803561178081611a80565b600060208284031215611ab457611ab4600080fd5b60006103368484611a94565b61ffff81165b82525050565b602081016117808284611ac0565b6001600160a01b031690565b600061178082611ada565b611a8981611ae6565b803561178081611af1565b60008060408385031215611b1b57611b1b600080fd5b6000611b278585611a94565b9250506020611b3885828601611afa565b9150509250929050565b80611ac6565b6000611b548383611b42565b505060200190565b6000611b66825190565b80845260209384019383018060005b83811015611b9a578151611b898882611b48565b975060208301925050600101611b75565b509495945050505050565b6000611baf825190565b80845260209384019383018060005b83811015611b9a578151611bd28882611b48565b975060208301925050600101611bbe565b600061177d8383611ba5565b6000611bf9825190565b80845260208401935083602082028501611c138560200190565b8060005b85811015611c485784840389528151611c308582611be3565b94506020830160209a909a0199925050600101611c17565b5091979650505050505050565b63ffffffff8116611ac6565b6000611b548383611c55565b6000611c77825190565b80845260209384019383018060005b83811015611b9a578151611c9a8882611c61565b975060208301925050600101611c86565b60608082528101611cbc8186611b5c565b90508181036020830152611cd08185611bef565b905081810360408301526116a38184611c6d565b600080600080600060a08688031215611cff57611cff600080fd5b6000611d0b8888611afa565b9550506020611d1c88828901611afa565b9450506040611d2d88828901611afa565b9350506060611d3e88828901611afa565b9250506080611d4f88828901611afa565b9150509295509295909350565b611ac681611a74565b602081016117808284611d5c565b600060208284031215611d8857611d88600080fd5b60006103368484611afa565b6000611780611da8611da584611ada565b90565b611ada565b600061178082611d94565b600061178082611dad565b611ac681611db8565b602081016117808284611dc3565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b611e0382611dda565b81018181106001600160401b0382111715611e2057611e20611de4565b6040525050565b6000611e3260405190565b9050611e3e8282611dfa565b919050565b60006001600160401b03821115611e5c57611e5c611de4565b611e6582611dda565b60200192915050565b82818337506000910152565b6000611e8d611e8884611e43565b611e27565b905082815260208101848484011115611ea857611ea8600080fd5b611eb3848285611e6e565b509392505050565b600082601f830112611ecf57611ecf600080fd5b8135610336848260208601611e7a565b60008060408385031215611ef557611ef5600080fd5b6000611f018585611afa565b92505060208301356001600160401b03811115611f2057611f20600080fd5b611b3885828601611ebb565b602081016117808284611b42565b60006001600160401b03821115611f5357611f53611de4565b5060209081020190565b80611a89565b803561178081611f5d565b6000611f7c611e8884611f3a565b83815290506020808201908402830185811115611f9b57611f9b600080fd5b835b81811015611fbf5780611fb08882611f63565b84525060209283019201611f9d565b5050509392505050565b600082601f830112611fdd57611fdd600080fd5b8135610336848260208601611f6e565b6000611ffb611e8884611f3a565b8381529050602080820190840283018581111561201a5761201a600080fd5b835b81811015611fbf5780356001600160401b0381111561203d5761203d600080fd5b80860161204a8982611fc9565b855250506020928301920161201c565b600082601f83011261206e5761206e600080fd5b8135610336848260208601611fed565b63ffffffff8116611a89565b80356117808161207e565b60006120a3611e8884611f3a565b838152905060208082019084028301858111156120c2576120c2600080fd5b835b81811015611fbf57806120d7888261208a565b845250602092830192016120c4565b600082601f8301126120fa576120fa600080fd5b8135610336848260208601612095565b600080600080600060a0868803121561212557612125600080fd5b60006121318888611a94565b955050602061214288828901611a94565b94505060408601356001600160401b0381111561216157612161600080fd5b61216d88828901611fc9565b93505060608601356001600160401b0381111561218c5761218c600080fd5b6121988882890161205a565b92505060808601356001600160401b038111156121b7576121b7600080fd5b611d4f888289016120e6565b611ac681611ae6565b6020810161178082846121c3565b6000806000606084860312156121f2576121f2600080fd5b60006121fe8686611a94565b935050602061220f86828701611afa565b925050604061222086828701611a94565b9150509250925092565b801515611ac6565b60208101611780828461222a565b601681526000602082017556616c7565206d757374206e6f74206265207a65726f60501b815291505b5060200190565b6020808252810161178081612240565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291505b5060400190565b6020808252810161178081612280565b600060ff8216611780565b611ac6816122de565b6020810161178082846122e9565b634e487b7160e01b600052602160045260246000fd5b6002811061064c5761064c612300565b80611e3e81612316565b600061178082612326565b611ac681612330565b604081016123528285611d5c565b610b77602083018461233b565b805161178081611a80565b60006020828403121561237f5761237f600080fd5b6000610336848461235f565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006123c282611a74565b91506123cd83611a74565b9250826123dc576123dc61238b565b500490565b60006123ec82611a74565b91506123f783611a74565b9250508082016001600160401b03811115611780576117806123a1565b602c8152600060208201600080516020612ccd83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291506122c7565b6020808252810161178081612414565b602c8152600060208201600080516020612ccd83398151915281526b6163746976652070726f787960a01b602082015291506122c7565b602080825281016117808161245b565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b602082015291506122c7565b60208082528101611780816124a2565b604081016125158285611b42565b610b7760208301846121c3565b801515611a89565b805161178081612522565b60006020828403121561254a5761254a600080fd5b6000610336848461252a565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b81529150612269565b6020808252810161178081612556565b602681526000602082017f65786365656473206d6178696d756d206368616c6c656e67652070726f6f66738152650818dbdd5b9d60d21b602082015291506122c7565b6020808252810161178081612597565b600061178082611ae6565b611a89816125ea565b8051611780816125f5565b60006020828403121561261e5761261e600080fd5b600061033684846125fe565b805161178081611af1565b60006020828403121561264a5761264a600080fd5b6000610336848461262a565b6008811061064c5761064c612300565b80611e3e81612656565b600061178082612666565b611ac681612670565b6003811061064c5761064c612300565b80611e3e81612684565b600061178082612694565b611ac68161269e565b60a081016126c0828861267b565b6126cd60208301876121c3565b6126da6040830186611d5c565b6126e760608301856121c3565b61199e60808301846126a9565b634e487b7160e01b600052603260045260246000fd5b6000600019820361271d5761271d6123a1565b5060010190565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b602082015291506122c7565b6020808252810161178081612724565b805161178081611f5d565b60006020828403121561279c5761279c600080fd5b6000610336848461277c565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b602082015291506122c7565b60208082528101611780816127a8565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b602082015291506122c7565b6020808252810161178081612803565b600061286482611a74565b91506001600160401b03820361271d5761271d6123a1565b6019815260006020820178566572696669636174696f6e206973206475706c696361746560381b81529150612269565b602080825281016117808161287c565b6013815260006020820172125b9d985b1a59081c985b991bdb481cd95959606a1b81529150612269565b60208082528101611780816128bc565b61ffff16600061fffe19820161271d5761271d6123a1565b63ffffffff16600063fffffffe19820161271d5761271d6123a1565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015291506122c7565b602080825281016117808161292a565b600061178082611a74565b611ac681612984565b608081016129a68287611d5c565b6129b3602083018661233b565b6129c06040830185611d5c565b6116a3606083018461298f565b60006129db611e8884611f3a565b838152905060208082019084028301858111156129fa576129fa600080fd5b835b81811015611fbf5780612a0f888261277c565b845250602092830192016129fc565b600082601f830112612a3257612a32600080fd5b81516103368482602086016129cd565b600060208284031215612a5757612a57600080fd5b81516001600160401b03811115612a7057612a70600080fd5b61033684828501612a1e565b601e81526000602082017f726f6f74732e6c656e67746820213d205f6c65617665732e6c656e677468000081529150612269565b6020808252810161178081612a7c565b60208082527f726f6f74732e6c656e67746820213d205f7369626c696e67732e6c656e67746891019081526000612269565b6020808252810161178081612ac0565b601d81526000602082017f726f6f74732e6c656e67746820213d205f70617468732e6c656e67746800000081529150612269565b6020808252810161178081612b02565b60808101612b548287611b42565b612b616020830186611b42565b8181036040830152612b738185611b5c565b90506116a36060830184611c55565b81810381811115611780576117806123a1565b80820180821115611780576117806123a1565b60005b83811015612bc3578181015183820152602001612bab565b50506000910152565b6000612bd6825190565b612be4818560208601612ba8565b9290920192915050565b6000610b778284612bcc565b818102808215838204851417612c1257612c126123a1565b5092915050565b6000612c2482611a74565b9150612c2f83611a74565b925082612c3e57612c3e61238b565b500690565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612269565b6020808252810161178081612c43565b6000612c91825190565b808452602084019350612ca8818560208601612ba8565b612cb181611dda565b9093019392505050565b6020808252810161177d8184612c8756fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122087a07ad57b74b785bd11a044279e11c56a6361f4389f344c8e74dbf39e0c94e764736f6c63430008150033",
  "deployedBytecode": "0x6080604052600436106100b85760003560e01c80630465c1e1146100bd5780630ecee42d146100f35780631459457a146101225780631fd40abb146101445780633659cfe614610171578063392f5f641461019157806347b0f08e146101be5780634f1ef286146101de57806352d1902d146101f157806357ca304f14610213578063795053d31461023357806396b1a02b14610260578063aaf10f421461028d578063cc22e64f146102a2578063e2fdcc17146102c2575b600080fd5b3480156100c957600080fd5b506100dd6100d8366004611a9f565b6102e2565b6040516100ea9190611acc565b60405180910390f35b3480156100ff57600080fd5b5061011361010e366004611b05565b61033e565b6040516100ea93929190611cab565b34801561012e57600080fd5b5061014261013d366004611ce4565b61039e565b005b34801561015057600080fd5b5061016461015f366004611a9f565b6104cf565b6040516100ea9190611d65565b34801561017d57600080fd5b5061014261018c366004611d73565b610587565b34801561019d57600080fd5b506067546101b1906001600160a01b031681565b6040516100ea9190611dcc565b3480156101ca57600080fd5b506069546101b1906001600160a01b031681565b6101426101ec366004611edf565b61064f565b3480156101fd57600080fd5b50610206610708565b6040516100ea9190611f2c565b34801561021f57600080fd5b5061014261022e36600461210a565b610765565b34801561023f57600080fd5b50606654610253906001600160a01b031681565b6040516100ea91906121cc565b34801561026c57600080fd5b5061028061027b3660046121da565b610b50565b6040516100ea9190612232565b34801561029957600080fd5b50610253610b7e565b3480156102ae57600080fd5b50606a546101b1906001600160a01b031681565b3480156102ce57600080fd5b506068546101b1906001600160a01b031681565b600081806001600160401b03166000036103175760405162461bcd60e51b815260040161030e90612270565b60405180910390fd5b6001600160401b0383166000908152606560205260409020805461ffff165b949350505050565b606080606084806001600160401b031660000361036d5760405162461bcd60e51b815260040161030e90612270565b6001600160401b038616600090815260656020526040902061038f8187610b8d565b94509450945050509250925092565b600054610100900460ff16158080156103be5750600054600160ff909116105b806103df57506103cd30610d74565b1580156103df575060005460ff166001145b6103fb5760405162461bcd60e51b815260040161030e906122ce565b6000805460ff19166001179055801561041e576000805461ff0019166101001790555b606680546001600160a01b03199081166001600160a01b0389811691909117909255606780548216888416179055606880548216858416179055606a805482168784161790556069805490911691851691909117905561047c610d83565b80156104c7576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906104be906001906122f2565b60405180910390a15b505050505050565b606a5460405163365e3b9b60e11b81526000916103e89183916001600160a01b031690636cbc7736906105089087908590600401612344565b602060405180830381865afa158015610525573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610549919061236a565b90508163ffffffff16816001600160401b0316101561056c575060019392505050565b61057c63ffffffff8316826123b7565b6103369060016123e1565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105cf5760405162461bcd60e51b815260040161030e9061244b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610601610dac565b6001600160a01b0316146106275760405162461bcd60e51b815260040161030e90612492565b61063081610dc8565b6040805160008082526020820190925261064c91839190610e61565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106975760405162461bcd60e51b815260040161030e9061244b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106c9610dac565b6001600160a01b0316146106ef5760405162461bcd60e51b815260040161030e90612492565b6106f882610dc8565b61070482826001610e61565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107525760405162461bcd60e51b815260040161030e906124f7565b50600080516020612ced83398151915290565b606754604051632474521560e21b81526001600160a01b03909116907facb68218675a6b8f94b96a4ce188a1d45e6ec45c7e40f7b357bd68d677840f3d9082906391d14854906107bb9084903390600401612507565b602060405180830381865afa1580156107d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fc9190612535565b6108185760405162461bcd60e51b815260040161030e90612587565b600a80610824896102e2565b61ffff1611156108465760405162461bcd60e51b815260040161030e906125da565b6001600160401b0388166000908152606560205260408120906108728a8a61086d826104cf565b610f43565b6069549091506108969083908b908b908b908b9087906001600160a01b0316610ffe565b50606854606a546040805163ab2d10f760e01b815290516001600160a01b039384169363d8ea185e9360049391169163ab2d10f79180850191602091819003860181865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190612609565b6001600160a01b031663527535028e6040518263ffffffff1660e01b815260040161093b9190611d65565b602060405180830381865afa158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c9190612635565b8d3360016040518663ffffffff1660e01b81526004016109a09594939291906126b2565b600060405180830381600087803b1580156109ba57600080fd5b505af11580156109ce573d6000803e3d6000fd5b5050606854606a546040805163ab2d10f760e01b815290516001600160a01b03938416955063d8ea185e94506004939092169163ab2d10f79184810191602091819003860181865afa158015610a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612609565b6001600160a01b031663527535028e6040518263ffffffff1660e01b8152600401610a779190611d65565b602060405180830381865afa158015610a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab89190612635565b8d3360006040518663ffffffff1660e01b8152600401610adc9594939291906126b2565b600060405180830381600087803b158015610af657600080fd5b505af1158015610b0a573d6000803e3d6000fd5b50506040513392506001600160401b038d1691507fe8a40fe112c091094e01693b4d3d6deb60fb476936d4e4c30719bb2253fadccc90600090a350505050505050505050565b6001600160401b0383166000908152606560205260408120610b73818585611261565b9150505b9392505050565b6000610b88610dac565b905090565b6001600160a01b038116600090815260018084016020526040822090810154606092839283929091906001600160401b03811115610bcd57610bcd611de4565b604051908082528060200260200182016040528015610c0057816020015b6060815260200190600190039081610beb5790505b5060018301549091506000906001600160401b03811115610c2357610c23611de4565b604051908082528060200260200182016040528015610c4c578160200160208202803683370190505b5060018401549091506000906001600160401b03811115610c6f57610c6f611de4565b604051908082528060200260200182016040528015610c98578160200160208202803683370190505b50905060005b6001850154811015610d66576000856001018281548110610cc157610cc16126f4565b906000526020600020906003020190506000806000610cdf84611317565b92509250925082868681518110610cf857610cf86126f4565b60200260200101818152505081888681518110610d1757610d176126f4565b602002602001018190525080878681518110610d3557610d356126f4565b602002602001019063ffffffff16908163ffffffff1681525050505050508080610d5e9061270a565b915050610c9e565b509891975095509350505050565b6001600160a01b03163b151590565b600054610100900460ff16610daa5760405162461bcd60e51b815260040161030e9061276c565b565b600080516020612ced833981519152546001600160a01b031690565b606754604051632474521560e21b81526001600160a01b039091169060009082906391d1485490610dff9084903390600401612507565b602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e409190612535565b610e5c5760405162461bcd60e51b815260040161030e90612587565b505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e9457610e5c836113e7565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610eee575060408051601f3d908101601f19168201909252610eeb91810190612787565b60015b610f0a5760405162461bcd60e51b815260040161030e906127f3565b600080516020612ced8339815191528114610f375760405162461bcd60e51b815260040161030e90612849565b50610e5c83838361143b565b60606000826001600160401b03166001600160401b03811115610f6857610f68611de4565b604051908082528060200260200182016040528015610f91578160200160208202803683370190505b50905060005b836001600160401b0316816001600160401b03161015610ff557610fbd86868387611466565b82826001600160401b031681518110610fd857610fd86126f4565b602090810291909101015280610fed81612859565b915050610f97565b50949350505050565b600061100b883389611261565b156110285760405162461bcd60e51b815260040161030e906128ac565b6000876001600160401b0316116110515760405162461bcd60e51b815260040161030e906128e6565b61105e8686868686611517565b61106a57506000611256565b875461ffff1688600061107c836128f6565b825461ffff9182166101009390930a9283029190920219909116179055503360009081526001890160205260408120905b85518163ffffffff16101561122a5760408051606080820183526000808352602083019190915291810191909152878263ffffffff16815181106110f3576110f36126f4565b6020026020010151516001600160401b0381111561111357611113611de4565b60405190808252806020026020018201604052801561113c578160200160208202803683370190505b5081602001819052506111b9898363ffffffff1681518110611160576111606126f4565b6020026020010151898463ffffffff1681518110611180576111806126f4565b6020026020010151898563ffffffff16815181106111a0576111a06126f4565b6020026020010151846116ac909392919063ffffffff16565b60018084018054808301825560009182526020918290208451600390920201908155818401518051859492936111f3938501920190611a14565b50604091909101516002909101805463ffffffff191663ffffffff90921691909117905550806112228161290e565b9150506110ad565b50505060028701805460018181018355600092835260209092200180546001600160a01b031916331790555b979650505050505050565b6000805b600285015463ffffffff8216101561130c57836001600160a01b0316856002018263ffffffff168154811061129c5761129c6126f4565b6000918252602090912001546001600160a01b0316036112c0576001915050610b77565b6001600160a01b0384166000908152600186016020526040902080546001600160401b038086169116036112f957600192505050610b77565b50806113048161290e565b915050611265565b506000949350505050565b6000606060008084600101805490506001600160401b0381111561133d5761133d611de4565b604051908082528060200260200182016040528015611366578160200160208202803683370190505b50905060008060005b60018801548110156113ca57876001018181548110611390576113906126f4565b90600052602060002001548482815181106113ad576113ad6126f4565b6020908102919091010152806113c28161270a565b91505061136f565b505085546002909601549596919563ffffffff1694509092505050565b6113f081610d74565b61140c5760405162461bcd60e51b815260040161030e90612974565b600080516020612ced83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61144483611718565b6000825111806114515750805b15610e5c576114608383611758565b50505050565b600080611474858585611786565b606a5460405163192e965360e01b81529192506001600160a01b03169063192e9653906114ad9089906000908690600190600401612998565b600060405180830381865afa1580156114ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114f29190810190612a42565b600081518110611504576115046126f4565b6020026020010151915050949350505050565b6000855183511461153a5760405162461bcd60e51b815260040161030e90612ab0565b845183511461155b5760405162461bcd60e51b815260040161030e90612af2565b835183511461157c5760405162461bcd60e51b815260040161030e90612b36565b60005b83518163ffffffff16101561169d57826001600160a01b03166341c2412d858363ffffffff16815181106115b5576115b56126f4565b6020026020010151898463ffffffff16815181106115d5576115d56126f4565b6020026020010151898563ffffffff16815181106115f5576115f56126f4565b6020026020010151898663ffffffff1681518110611615576116156126f4565b60200260200101516040518563ffffffff1660e01b815260040161163c9493929190612b46565b602060405180830381865afa158015611659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167d9190612535565b61168b5760009150506116a3565b806116958161290e565b91505061157f565b50600190505b95945050505050565b60005b8251811015611705578281815181106116ca576116ca6126f4565b6020026020010151856020015182815181106116e8576116e86126f4565b6020908102919091010152806116fd8161270a565b9150506116af565b509183525063ffffffff16604090910152565b611721816113e7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061177d8383604051806060016040528060278152602001612d0d60279139611930565b90505b92915050565b60408051601080825281830190925260009182919060208201818036833701905050905060c085811b9085901b60005b600881101561186d57826117cb826007612b82565b600881106117db576117db6126f4565b1a60f81b8482815181106117f1576117f16126f4565b60200101906001600160f81b031916908160001a90535081611814826007612b82565b60088110611824576118246126f4565b1a60f81b84611834836008612b95565b81518110611844576118446126f4565b60200101906001600160f81b031916908160001a905350806118658161270a565b9150506117b6565b5060006002846040516118809190612bee565b602060405180830381855afa15801561189d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906118c09190612787565b90506000805b6008811015611918576118da816008612bfa565b6001600160401b03168382602081106118f5576118f56126f4565b1a6001600160401b0316901b9190911790806119108161270a565b9150506118c6565b506119238782612c19565b9998505050505050505050565b6060600080856001600160a01b03168560405161194d9190612bee565b600060405180830381855af49150503d8060008114611988576040519150601f19603f3d011682016040523d82523d6000602084013e61198d565b606091505b509150915061199e868383876119a8565b9695505050505050565b606083156119e55782516000036119de576119c285610d74565b6119de5760405162461bcd60e51b815260040161030e90612c77565b5081610336565b61033683838151156119fa5781518083602001fd5b8060405162461bcd60e51b815260040161030e9190612cbb565b828054828255906000526020600020908101928215611a4f579160200282015b82811115611a4f578251825591602001919060010190611a34565b50611a5b929150611a5f565b5090565b5b80821115611a5b5760008155600101611a60565b6001600160401b031690565b611a8981611a74565b811461064c57600080fd5b803561178081611a80565b600060208284031215611ab457611ab4600080fd5b60006103368484611a94565b61ffff81165b82525050565b602081016117808284611ac0565b6001600160a01b031690565b600061178082611ada565b611a8981611ae6565b803561178081611af1565b60008060408385031215611b1b57611b1b600080fd5b6000611b278585611a94565b9250506020611b3885828601611afa565b9150509250929050565b80611ac6565b6000611b548383611b42565b505060200190565b6000611b66825190565b80845260209384019383018060005b83811015611b9a578151611b898882611b48565b975060208301925050600101611b75565b509495945050505050565b6000611baf825190565b80845260209384019383018060005b83811015611b9a578151611bd28882611b48565b975060208301925050600101611bbe565b600061177d8383611ba5565b6000611bf9825190565b80845260208401935083602082028501611c138560200190565b8060005b85811015611c485784840389528151611c308582611be3565b94506020830160209a909a0199925050600101611c17565b5091979650505050505050565b63ffffffff8116611ac6565b6000611b548383611c55565b6000611c77825190565b80845260209384019383018060005b83811015611b9a578151611c9a8882611c61565b975060208301925050600101611c86565b60608082528101611cbc8186611b5c565b90508181036020830152611cd08185611bef565b905081810360408301526116a38184611c6d565b600080600080600060a08688031215611cff57611cff600080fd5b6000611d0b8888611afa565b9550506020611d1c88828901611afa565b9450506040611d2d88828901611afa565b9350506060611d3e88828901611afa565b9250506080611d4f88828901611afa565b9150509295509295909350565b611ac681611a74565b602081016117808284611d5c565b600060208284031215611d8857611d88600080fd5b60006103368484611afa565b6000611780611da8611da584611ada565b90565b611ada565b600061178082611d94565b600061178082611dad565b611ac681611db8565b602081016117808284611dc3565b601f01601f191690565b634e487b7160e01b600052604160045260246000fd5b611e0382611dda565b81018181106001600160401b0382111715611e2057611e20611de4565b6040525050565b6000611e3260405190565b9050611e3e8282611dfa565b919050565b60006001600160401b03821115611e5c57611e5c611de4565b611e6582611dda565b60200192915050565b82818337506000910152565b6000611e8d611e8884611e43565b611e27565b905082815260208101848484011115611ea857611ea8600080fd5b611eb3848285611e6e565b509392505050565b600082601f830112611ecf57611ecf600080fd5b8135610336848260208601611e7a565b60008060408385031215611ef557611ef5600080fd5b6000611f018585611afa565b92505060208301356001600160401b03811115611f2057611f20600080fd5b611b3885828601611ebb565b602081016117808284611b42565b60006001600160401b03821115611f5357611f53611de4565b5060209081020190565b80611a89565b803561178081611f5d565b6000611f7c611e8884611f3a565b83815290506020808201908402830185811115611f9b57611f9b600080fd5b835b81811015611fbf5780611fb08882611f63565b84525060209283019201611f9d565b5050509392505050565b600082601f830112611fdd57611fdd600080fd5b8135610336848260208601611f6e565b6000611ffb611e8884611f3a565b8381529050602080820190840283018581111561201a5761201a600080fd5b835b81811015611fbf5780356001600160401b0381111561203d5761203d600080fd5b80860161204a8982611fc9565b855250506020928301920161201c565b600082601f83011261206e5761206e600080fd5b8135610336848260208601611fed565b63ffffffff8116611a89565b80356117808161207e565b60006120a3611e8884611f3a565b838152905060208082019084028301858111156120c2576120c2600080fd5b835b81811015611fbf57806120d7888261208a565b845250602092830192016120c4565b600082601f8301126120fa576120fa600080fd5b8135610336848260208601612095565b600080600080600060a0868803121561212557612125600080fd5b60006121318888611a94565b955050602061214288828901611a94565b94505060408601356001600160401b0381111561216157612161600080fd5b61216d88828901611fc9565b93505060608601356001600160401b0381111561218c5761218c600080fd5b6121988882890161205a565b92505060808601356001600160401b038111156121b7576121b7600080fd5b611d4f888289016120e6565b611ac681611ae6565b6020810161178082846121c3565b6000806000606084860312156121f2576121f2600080fd5b60006121fe8686611a94565b935050602061220f86828701611afa565b925050604061222086828701611a94565b9150509250925092565b801515611ac6565b60208101611780828461222a565b601681526000602082017556616c7565206d757374206e6f74206265207a65726f60501b815291505b5060200190565b6020808252810161178081612240565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291505b5060400190565b6020808252810161178081612280565b600060ff8216611780565b611ac6816122de565b6020810161178082846122e9565b634e487b7160e01b600052602160045260246000fd5b6002811061064c5761064c612300565b80611e3e81612316565b600061178082612326565b611ac681612330565b604081016123528285611d5c565b610b77602083018461233b565b805161178081611a80565b60006020828403121561237f5761237f600080fd5b6000610336848461235f565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006123c282611a74565b91506123cd83611a74565b9250826123dc576123dc61238b565b500490565b60006123ec82611a74565b91506123f783611a74565b9250508082016001600160401b03811115611780576117806123a1565b602c8152600060208201600080516020612ccd83398151915281526b19195b1959d85d1958d85b1b60a21b602082015291506122c7565b6020808252810161178081612414565b602c8152600060208201600080516020612ccd83398151915281526b6163746976652070726f787960a01b602082015291506122c7565b602080825281016117808161245b565b603881526000602082017f555550535570677261646561626c653a206d757374206e6f742062652063616c8152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b602082015291506122c7565b60208082528101611780816124a2565b604081016125158285611b42565b610b7760208301846121c3565b801515611a89565b805161178081612522565b60006020828403121561254a5761254a600080fd5b6000610336848461252a565b601a81526000602082017913db9b1e48185b1b1bddd959081c9bdb194818d85b8818d85b1b60321b81529150612269565b6020808252810161178081612556565b602681526000602082017f65786365656473206d6178696d756d206368616c6c656e67652070726f6f66738152650818dbdd5b9d60d21b602082015291506122c7565b6020808252810161178081612597565b600061178082611ae6565b611a89816125ea565b8051611780816125f5565b60006020828403121561261e5761261e600080fd5b600061033684846125fe565b805161178081611af1565b60006020828403121561264a5761264a600080fd5b6000610336848461262a565b6008811061064c5761064c612300565b80611e3e81612656565b600061178082612666565b611ac681612670565b6003811061064c5761064c612300565b80611e3e81612684565b600061178082612694565b611ac68161269e565b60a081016126c0828861267b565b6126cd60208301876121c3565b6126da6040830186611d5c565b6126e760608301856121c3565b61199e60808301846126a9565b634e487b7160e01b600052603260045260246000fd5b6000600019820361271d5761271d6123a1565b5060010190565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b602082015291506122c7565b6020808252810161178081612724565b805161178081611f5d565b60006020828403121561279c5761279c600080fd5b6000610336848461277c565b602e81526000602082017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b602082015291506122c7565b60208082528101611780816127a8565b602981526000602082017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b602082015291506122c7565b6020808252810161178081612803565b600061286482611a74565b91506001600160401b03820361271d5761271d6123a1565b6019815260006020820178566572696669636174696f6e206973206475706c696361746560381b81529150612269565b602080825281016117808161287c565b6013815260006020820172125b9d985b1a59081c985b991bdb481cd95959606a1b81529150612269565b60208082528101611780816128bc565b61ffff16600061fffe19820161271d5761271d6123a1565b63ffffffff16600063fffffffe19820161271d5761271d6123a1565b602d81526000602082017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015291506122c7565b602080825281016117808161292a565b600061178082611a74565b611ac681612984565b608081016129a68287611d5c565b6129b3602083018661233b565b6129c06040830185611d5c565b6116a3606083018461298f565b60006129db611e8884611f3a565b838152905060208082019084028301858111156129fa576129fa600080fd5b835b81811015611fbf5780612a0f888261277c565b845250602092830192016129fc565b600082601f830112612a3257612a32600080fd5b81516103368482602086016129cd565b600060208284031215612a5757612a57600080fd5b81516001600160401b03811115612a7057612a70600080fd5b61033684828501612a1e565b601e81526000602082017f726f6f74732e6c656e67746820213d205f6c65617665732e6c656e677468000081529150612269565b6020808252810161178081612a7c565b60208082527f726f6f74732e6c656e67746820213d205f7369626c696e67732e6c656e67746891019081526000612269565b6020808252810161178081612ac0565b601d81526000602082017f726f6f74732e6c656e67746820213d205f70617468732e6c656e67746800000081529150612269565b6020808252810161178081612b02565b60808101612b548287611b42565b612b616020830186611b42565b8181036040830152612b738185611b5c565b90506116a36060830184611c55565b81810381811115611780576117806123a1565b80820180821115611780576117806123a1565b60005b83811015612bc3578181015183820152602001612bab565b50506000910152565b6000612bd6825190565b612be4818560208601612ba8565b9290920192915050565b6000610b778284612bcc565b818102808215838204851417612c1257612c126123a1565b5092915050565b6000612c2482611a74565b9150612c2f83611a74565b925082612c3e57612c3e61238b565b500690565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150612269565b6020808252810161178081612c43565b6000612c91825190565b808452602084019350612ca8818560208601612ba8565b612cb181611dda565b9093019392505050565b6020808252810161177d8184612c8756fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122087a07ad57b74b785bd11a044279e11c56a6361f4389f344c8e74dbf39e0c94e764736f6c63430008150033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
