{
  "_format": "hh3-artifact-1",
  "contractName": "EnclavePricing",
  "sourceName": "contracts/lib/EnclavePricing.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "size",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minimum",
          "type": "uint256"
        }
      ],
      "name": "BelowMinCommitteeSize",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "threshold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minimum",
          "type": "uint256"
        }
      ],
      "name": "BelowMinThreshold",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "BpsExceedsMax",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        }
      ],
      "name": "CiphertextOutputAlreadyPublished",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "CommitteeDutiesCompleted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "enum IEnclave.CommitteeSize",
          "name": "committeeSize",
          "type": "uint8"
        }
      ],
      "name": "CommitteeSizeNotConfigured",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "enum IEnclave.CommitteeSize",
          "name": "committeeSize",
          "type": "uint8"
        }
      ],
      "name": "CommitteeSizeTooSmall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        }
      ],
      "name": "E3AlreadyComplete",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        }
      ],
      "name": "E3AlreadyFailed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "inputDeadline",
          "type": "uint256"
        }
      ],
      "name": "InputDeadlineNotReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "InvalidDuration",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "end",
          "type": "uint256"
        }
      ],
      "name": "InvalidInputDeadlineEnd",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "start",
          "type": "uint256"
        }
      ],
      "name": "InvalidInputDeadlineStart",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        },
        {
          "internalType": "enum IEnclave.E3Stage",
          "name": "expected",
          "type": "uint8"
        },
        {
          "internalType": "enum IEnclave.E3Stage",
          "name": "actual",
          "type": "uint8"
        }
      ],
      "name": "InvalidStage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidThresholdValues",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidTimeoutWindow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MinSizeBelowMinThreshold",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "PaymentRequired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "threshold",
          "type": "uint256"
        }
      ],
      "name": "ThresholdTooSmall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TreasuryRequired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "UtilizationBpsExceedsMax",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cnAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "n",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        }
      ],
      "name": "computeNodeAmounts",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultPricingConfig",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "keyGenFixedPerNode",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "keyGenPerEncryptionProof",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "coordinationPerPair",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availabilityPerNodePerSec",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decryptionPerNode",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "publicationBase",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "verificationPerProof",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "protocolTreasury",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "marginBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "protocolShareBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "dkgUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "computeUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decryptUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint32",
              "name": "minCommitteeSize",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "minThreshold",
              "type": "uint32"
            }
          ],
          "internalType": "struct IEnclave.PricingConfig",
          "name": "cfg",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "keyGenFixedPerNode",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "keyGenPerEncryptionProof",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "coordinationPerPair",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availabilityPerNodePerSec",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decryptionPerNode",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "publicationBase",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "verificationPerProof",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "protocolTreasury",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "marginBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "protocolShareBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "dkgUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "computeUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decryptUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint32",
              "name": "minCommitteeSize",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "minThreshold",
              "type": "uint32"
            }
          ],
          "internalType": "struct IEnclave.PricingConfig",
          "name": "pc",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "dkgWindow",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "computeWindow",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decryptionWindow",
              "type": "uint256"
            }
          ],
          "internalType": "struct IEnclave.E3TimeoutConfig",
          "name": "tc",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "sortitionWindow",
          "type": "uint256"
        },
        {
          "internalType": "uint32[2]",
          "name": "threshold",
          "type": "uint32[2]"
        },
        {
          "internalType": "uint256",
          "name": "inputWindowStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "inputWindowEnd",
          "type": "uint256"
        }
      ],
      "name": "quote",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32[2]",
          "name": "threshold",
          "type": "uint32[2]"
        },
        {
          "internalType": "uint32",
          "name": "minCommitteeSize",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "minThreshold",
          "type": "uint32"
        }
      ],
      "name": "validateCommitteeThresholds",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "current",
          "type": "uint8"
        }
      ],
      "name": "validateMarkFailedStage",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "keyGenFixedPerNode",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "keyGenPerEncryptionProof",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "coordinationPerPair",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availabilityPerNodePerSec",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decryptionPerNode",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "publicationBase",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "verificationPerProof",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "protocolTreasury",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "marginBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "protocolShareBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "dkgUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "computeUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "decryptUtilizationBps",
              "type": "uint16"
            },
            {
              "internalType": "uint32",
              "name": "minCommitteeSize",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "minThreshold",
              "type": "uint32"
            }
          ],
          "internalType": "struct IEnclave.PricingConfig",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "validatePricingConfig",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "e3Id",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "current",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "computeDeadline",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "inputWindowEnd",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "ciphertextOutput",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "nowTs",
          "type": "uint256"
        }
      ],
      "name": "validatePublishCiphertext",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32[2]",
          "name": "threshold",
          "type": "uint32[2]"
        },
        {
          "internalType": "uint8",
          "name": "committeeSize",
          "type": "uint8"
        },
        {
          "internalType": "uint32",
          "name": "minCommitteeSize",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "minThreshold",
          "type": "uint32"
        }
      ],
      "name": "validateQuoteThresholds",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[2]",
          "name": "inputWindow",
          "type": "uint256[2]"
        },
        {
          "internalType": "uint256",
          "name": "nowTs",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "computeWindow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decryptionWindow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "quotedFee",
          "type": "uint256"
        }
      ],
      "name": "validateRequest",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "dkgWindow",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "computeWindow",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "decryptionWindow",
              "type": "uint256"
            }
          ],
          "internalType": "struct IEnclave.E3TimeoutConfig",
          "name": "config",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "maxTimeoutWindow",
          "type": "uint256"
        }
      ],
      "name": "validateTimeoutConfig",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x61130c610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c80631a2dd41d146100a857806336523a5f146100bd5780634ae7776b146100d05780634ff2c9f5146100f6578063764346ff146101095780637cad3607146101585780637e262a6f1461016b578063b106e1521461017e578063bff6ec8e14610191578063de5fa95514610222578063ff9873ea14610235575b600080fd5b6100bb6100b6366004610d05565b610255565b005b6100bb6100cb366004610d6b565b610331565b6100e36100de366004610dc0565b6103c5565b6040519081526020015b60405180910390f35b6100bb610104366004610e52565b6106a0565b81801561011557600080fd5b506100bb620186a060185561c350601955612710601a556032601b55620493e0601c55620f4240601d55611388601e5569027104e202710000017760a21b601f55565b6100bb610166366004610f08565b610778565b6100bb610179366004610f53565b610814565b6100bb61018c366004610f7f565b6108d5565b604080516101e081018252600060e0820181905261012082018190526101a082018190526101c0820152620186a0815261c35060208201526127108183015260326060820152620493e06080820152620f424060a082015261138860c082018190526105dc6101008301526109c4610140830181905261016083019190915261018082015290516100ed9190610fc3565b6100bb6102303660046110d9565b610a2c565b6102486102433660046110fd565b610c0e565b6040516100ed9190611129565b60008560ff16600681111561026c5761026c61116c565b905060038160068111156102825761028261116c565b146102b057866003826040516337e1404160e01b81526004016102a793929190611196565b60405180910390fd5b818510156102db576040516308f3034360e31b815260048101889052602481018690526044016102a7565b838210156103065760405163017e35e560e71b815260048101889052602481018590526044016102a7565b821561032857604051637eb9cea960e11b8152600481018890526024016102a7565b50505050505050565b8135158061033f5750813581105b1561035d5760405163055f269d60e01b815260040160405180910390fd5b602082013515806103715750808260200135115b1561038f5760405163055f269d60e01b815260040160405180910390fd5b604082013515806103a35750808260400135115b156103c15760405163055f269d60e01b815260040160405180910390fd5b5050565b6000828210156103eb5760405163174b5a0760e21b8152600481018390526024016102a7565b60006103fd60408601602087016111d5565b63ffffffff169050600061041460208701876111d5565b63ffffffff16905060006104306101a08b016101808c016111f0565b6104429061ffff1660408b013561122a565b6104546101808c016101608d016111f0565b6104669061ffff1660208c013561122a565b6104786101608d016101408e016111f0565b6104879061ffff168c3561122a565b6104919190611241565b61049b9190611241565b905060006104ab6127108361126a565b876104b6888c611241565b6104c0919061127e565b6104ca9190611241565b905060006104d960018661127e565b6104e490600461122a565b6104ef90600e611241565b905060006104fe868e3561122a565b905081868e60200135610511919061122a565b61051b919061122a565b6105259082611241565b9050600186111561056d57600261053d60018861127e565b610547908861122a565b8e60400135610556919061122a565b610560919061126a565b61056a9082611241565b90505b81868e60c0013561057e919061122a565b610588919061122a565b6105929082611241565b905082868e606001356105a5919061122a565b6105af919061122a565b6105b99082611241565b90506105c98560808f013561122a565b6105d39082611241565b9050600185111561061b5760026105eb60018761127e565b6105f5908761122a565b8e60400135610604919061122a565b61060e919061126a565b6106189082611241565b90505b61062960a08e013582611241565b905061271061ffff168d61010001602081019061064691906111f0565b6106569061ffff16612710611241565b610660908361122a565b61066a919061126a565b96508660000361069057604051638c4fcd9360e01b8152600481018890526024016102a7565b5050505050509695505050505050565b60008360ff1660038111156106b7576106b761116c565b602086015190915063ffffffff166000036106e7578060405163286c068d60e11b81526004016102a79190611291565b60008363ffffffff161180156107095750602085015163ffffffff8481169116105b15610729578060405163010b971d60e31b81526004016102a79190611291565b60008263ffffffff161180156107485750845163ffffffff8381169116105b15610771578451604051630a4b6b6360e11b815263ffffffff90911660048201526024016102a7565b5050505050565b853585111561079d57604051630b99e87960e01b8152863560048201526024016102a7565b8535602087013510156107c95760405163174b5a0760e21b8152602087013560048201526024016102a7565b600083856107db8860208b013561127e565b6107e59190611241565b6107ef9190611241565b9050828110610328576040516313b783af60e21b8152600481018290526024016102a7565b60008160ff16600681111561082b5761082b61116c565b905060008160068111156108415761084161116c565b0361086657826001826040516337e1404160e01b81526004016102a793929190611196565b600581600681111561087a5761087a61116c565b0361089b5760405163462c7bed60e01b8152600481018490526024016102a7565b60068160068111156108af576108af61116c565b036108d057604051633de16e3560e11b8152600481018490526024016102a7565b505050565b6108e260208401846111d5565b63ffffffff16158061091a57506108fc60208401846111d5565b63ffffffff1661091260408501602086016111d5565b63ffffffff16105b1561093857604051634564ab9b60e01b815260040160405180910390fd5b61010061094b60408501602086016111d5565b63ffffffff16111561097057604051634564ab9b60e01b815260040160405180910390fd5b60008263ffffffff161180156109a0575063ffffffff821661099860408501602086016111d5565b63ffffffff16105b156109d1576109b560408401602085016111d5565b82604051633ccc4c2160e21b81526004016102a79291906112ab565b60008163ffffffff161180156109fe575063ffffffff81166109f660208501856111d5565b63ffffffff16105b156108d057610a1060208401846111d5565b8160405163156c4e5b60e11b81526004016102a79291906112ab565b611388610a41610120830161010084016111f0565b61ffff161115610a7d57610a5d610120820161010083016111f0565b6040516301027fc160e21b815261ffff90911660048201526024016102a7565b611388610a92610140830161012084016111f0565b61ffff161115610aae57610a5d610140820161012083016111f0565b612710610ac3610160830161014084016111f0565b61ffff161115610aff57610adf610160820161014083016111f0565b604051633239953960e01b815261ffff90911660048201526024016102a7565b612710610b14610180830161016084016111f0565b61ffff161115610b3057610adf610180820161016083016111f0565b612710610b456101a0830161018084016111f0565b61ffff161115610b6157610adf6101a0820161018083016111f0565b610b73610140820161012083016111f0565b61ffff1615801590610b9e57506000610b93610100830160e084016112c2565b6001600160a01b0316145b15610bbc5760405163015f92ff60e51b815260040160405180910390fd5b610bce6101e082016101c083016111d5565b63ffffffff16610be66101c083016101a084016111d5565b63ffffffff161015610c0b576040516392f55c6560e01b815260040160405180910390fd5b50565b6060826001600160401b03811115610c2857610c28610e28565b604051908082528060200260200182016040528015610c51578160200160208202803683370190505b5090506000610c60848661126a565b905060005b84811015610c935781838281518110610c8057610c806111bf565b6020908102919091010152600101610c65565b506000610ca0858361122a565b610caa908761127e565b90508015610ce6578083610cbe87876112eb565b81518110610cce57610cce6111bf565b60200260200101818151610ce29190611241565b9052505b50509392505050565b803560ff81168114610d0057600080fd5b919050565b60008060008060008060c08789031215610d1e57600080fd5b86359550610d2e60208801610cef565b95989597505050506040840135936060810135936080820135935060a0909101359150565b600060608284031215610d6557600080fd5b50919050565b60008060808385031215610d7e57600080fd5b610d888484610d53565b946060939093013593505050565b60006101e08284031215610d6557600080fd5b8060408101831015610dba57600080fd5b92915050565b6000806000806000806102e08789031215610dda57600080fd5b610de48888610d96565b9550610df4886101e08901610d53565b94506102408701359350610e0c886102608901610da9565b959894975092956102a0810135946102c0909101359350915050565b634e487b7160e01b600052604160045260246000fd5b803563ffffffff81168114610d0057600080fd5b60008060008060a08587031215610e6857600080fd5b85601f860112610e7757600080fd5b604080519081016001600160401b0381118282101715610e9957610e99610e28565b8060405250806040870188811115610eb057600080fd5b875b81811015610ed157610ec381610e3e565b835260209283019201610eb2565b50829650610ede81610cef565b9550505050610eef60608601610e3e565b9150610efd60808601610e3e565b905092959194509250565b60008060008060008060e08789031215610f2157600080fd5b610f2b8888610da9565b98604088013598506060880135976080810135975060a0810135965060c00135945092505050565b60008060408385031215610f6657600080fd5b82359150610f7660208401610cef565b90509250929050565b600080600060808486031215610f9457600080fd5b610f9e8585610da9565b9250610fac60408501610e3e565b9150610fba60608501610e3e565b90509250925092565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015161102660e08401826001600160a01b03169052565b5061010083015161103e61010084018261ffff169052565b5061012083015161105661012084018261ffff169052565b5061014083015161106e61014084018261ffff169052565b5061016083015161108661016084018261ffff169052565b5061018083015161109e61018084018261ffff169052565b506101a08301516110b86101a084018263ffffffff169052565b506101c08301516110d26101c084018263ffffffff169052565b5092915050565b60006101e082840312156110ec57600080fd5b6110f68383610d96565b9392505050565b60008060006060848603121561111257600080fd5b505081359360208301359350604090920135919050565b602080825282518282018190526000918401906040840190835b81811015611161578351835260209384019390920191600101611143565b509095945050505050565b634e487b7160e01b600052602160045260246000fd5b600781106111925761119261116c565b9052565b838152606081016111aa6020830185611182565b6111b76040830184611182565b949350505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156111e757600080fd5b6110f682610e3e565b60006020828403121561120257600080fd5b813561ffff811681146110f657600080fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610dba57610dba611214565b80820180821115610dba57610dba611214565b634e487b7160e01b600052601260045260246000fd5b60008261127957611279611254565b500490565b81810381811115610dba57610dba611214565b60208101600483106112a5576112a561116c565b91905290565b63ffffffff92831681529116602082015260400190565b6000602082840312156112d457600080fd5b81356001600160a01b03811681146110f657600080fd5b6000826112fa576112fa611254565b50069056fea164736f6c634300081c000a",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c80631a2dd41d146100a857806336523a5f146100bd5780634ae7776b146100d05780634ff2c9f5146100f6578063764346ff146101095780637cad3607146101585780637e262a6f1461016b578063b106e1521461017e578063bff6ec8e14610191578063de5fa95514610222578063ff9873ea14610235575b600080fd5b6100bb6100b6366004610d05565b610255565b005b6100bb6100cb366004610d6b565b610331565b6100e36100de366004610dc0565b6103c5565b6040519081526020015b60405180910390f35b6100bb610104366004610e52565b6106a0565b81801561011557600080fd5b506100bb620186a060185561c350601955612710601a556032601b55620493e0601c55620f4240601d55611388601e5569027104e202710000017760a21b601f55565b6100bb610166366004610f08565b610778565b6100bb610179366004610f53565b610814565b6100bb61018c366004610f7f565b6108d5565b604080516101e081018252600060e0820181905261012082018190526101a082018190526101c0820152620186a0815261c35060208201526127108183015260326060820152620493e06080820152620f424060a082015261138860c082018190526105dc6101008301526109c4610140830181905261016083019190915261018082015290516100ed9190610fc3565b6100bb6102303660046110d9565b610a2c565b6102486102433660046110fd565b610c0e565b6040516100ed9190611129565b60008560ff16600681111561026c5761026c61116c565b905060038160068111156102825761028261116c565b146102b057866003826040516337e1404160e01b81526004016102a793929190611196565b60405180910390fd5b818510156102db576040516308f3034360e31b815260048101889052602481018690526044016102a7565b838210156103065760405163017e35e560e71b815260048101889052602481018590526044016102a7565b821561032857604051637eb9cea960e11b8152600481018890526024016102a7565b50505050505050565b8135158061033f5750813581105b1561035d5760405163055f269d60e01b815260040160405180910390fd5b602082013515806103715750808260200135115b1561038f5760405163055f269d60e01b815260040160405180910390fd5b604082013515806103a35750808260400135115b156103c15760405163055f269d60e01b815260040160405180910390fd5b5050565b6000828210156103eb5760405163174b5a0760e21b8152600481018390526024016102a7565b60006103fd60408601602087016111d5565b63ffffffff169050600061041460208701876111d5565b63ffffffff16905060006104306101a08b016101808c016111f0565b6104429061ffff1660408b013561122a565b6104546101808c016101608d016111f0565b6104669061ffff1660208c013561122a565b6104786101608d016101408e016111f0565b6104879061ffff168c3561122a565b6104919190611241565b61049b9190611241565b905060006104ab6127108361126a565b876104b6888c611241565b6104c0919061127e565b6104ca9190611241565b905060006104d960018661127e565b6104e490600461122a565b6104ef90600e611241565b905060006104fe868e3561122a565b905081868e60200135610511919061122a565b61051b919061122a565b6105259082611241565b9050600186111561056d57600261053d60018861127e565b610547908861122a565b8e60400135610556919061122a565b610560919061126a565b61056a9082611241565b90505b81868e60c0013561057e919061122a565b610588919061122a565b6105929082611241565b905082868e606001356105a5919061122a565b6105af919061122a565b6105b99082611241565b90506105c98560808f013561122a565b6105d39082611241565b9050600185111561061b5760026105eb60018761127e565b6105f5908761122a565b8e60400135610604919061122a565b61060e919061126a565b6106189082611241565b90505b61062960a08e013582611241565b905061271061ffff168d61010001602081019061064691906111f0565b6106569061ffff16612710611241565b610660908361122a565b61066a919061126a565b96508660000361069057604051638c4fcd9360e01b8152600481018890526024016102a7565b5050505050509695505050505050565b60008360ff1660038111156106b7576106b761116c565b602086015190915063ffffffff166000036106e7578060405163286c068d60e11b81526004016102a79190611291565b60008363ffffffff161180156107095750602085015163ffffffff8481169116105b15610729578060405163010b971d60e31b81526004016102a79190611291565b60008263ffffffff161180156107485750845163ffffffff8381169116105b15610771578451604051630a4b6b6360e11b815263ffffffff90911660048201526024016102a7565b5050505050565b853585111561079d57604051630b99e87960e01b8152863560048201526024016102a7565b8535602087013510156107c95760405163174b5a0760e21b8152602087013560048201526024016102a7565b600083856107db8860208b013561127e565b6107e59190611241565b6107ef9190611241565b9050828110610328576040516313b783af60e21b8152600481018290526024016102a7565b60008160ff16600681111561082b5761082b61116c565b905060008160068111156108415761084161116c565b0361086657826001826040516337e1404160e01b81526004016102a793929190611196565b600581600681111561087a5761087a61116c565b0361089b5760405163462c7bed60e01b8152600481018490526024016102a7565b60068160068111156108af576108af61116c565b036108d057604051633de16e3560e11b8152600481018490526024016102a7565b505050565b6108e260208401846111d5565b63ffffffff16158061091a57506108fc60208401846111d5565b63ffffffff1661091260408501602086016111d5565b63ffffffff16105b1561093857604051634564ab9b60e01b815260040160405180910390fd5b61010061094b60408501602086016111d5565b63ffffffff16111561097057604051634564ab9b60e01b815260040160405180910390fd5b60008263ffffffff161180156109a0575063ffffffff821661099860408501602086016111d5565b63ffffffff16105b156109d1576109b560408401602085016111d5565b82604051633ccc4c2160e21b81526004016102a79291906112ab565b60008163ffffffff161180156109fe575063ffffffff81166109f660208501856111d5565b63ffffffff16105b156108d057610a1060208401846111d5565b8160405163156c4e5b60e11b81526004016102a79291906112ab565b611388610a41610120830161010084016111f0565b61ffff161115610a7d57610a5d610120820161010083016111f0565b6040516301027fc160e21b815261ffff90911660048201526024016102a7565b611388610a92610140830161012084016111f0565b61ffff161115610aae57610a5d610140820161012083016111f0565b612710610ac3610160830161014084016111f0565b61ffff161115610aff57610adf610160820161014083016111f0565b604051633239953960e01b815261ffff90911660048201526024016102a7565b612710610b14610180830161016084016111f0565b61ffff161115610b3057610adf610180820161016083016111f0565b612710610b456101a0830161018084016111f0565b61ffff161115610b6157610adf6101a0820161018083016111f0565b610b73610140820161012083016111f0565b61ffff1615801590610b9e57506000610b93610100830160e084016112c2565b6001600160a01b0316145b15610bbc5760405163015f92ff60e51b815260040160405180910390fd5b610bce6101e082016101c083016111d5565b63ffffffff16610be66101c083016101a084016111d5565b63ffffffff161015610c0b576040516392f55c6560e01b815260040160405180910390fd5b50565b6060826001600160401b03811115610c2857610c28610e28565b604051908082528060200260200182016040528015610c51578160200160208202803683370190505b5090506000610c60848661126a565b905060005b84811015610c935781838281518110610c8057610c806111bf565b6020908102919091010152600101610c65565b506000610ca0858361122a565b610caa908761127e565b90508015610ce6578083610cbe87876112eb565b81518110610cce57610cce6111bf565b60200260200101818151610ce29190611241565b9052505b50509392505050565b803560ff81168114610d0057600080fd5b919050565b60008060008060008060c08789031215610d1e57600080fd5b86359550610d2e60208801610cef565b95989597505050506040840135936060810135936080820135935060a0909101359150565b600060608284031215610d6557600080fd5b50919050565b60008060808385031215610d7e57600080fd5b610d888484610d53565b946060939093013593505050565b60006101e08284031215610d6557600080fd5b8060408101831015610dba57600080fd5b92915050565b6000806000806000806102e08789031215610dda57600080fd5b610de48888610d96565b9550610df4886101e08901610d53565b94506102408701359350610e0c886102608901610da9565b959894975092956102a0810135946102c0909101359350915050565b634e487b7160e01b600052604160045260246000fd5b803563ffffffff81168114610d0057600080fd5b60008060008060a08587031215610e6857600080fd5b85601f860112610e7757600080fd5b604080519081016001600160401b0381118282101715610e9957610e99610e28565b8060405250806040870188811115610eb057600080fd5b875b81811015610ed157610ec381610e3e565b835260209283019201610eb2565b50829650610ede81610cef565b9550505050610eef60608601610e3e565b9150610efd60808601610e3e565b905092959194509250565b60008060008060008060e08789031215610f2157600080fd5b610f2b8888610da9565b98604088013598506060880135976080810135975060a0810135965060c00135945092505050565b60008060408385031215610f6657600080fd5b82359150610f7660208401610cef565b90509250929050565b600080600060808486031215610f9457600080fd5b610f9e8585610da9565b9250610fac60408501610e3e565b9150610fba60608501610e3e565b90509250925092565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015161102660e08401826001600160a01b03169052565b5061010083015161103e61010084018261ffff169052565b5061012083015161105661012084018261ffff169052565b5061014083015161106e61014084018261ffff169052565b5061016083015161108661016084018261ffff169052565b5061018083015161109e61018084018261ffff169052565b506101a08301516110b86101a084018263ffffffff169052565b506101c08301516110d26101c084018263ffffffff169052565b5092915050565b60006101e082840312156110ec57600080fd5b6110f68383610d96565b9392505050565b60008060006060848603121561111257600080fd5b505081359360208301359350604090920135919050565b602080825282518282018190526000918401906040840190835b81811015611161578351835260209384019390920191600101611143565b509095945050505050565b634e487b7160e01b600052602160045260246000fd5b600781106111925761119261116c565b9052565b838152606081016111aa6020830185611182565b6111b76040830184611182565b949350505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156111e757600080fd5b6110f682610e3e565b60006020828403121561120257600080fd5b813561ffff811681146110f657600080fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610dba57610dba611214565b80820180821115610dba57610dba611214565b634e487b7160e01b600052601260045260246000fd5b60008261127957611279611254565b500490565b81810381811115610dba57610dba611214565b60208101600483106112a5576112a561116c565b91905290565b63ffffffff92831681529116602082015260400190565b6000602082840312156112d457600080fd5b81356001600160a01b03811681146110f657600080fd5b6000826112fa576112fa611254565b50069056fea164736f6c634300081c000a",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {},
  "inputSourceName": "project/contracts/lib/EnclavePricing.sol",
  "buildInfoId": "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"
}