{
  "_format": "hh3-artifact-1",
  "contractName": "DNSSECImpl",
  "sourceName": "contracts/dnssec-oracle/DNSSECImpl.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_anchors",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "class",
          "type": "uint16"
        }
      ],
      "name": "InvalidClass",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "labelsExpected",
          "type": "uint256"
        }
      ],
      "name": "InvalidLabelCount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "proofType",
          "type": "uint16"
        }
      ],
      "name": "InvalidProofType",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidRRSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "rrsetName",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "signerName",
          "type": "bytes"
        }
      ],
      "name": "InvalidSignerName",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signerName",
          "type": "bytes"
        }
      ],
      "name": "NoMatchingProof",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "offset",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "OffsetOutOfBoundsError",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signerName",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "proofName",
          "type": "bytes"
        }
      ],
      "name": "ProofNameMismatch",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "expiration",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "now",
          "type": "uint32"
        }
      ],
      "name": "SignatureExpired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "inception",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "now",
          "type": "uint32"
        }
      ],
      "name": "SignatureNotValidYet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "rrsetType",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "sigType",
          "type": "uint16"
        }
      ],
      "name": "SignatureTypeMismatch",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "AlgorithmUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "DigestUpdated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "algorithms",
      "outputs": [
        {
          "internalType": "contract Algorithm",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "anchors",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "digests",
      "outputs": [
        {
          "internalType": "contract Digest",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "internalType": "contract Algorithm",
          "name": "algo",
          "type": "address"
        }
      ],
      "name": "setAlgorithm",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "internalType": "contract Digest",
          "name": "digest",
          "type": "address"
        }
      ],
      "name": "setDigest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature[]",
          "name": "input",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256",
          "name": "now",
          "type": "uint256"
        }
      ],
      "name": "verifyRRSet",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "rrs",
          "type": "bytes"
        },
        {
          "internalType": "uint32",
          "name": "inception",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature[]",
          "name": "input",
          "type": "tuple[]"
        }
      ],
      "name": "verifyRRSet",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "rrs",
          "type": "bytes"
        },
        {
          "internalType": "uint32",
          "name": "inception",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161236338038061236383398101604081905261002f9161006a565b600180546001600160a01b03191633179055600061004d82826101bf565b505061027d565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561007c57600080fd5b81516001600160401b0381111561009257600080fd5b8201601f810184136100a357600080fd5b80516001600160401b038111156100bc576100bc610054565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100ea576100ea610054565b60405281815282820160200186101561010257600080fd5b60005b8281101561012157602081850181015183830182015201610105565b50600091810160200191909152949350505050565b600181811c9082168061014a57607f821691505b60208210810361016a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101ba57806000526020600020601f840160051c810160208510156101975750805b601f840160051c820191505b818110156101b757600081556001016101a3565b50505b505050565b81516001600160401b038111156101d8576101d8610054565b6101ec816101e68454610136565b84610170565b6020601f82116001811461022057600083156102085750848201515b600019600385901b1c1916600184901b1784556101b7565b600084815260208120601f198516915b828110156102505787850151825560209485019460019092019101610230565b508482101561026e5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6120d78061028c6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806373cc48a61161007657806398d35f201161005b57806398d35f2014610188578063bdf95fef1461019d578063c327deef146101b057600080fd5b806373cc48a61461010d5780638da5cb5b1461016857600080fd5b8063020ed8d3146100a857806313af4035146100bd57806328e7677d146100d0578063440f3d42146100e3575b600080fd5b6100bb6100b6366004611a7f565b6101e6565b005b6100bb6100cb366004611ab6565b61029a565b6100bb6100de366004611a7f565b610305565b6100f66100f1366004611d32565b6103b1565b604051610104929190611ddb565b60405180910390f35b61014361011b366004611e03565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610104565b6001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b610190610498565b6040516101049190611e1e565b6100f66101ab366004611e31565b610526565b6101436101be366004611e03565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461020a57600080fd5b60ff821660008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527ff73c3c226af96b7f1ba666a21b3ceaf2be3ee6a365e3178fd9cd1eaae0075aa891015b60405180910390a15050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102be57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032957600080fd5b60ff821660008181526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527f2fcc274c3b72dd483ab201bfa87295e3817e8b9b10693219873b722ca1af00c7910161028e565b6060600080600080546103c390611e66565b80601f01602080910402602001604051908101604052809291908181526020018280546103ef90611e66565b801561043c5780601f106104115761010080835404028352916020019161043c565b820191906000526020600020905b81548152906001019060200180831161041f57829003601f168201915b5050505050905060005b855181101561048e57600061047587838151811061046657610466611eb9565b6020026020010151848861053d565b61010081015160a0909101519450925050600101610446565b5091509250929050565b600080546104a590611e66565b80601f01602080910402602001604051908101604052809291908181526020018280546104d190611e66565b801561051e5780601f106104f35761010080835404028352916020019161051e565b820191906000526020600020905b81548152906001019060200180831161050157829003601f168201915b505050505081565b6060600061053483426103b1565b91509150915091565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082019290925260e081018290526101008101829052610120810191909152835161059b906106df565b905060006105ad828360000151610821565b604083015190915060ff166105c382600061097e565b1461060b578082604001516040517fe861b2bd000000000000000000000000000000000000000000000000000000008152600401610602929190611ee8565b60405180910390fd5b6101208201819052608082015160009084900360030b121561066f5760808201516040517fa784f87e00000000000000000000000000000000000000000000000000000000815263ffffffff91821660048201529084166024820152604401610602565b60a0820151600090840360030b12156106ca5760a08201516040517fbd41036a00000000000000000000000000000000000000000000000000000000815263ffffffff91821660048201529084166024820152604401610602565b6106d6818387876109e4565b505b9392505050565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018190526101208201529061073a908390610ac7565b61ffff16815261074b826002610ae9565b60ff16602082015261075e826003610ae9565b60ff166040820152610771826004610b1c565b63ffffffff908116606083015261078d908390600890610b1c16565b63ffffffff90811660808301526107a9908390600c90610b1c16565b63ffffffff90811660a08301526107c5908390601090610ac716565b61ffff1660c08201526107d9826012610b39565b60e0820181905251610816906107f0906012611f3c565b8260e0015151601285516108049190611f4f565b61080e9190611f4f565b849190610b5c565b610100820152919050565b6060600061082e84610bb2565b90505b8051516020820151101561097757606081015161ffff1660011461088d5760608101516040517f98a5f31a00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610602565b81516000036108a65761089f81610c10565b9150610910565b602081015181516108b691610c31565b82511415806108d957508051602082015183516108d7928592600092610c8b565b155b15610910576040517fcbceee6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8261ffff16816040015161ffff16146109695760408082015190517fa6ff8a8a00000000000000000000000000000000000000000000000000000000815261ffff91821660048201529084166024820152604401610602565b61097281610cae565b610831565b5092915050565b6000805b8351831061099257610992611f62565b600061099e8585610ae9565b60ff1690506109ae816001611f3c565b6109b89085611f3c565b9350806000036109c857506109db565b6109d3600183611f3c565b915050610982565b90505b92915050565b60e08301516109f4908590610d96565b610a315760e08301516040517feaafc59b000000000000000000000000000000000000000000000000000000008152610602918691600401611f91565b6000610a3d8282610df3565b9050602b61ffff16816040015161ffff1603610a6357610a5e848483610e54565b610ac0565b603061ffff16816040015161ffff1603610a8257610a5e848483610f73565b60408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610602565b5050505050565b6000610add83610ad8846002611f3c565b61106d565b50016020015160f01c90565b6000610afa83610ad8846001611f3c565b828281518110610b0c57610b0c611eb9565b016020015160f81c905092915050565b6000610b2d83610ad8846004611f3c565b50016020015160e01c90565b60606000610b478484610c31565b9050610b54848483610b5c565b949350505050565b60608167ffffffffffffffff811115610b7757610b77611ad3565b6040519080825280601f01601f191660200182016040528015610ba1576020820181803683370190505b5090506106d88484836000866110b9565b610c006040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b6109de8261010001516000610df3565b602081015181516060916109de91610c289082610c31565b84519190610b5c565b6000815b83518110610c4557610c45611f62565b6000610c518583610ae9565b60ff169050610c61816001611f3c565b610c6b9083611f3c565b915080600003610c7b5750610c81565b50610c35565b610b548382611f4f565b6000610c988484846110ea565b610ca38787856110ea565b149695505050505050565b60c08101516020820181905281515111610cc55750565b6000610cd982600001518360200151610c31565b8260200151610ce89190611f3c565b8251909150610cf79082610ac7565b61ffff166040830152610d0b600282611f3c565b8251909150610d1a9082610ac7565b61ffff166060830152610d2e600282611f3c565b8251909150610d3d9082610b1c565b63ffffffff166080830152610d53600482611f3c565b8251909150600090610d659083610ac7565b61ffff169050610d76600283611f3c565b60a084018190529150610d898183611f3c565b60c0909301929092525050565b60008080610da4858261097e565b90506000610db385600061097e565b90505b80821115610ddc57610dc88684611104565b925081610dd481611fbf565b925050610db6565b610de98684876000611128565b9695505050505050565b610e416040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526109de81610cae565b60208101516000610e6485610bb2565b90505b80515160208201511015610f3a57604081015161ffff16603014610ec35760408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610602565b6000610ece82611164565b90506000610ee960008351846111809092919063ffffffff16565b9050610ef78183898961121e565b15610f2a57610f0c8760e00151868385611377565b15610f1a5750505050505050565b60c08501849052610f2a85610cae565b5050610f3581610cae565b610e67565b508360e001516040517f06cde0f30000000000000000000000000000000000000000000000000000000081526004016106029190611e1e565b80515160208201511015611035576000610f8c82610c10565b9050610fa58460e00151826114cd90919063ffffffff16565b610fe3578360e00151816040517fd700ae7e000000000000000000000000000000000000000000000000000000008152600401610602929190611f91565b6000610fee83611164565b9050600061100960008351846111809092919063ffffffff16565b90506110178183888861121e565b1561102457505050505050565b50505061103081610cae565b610f73565b8260e001516040517f06cde0f30000000000000000000000000000000000000000000000000000000081526004016106029190611e1e565b81518111156110b55781516040517f8a3c1cfb000000000000000000000000000000000000000000000000000000008152610602918391600401918252602082015260400190565b5050565b6110c785610ad88387611f3c565b6110d583610ad88385611f3c565b610ac0826020850101856020880101836114f2565b60006110fa84610ad88486611f3c565b5091016020012090565b60006111108383610ae9565b60ff1661111e836001611f3c565b6109db9190611f3c565b6000611134858561106d565b61113e838361106d565b61114c8383848651036110ea565b61115a8686878951036110ea565b1495945050505050565b60a081015160c08201516060916109de91610c28908290611f4f565b60408051608081018252600080825260208201819052918101919091526060808201526111b86111b1600085611f3c565b8590610ac7565b61ffff1681526111d36111cc600285611f3c565b8590610ae9565b60ff1660208201526111e96111cc600385611f3c565b60ff1660408201526112126111ff600485611f3c565b61120a600485611f4f565b869190610b5c565b60608201529392505050565b6000846020015160ff1660031461123757506000610b54565b826020015160ff16856040015160ff161461125457506000610b54565b600061125f85611578565b90508360c0015161ffff168161ffff161461127e576000915050610b54565b855161010016600003611295576000915050610b54565b60408087015160ff1660009081526002602052205473ffffffffffffffffffffffffffffffffffffffff16806112d057600092505050610b54565b835160208501516040517fde8f50a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169263de8f50a19261132b928b929190600401611ff4565b602060405180830381865afa158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c919061202d565b979650505050505050565b60008061138383611578565b90505b845151602086015110156114c157600061139f86610c10565b90506113ab81886114cd565b6113e55786816040517fd700ae7e000000000000000000000000000000000000000000000000000000008152600401610602929190611f91565b60a086015160c087015160009161140a91611401908290611f4f565b89519190611180565b90508261ffff16816000015161ffff16146114265750506114b3565b856040015160ff16816020015160ff16146114425750506114b3565b60408051808201909152606081526000602082015261146f86518a516114689190611f3c565b82906117bc565b5061147a818a611833565b506114858187611833565b5061149d826040015182600001518460600151611854565b156114af576001945050505050610b54565b5050505b6114bc85610cae565b611386565b50600095945050505050565b6000815183511480156109db5750508051602091820120825192909101919091201490565b5b601f8111156115315781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016114f3565b801561157357815183516001602084900360031b1b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161783525b505050565b6000612000825111156115e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c6f6e67206b657973206e6f74207065726d69747465640000000000000000006044820152606401610602565b60008060005b8451601f0181101561165c57600081602087010151905085518260200111156116225785518290036008026101000390811c901b5b7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600882901c811694909401931691909101906020016115ed565b506010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff160191506010817fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1601905080600883901b0191506020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff160191506040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c8277ffffffffffffffff0000000000000000ffffffffffffffff16019150608082901c826fffffffffffffffffffffffffffffffff16019150601082901c61ffff16820191508192505050919050565b6040805180820190915260608152600060208201526117dc60208361204f565b15611804576117ec60208361204f565b6117f7906020611f4f565b6118019083611f3c565b91505b60208084018390526040518085526000815290818401018181101561182857600080fd5b604052509192915050565b6040805180820190915260608152600060208201526109db83838451611933565b60ff831660009081526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16611889575060006106d8565b60ff8416600090815260036020526040908190205490517ff7e83aee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f7e83aee906118f29086908690600401611f91565b602060405180830381865afa15801561190f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b54919061202d565b604080518082019091526060815260006020820152825182111561195657600080fd5b83515160006119658483611f3c565b90508560200151811115611987576119878661198283600261208a565b611a27565b8551805183820160200191600091808511156119a1578482525b505050602086015b602086106119e157805182526119c0602083611f3c565b91506119cd602082611f3c565b90506119da602087611f4f565b95506119a9565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208890036101000a0190811690199190911617905250849150509392505050565b8151611a3383836117bc565b50611a3e8382611833565b50505050565b803560ff81168114611a5557600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611a7c57600080fd5b50565b60008060408385031215611a9257600080fd5b611a9b83611a44565b91506020830135611aab81611a5a565b809150509250929050565b600060208284031215611ac857600080fd5b81356109db81611a5a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b2557611b25611ad3565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b7257611b72611ad3565b604052919050565b600082601f830112611b8b57600080fd5b813567ffffffffffffffff811115611ba557611ba5611ad3565b611bd660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611b2b565b818152846020838601011115611beb57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611c1957600080fd5b813567ffffffffffffffff811115611c3357611c33611ad3565b8060051b611c4360208201611b2b565b91825260208185018101929081019086841115611c5f57600080fd5b6020860192505b83831015610de957823567ffffffffffffffff811115611c8557600080fd5b860160408189037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215611cb957600080fd5b611cc1611b02565b602082013567ffffffffffffffff811115611cdb57600080fd5b611cea8a602083860101611b7a565b825250604082013567ffffffffffffffff811115611d0757600080fd5b611d168a602083860101611b7a565b6020830152508084525050602082019150602083019250611c66565b60008060408385031215611d4557600080fd5b823567ffffffffffffffff811115611d5c57600080fd5b611d6885828601611c08565b95602094909401359450505050565b6000815180845260005b81811015611d9d57602081850181015186830182015201611d81565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081526000611dee6040830185611d77565b905063ffffffff831660208301529392505050565b600060208284031215611e1557600080fd5b6109db82611a44565b6020815260006109db6020830184611d77565b600060208284031215611e4357600080fd5b813567ffffffffffffffff811115611e5a57600080fd5b610b5484828501611c08565b600181811c90821680611e7a57607f821691505b602082108103611eb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604081526000611efb6040830185611d77565b905060ff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156109de576109de611f0d565b818103818111156109de576109de611f0d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b604081526000611fa46040830185611d77565b8281036020840152611fb68185611d77565b95945050505050565b600081611fce57611fce611f0d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6060815260006120076060830186611d77565b82810360208401526120198186611d77565b90508281036040840152610de98185611d77565b60006020828403121561203f57600080fd5b815180151581146109db57600080fd5b600082612085577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b80820281158282048414176109de576109de611f0d56fea26469706673582212202091188cd1064e051f1bb9d37afe66661ed2418917cdb145f2b8df8b26e58b6564736f6c634300081a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c806373cc48a61161007657806398d35f201161005b57806398d35f2014610188578063bdf95fef1461019d578063c327deef146101b057600080fd5b806373cc48a61461010d5780638da5cb5b1461016857600080fd5b8063020ed8d3146100a857806313af4035146100bd57806328e7677d146100d0578063440f3d42146100e3575b600080fd5b6100bb6100b6366004611a7f565b6101e6565b005b6100bb6100cb366004611ab6565b61029a565b6100bb6100de366004611a7f565b610305565b6100f66100f1366004611d32565b6103b1565b604051610104929190611ddb565b60405180910390f35b61014361011b366004611e03565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610104565b6001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b610190610498565b6040516101049190611e1e565b6100f66101ab366004611e31565b610526565b6101436101be366004611e03565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461020a57600080fd5b60ff821660008181526002602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527ff73c3c226af96b7f1ba666a21b3ceaf2be3ee6a365e3178fd9cd1eaae0075aa891015b60405180910390a15050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102be57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461032957600080fd5b60ff821660008181526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251938452908301527f2fcc274c3b72dd483ab201bfa87295e3817e8b9b10693219873b722ca1af00c7910161028e565b6060600080600080546103c390611e66565b80601f01602080910402602001604051908101604052809291908181526020018280546103ef90611e66565b801561043c5780601f106104115761010080835404028352916020019161043c565b820191906000526020600020905b81548152906001019060200180831161041f57829003601f168201915b5050505050905060005b855181101561048e57600061047587838151811061046657610466611eb9565b6020026020010151848861053d565b61010081015160a0909101519450925050600101610446565b5091509250929050565b600080546104a590611e66565b80601f01602080910402602001604051908101604052809291908181526020018280546104d190611e66565b801561051e5780601f106104f35761010080835404028352916020019161051e565b820191906000526020600020905b81548152906001019060200180831161050157829003601f168201915b505050505081565b6060600061053483426103b1565b91509150915091565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082019290925260e081018290526101008101829052610120810191909152835161059b906106df565b905060006105ad828360000151610821565b604083015190915060ff166105c382600061097e565b1461060b578082604001516040517fe861b2bd000000000000000000000000000000000000000000000000000000008152600401610602929190611ee8565b60405180910390fd5b6101208201819052608082015160009084900360030b121561066f5760808201516040517fa784f87e00000000000000000000000000000000000000000000000000000000815263ffffffff91821660048201529084166024820152604401610602565b60a0820151600090840360030b12156106ca5760a08201516040517fbd41036a00000000000000000000000000000000000000000000000000000000815263ffffffff91821660048201529084166024820152604401610602565b6106d6818387876109e4565b505b9392505050565b604080516101408101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018190526101208201529061073a908390610ac7565b61ffff16815261074b826002610ae9565b60ff16602082015261075e826003610ae9565b60ff166040820152610771826004610b1c565b63ffffffff908116606083015261078d908390600890610b1c16565b63ffffffff90811660808301526107a9908390600c90610b1c16565b63ffffffff90811660a08301526107c5908390601090610ac716565b61ffff1660c08201526107d9826012610b39565b60e0820181905251610816906107f0906012611f3c565b8260e0015151601285516108049190611f4f565b61080e9190611f4f565b849190610b5c565b610100820152919050565b6060600061082e84610bb2565b90505b8051516020820151101561097757606081015161ffff1660011461088d5760608101516040517f98a5f31a00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610602565b81516000036108a65761089f81610c10565b9150610910565b602081015181516108b691610c31565b82511415806108d957508051602082015183516108d7928592600092610c8b565b155b15610910576040517fcbceee6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8261ffff16816040015161ffff16146109695760408082015190517fa6ff8a8a00000000000000000000000000000000000000000000000000000000815261ffff91821660048201529084166024820152604401610602565b61097281610cae565b610831565b5092915050565b6000805b8351831061099257610992611f62565b600061099e8585610ae9565b60ff1690506109ae816001611f3c565b6109b89085611f3c565b9350806000036109c857506109db565b6109d3600183611f3c565b915050610982565b90505b92915050565b60e08301516109f4908590610d96565b610a315760e08301516040517feaafc59b000000000000000000000000000000000000000000000000000000008152610602918691600401611f91565b6000610a3d8282610df3565b9050602b61ffff16816040015161ffff1603610a6357610a5e848483610e54565b610ac0565b603061ffff16816040015161ffff1603610a8257610a5e848483610f73565b60408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610602565b5050505050565b6000610add83610ad8846002611f3c565b61106d565b50016020015160f01c90565b6000610afa83610ad8846001611f3c565b828281518110610b0c57610b0c611eb9565b016020015160f81c905092915050565b6000610b2d83610ad8846004611f3c565b50016020015160e01c90565b60606000610b478484610c31565b9050610b54848483610b5c565b949350505050565b60608167ffffffffffffffff811115610b7757610b77611ad3565b6040519080825280601f01601f191660200182016040528015610ba1576020820181803683370190505b5090506106d88484836000866110b9565b610c006040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b6109de8261010001516000610df3565b602081015181516060916109de91610c289082610c31565b84519190610b5c565b6000815b83518110610c4557610c45611f62565b6000610c518583610ae9565b60ff169050610c61816001611f3c565b610c6b9083611f3c565b915080600003610c7b5750610c81565b50610c35565b610b548382611f4f565b6000610c988484846110ea565b610ca38787856110ea565b149695505050505050565b60c08101516020820181905281515111610cc55750565b6000610cd982600001518360200151610c31565b8260200151610ce89190611f3c565b8251909150610cf79082610ac7565b61ffff166040830152610d0b600282611f3c565b8251909150610d1a9082610ac7565b61ffff166060830152610d2e600282611f3c565b8251909150610d3d9082610b1c565b63ffffffff166080830152610d53600482611f3c565b8251909150600090610d659083610ac7565b61ffff169050610d76600283611f3c565b60a084018190529150610d898183611f3c565b60c0909301929092525050565b60008080610da4858261097e565b90506000610db385600061097e565b90505b80821115610ddc57610dc88684611104565b925081610dd481611fbf565b925050610db6565b610de98684876000611128565b9695505050505050565b610e416040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526109de81610cae565b60208101516000610e6485610bb2565b90505b80515160208201511015610f3a57604081015161ffff16603014610ec35760408082015190517f61529e8700000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610602565b6000610ece82611164565b90506000610ee960008351846111809092919063ffffffff16565b9050610ef78183898961121e565b15610f2a57610f0c8760e00151868385611377565b15610f1a5750505050505050565b60c08501849052610f2a85610cae565b5050610f3581610cae565b610e67565b508360e001516040517f06cde0f30000000000000000000000000000000000000000000000000000000081526004016106029190611e1e565b80515160208201511015611035576000610f8c82610c10565b9050610fa58460e00151826114cd90919063ffffffff16565b610fe3578360e00151816040517fd700ae7e000000000000000000000000000000000000000000000000000000008152600401610602929190611f91565b6000610fee83611164565b9050600061100960008351846111809092919063ffffffff16565b90506110178183888861121e565b1561102457505050505050565b50505061103081610cae565b610f73565b8260e001516040517f06cde0f30000000000000000000000000000000000000000000000000000000081526004016106029190611e1e565b81518111156110b55781516040517f8a3c1cfb000000000000000000000000000000000000000000000000000000008152610602918391600401918252602082015260400190565b5050565b6110c785610ad88387611f3c565b6110d583610ad88385611f3c565b610ac0826020850101856020880101836114f2565b60006110fa84610ad88486611f3c565b5091016020012090565b60006111108383610ae9565b60ff1661111e836001611f3c565b6109db9190611f3c565b6000611134858561106d565b61113e838361106d565b61114c8383848651036110ea565b61115a8686878951036110ea565b1495945050505050565b60a081015160c08201516060916109de91610c28908290611f4f565b60408051608081018252600080825260208201819052918101919091526060808201526111b86111b1600085611f3c565b8590610ac7565b61ffff1681526111d36111cc600285611f3c565b8590610ae9565b60ff1660208201526111e96111cc600385611f3c565b60ff1660408201526112126111ff600485611f3c565b61120a600485611f4f565b869190610b5c565b60608201529392505050565b6000846020015160ff1660031461123757506000610b54565b826020015160ff16856040015160ff161461125457506000610b54565b600061125f85611578565b90508360c0015161ffff168161ffff161461127e576000915050610b54565b855161010016600003611295576000915050610b54565b60408087015160ff1660009081526002602052205473ffffffffffffffffffffffffffffffffffffffff16806112d057600092505050610b54565b835160208501516040517fde8f50a100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169263de8f50a19261132b928b929190600401611ff4565b602060405180830381865afa158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c919061202d565b979650505050505050565b60008061138383611578565b90505b845151602086015110156114c157600061139f86610c10565b90506113ab81886114cd565b6113e55786816040517fd700ae7e000000000000000000000000000000000000000000000000000000008152600401610602929190611f91565b60a086015160c087015160009161140a91611401908290611f4f565b89519190611180565b90508261ffff16816000015161ffff16146114265750506114b3565b856040015160ff16816020015160ff16146114425750506114b3565b60408051808201909152606081526000602082015261146f86518a516114689190611f3c565b82906117bc565b5061147a818a611833565b506114858187611833565b5061149d826040015182600001518460600151611854565b156114af576001945050505050610b54565b5050505b6114bc85610cae565b611386565b50600095945050505050565b6000815183511480156109db5750508051602091820120825192909101919091201490565b5b601f8111156115315781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016114f3565b801561157357815183516001602084900360031b1b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161783525b505050565b6000612000825111156115e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c6f6e67206b657973206e6f74207065726d69747465640000000000000000006044820152606401610602565b60008060005b8451601f0181101561165c57600081602087010151905085518260200111156116225785518290036008026101000390811c901b5b7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600882901c811694909401931691909101906020016115ed565b506010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff160191506010817fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1601905080600883901b0191506020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff160191506040827fffffffffffffffff0000000000000000ffffffffffffffff000000000000000016901c8277ffffffffffffffff0000000000000000ffffffffffffffff16019150608082901c826fffffffffffffffffffffffffffffffff16019150601082901c61ffff16820191508192505050919050565b6040805180820190915260608152600060208201526117dc60208361204f565b15611804576117ec60208361204f565b6117f7906020611f4f565b6118019083611f3c565b91505b60208084018390526040518085526000815290818401018181101561182857600080fd5b604052509192915050565b6040805180820190915260608152600060208201526109db83838451611933565b60ff831660009081526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16611889575060006106d8565b60ff8416600090815260036020526040908190205490517ff7e83aee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f7e83aee906118f29086908690600401611f91565b602060405180830381865afa15801561190f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b54919061202d565b604080518082019091526060815260006020820152825182111561195657600080fd5b83515160006119658483611f3c565b90508560200151811115611987576119878661198283600261208a565b611a27565b8551805183820160200191600091808511156119a1578482525b505050602086015b602086106119e157805182526119c0602083611f3c565b91506119cd602082611f3c565b90506119da602087611f4f565b95506119a9565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208890036101000a0190811690199190911617905250849150509392505050565b8151611a3383836117bc565b50611a3e8382611833565b50505050565b803560ff81168114611a5557600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611a7c57600080fd5b50565b60008060408385031215611a9257600080fd5b611a9b83611a44565b91506020830135611aab81611a5a565b809150509250929050565b600060208284031215611ac857600080fd5b81356109db81611a5a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b2557611b25611ad3565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b7257611b72611ad3565b604052919050565b600082601f830112611b8b57600080fd5b813567ffffffffffffffff811115611ba557611ba5611ad3565b611bd660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611b2b565b818152846020838601011115611beb57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611c1957600080fd5b813567ffffffffffffffff811115611c3357611c33611ad3565b8060051b611c4360208201611b2b565b91825260208185018101929081019086841115611c5f57600080fd5b6020860192505b83831015610de957823567ffffffffffffffff811115611c8557600080fd5b860160408189037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215611cb957600080fd5b611cc1611b02565b602082013567ffffffffffffffff811115611cdb57600080fd5b611cea8a602083860101611b7a565b825250604082013567ffffffffffffffff811115611d0757600080fd5b611d168a602083860101611b7a565b6020830152508084525050602082019150602083019250611c66565b60008060408385031215611d4557600080fd5b823567ffffffffffffffff811115611d5c57600080fd5b611d6885828601611c08565b95602094909401359450505050565b6000815180845260005b81811015611d9d57602081850181015186830182015201611d81565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081526000611dee6040830185611d77565b905063ffffffff831660208301529392505050565b600060208284031215611e1557600080fd5b6109db82611a44565b6020815260006109db6020830184611d77565b600060208284031215611e4357600080fd5b813567ffffffffffffffff811115611e5a57600080fd5b610b5484828501611c08565b600181811c90821680611e7a57607f821691505b602082108103611eb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604081526000611efb6040830185611d77565b905060ff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156109de576109de611f0d565b818103818111156109de576109de611f0d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b604081526000611fa46040830185611d77565b8281036020840152611fb68185611d77565b95945050505050565b600081611fce57611fce611f0d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6060815260006120076060830186611d77565b82810360208401526120198186611d77565b90508281036040840152610de98185611d77565b60006020828403121561203f57600080fd5b815180151581146109db57600080fd5b600082612085577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b80820281158282048414176109de576109de611f0d56fea26469706673582212202091188cd1064e051f1bb9d37afe66661ed2418917cdb145f2b8df8b26e58b6564736f6c634300081a0033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {},
  "inputSourceName": "project/contracts/dnssec-oracle/DNSSECImpl.sol",
  "buildInfoId": "solc-0_8_26-f05bdccb11f2cf6df865fc6a27a95b5ace6017ea"
}