From 2f0e9afbc92e6949b73380c252d9f195befe2aea Mon Sep 17 00:00:00 2001 From: TuDo1403 Date: Wed, 13 Mar 2024 13:27:45 +0700 Subject: [PATCH] chore: add deployment artifact --- .../2021/run-latest.json | 59 + .../ronin-testnet/RNSDomainPriceLogic.json | 10388 +++++++++++++++- 2 files changed, 10441 insertions(+), 6 deletions(-) diff --git a/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2021/run-latest.json b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2021/run-latest.json index c5c4ea09..7963ca8b 100644 --- a/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2021/run-latest.json +++ b/broadcast/01_UpgradeRNSDomainPrice_OverrideTierForCommunityNames.s.sol/2021/run-latest.json @@ -1,40 +1,56 @@ { "transactions": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "hash": "0x202d869a6cae9b23737797ed7cab835027f1cafbf4fd96188aabb9265a7fbc3a", "transactionType": "CREATE", "contractName": "RNSDomainPrice", "contractAddress": "0xc77EAbB5172037A1a82f4E6bb6813894121d8062", ======= +======= +>>>>>>> Stashed changes "hash": "0xe1d34b660c74fe27dab2d792763a87a1768319d28ed62d93ba1f0045c1514cd5", "transactionType": "CREATE", "contractName": "RNSDomainPrice", "contractAddress": "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "function": null, "arguments": null, "transaction": { "type": "0x00", "from": "0x968d0cd7343f711216817e617d3f92a23dc91c07", +<<<<<<< Updated upstream <<<<<<< Updated upstream "gas": "0x5a1834", "value": "0x0", "data": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6133f880620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063700213c81161011a578063cff8372f116100ad578063dfef64da1161007c578063dfef64da146104e7578063e229a670146104fa578063f4651f491461050d578063f5b541a61461052e578063fe303ebf1461055557600080fd5b8063cff8372f1461049b578063d40ed58c146104ae578063d547741f146104c1578063dd28776d146104d457600080fd5b80639010d07c116100e95780639010d07c1461044257806391d148541461046d578063a217fddf14610480578063ca15c8731461048857600080fd5b8063700213c8146103df578063713a69a7146103f45780637174026e1461041c5780637e32146a1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf90914610391578063599eaabf146103b15780635c68c830146103c45780635ef32e2c146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046125de565b610568565b60405190151581526020015b60405180910390f35b61023b610236366004612608565b610593565b60405190815260200161021f565b610251610625565b60405161021f9190612621565b61023b61026c366004612608565b6000908152600160208190526040909120015490565b610295610290366004612698565b610702565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d33660046126cd565b61071e565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612741565b610749565b6102956103133660046126cd565b61075e565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f3660046127c6565b6107e1565b60405161021f9190612889565b6102956103bf3660046127c6565b61091a565b61023b6103d23660046128cf565b6109d8565b60375461023b565b61023b6000805160206133a383398151915281565b610407610402366004612a6f565b610a56565b6040805192835260208301919091520161021f565b61023b61042a366004612608565b610a82565b61023b61043d3660046128cf565b610b15565b610455610450366004612aa3565b610b8c565b6040516001600160a01b03909116815260200161021f565b61021361047b3660046126cd565b610bab565b61023b600081565b61023b610496366004612608565b610bd6565b6102956104a9366004612ac5565b610bed565b6102956104bc366004612b48565b610ced565b6102956104cf3660046126cd565b610eb5565b6102956104e2366004612ac5565b610edb565b61023b6104f5366004612a6f565b610fdc565b610295610508366004612c21565b6110c8565b61052061051b366004612c3d565b6110dc565b60405161021f929190612c81565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b610295610563366004612608565b611492565b60006001600160e01b03198216635a05180f60e01b148061058d575061058d826114a6565b92915050565b603554603a5460395460405163052571af60e51b815260009361058d93869360129384936001600160a01b03169263a4ae35e0926105dc92600401918252602082015260400190565b608060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d9190612cbc565b9291906114db565b603854606090806001600160401b0381111561064357610643612940565b60405190808252806020026020018201604052801561068857816020015b60408051808201909152600080825260208201528152602001906001900390816106615790505b5091506000805b828110156106fc57806001019150818482815181106106b0576106b0612d29565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106e6576106e6612d29565b602090810291909101810151015260010161068f565b50505090565b600061070d8161151c565b610718848484611529565b50505050565b6000828152600160208190526040909120015461073a8161151c565b610744838361159b565b505050565b60006107548161151c565b61074483836115bd565b6001600160a01b03811633146107d35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107dd82826116d6565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961080d8161151c565b600061081f8b8b8b8b8b8b8b8b6116f8565b905033816001600160401b0381111561083a5761083a612940565b604051908082528060200260200182016040528015610863578160200160208202803683370190505b50935060005b8281101561090a576108e0828e8e8481811061088757610887612d29565b905060200201358d8d858181106108a0576108a0612d29565b905060200201358c8c868181106108b9576108b9612d29565b905060200201358b8b878181106108d2576108d2612d29565b905060200201356000611746565b8582815181106108f2576108f2612d29565b91151560209283029190910190910152600101610869565b5050505098975050505050505050565b6000805160206133a38339815191526109328161151c565b60006109448a8a8a8a8a8a8a8a6116f8565b90503360005b828110156109ca576109c1828d8d8481811061096857610968612d29565b905060200201358c8c8581811061098157610981612d29565b905060200201358b8b8681811061099a5761099a612d29565b905060200201358a8a878181106109b3576109b3612d29565b905060200201356001611746565b5060010161094a565b505050505050505050505050565b6000603e6000610a1d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f57604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610a70610a6b84805160209091012090565b6117e0565b9150610a7b82610a82565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161058d918491601291829161061d91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0f9190612cbc565b9061185a565b6000603f6000610b5a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f5760405163b34afcf160e01b815260040160405180910390fd5b6000828152600260205260408120610ba490836119b4565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061058d906119c0565b6000805160206133a3833981519152610c058161151c565b83801580610c135750808314155b15610c3157604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610c5057610c50612d29565b9050602002013519925082603f60008b8b85818110610c7157610c71612d29565b9050602002013581526020019081526020016000208190555082898983818110610c9d57610c9d612d29565b90506020020135836001600160a01b03167f5b8d0f05b93072a3e070357b7d9701f1c089233e92359bcbcb2c4b4dd182a15060405160405180910390a4600101610c36565b505050505050505050565b600054610100900460ff1615808015610d0d5750600054600160ff909116105b80610d275750303b158015610d27575060005460ff166001145b610d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107ca565b6000805460ff191660011790558015610dad576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610e1257610e0a828f8f84818110610df057610df0612d29565b9050602002016020810190610e059190612d3f565b6119ca565b600101610dd2565b50603680546001600160a01b0319166001600160a01b038816179055610e3960008f6119ca565b610e438b8b6115bd565b610e4c896119d4565b610e5588611a09565b610e60878686611529565b505080156109ca576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610ed18161151c565b61074483836116d6565b6000805160206133a3833981519152610ef38161151c565b83801580610f015750808314155b15610f1f57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610f3e57610f3e612d29565b9050602002013519925082603e60008b8b85818110610f5f57610f5f612d29565b90506020020135815260200190815260200160002081905550888882818110610f8a57610f8a612d29565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf6621485604051610fcc91815260200190565b60405180910390a3600101610f24565b80516020808301919091206000818152603f9092526040822054801561100457199392505050565b6000828152603e60205260408120549081810361105657603c600061103361102b89611a85565b603854611b73565b8152602001908152602001600020546301e133806110519190612d72565b611065565b61106582196301e13380612d72565b905060006002611074866117e0565b61107e9190612d9f565b6110889083612db3565b9050680ad78ebc5ac62000008111156110a95760015b979650505050505050565b6802b5e3af16b18800008111156110c157600261109e565b600361109e565b60006110d38161151c565b6107dd82611a09565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061110f85611a85565b855160208701209091506000906000818152603e602052604090205490915080156111465761113f811987612d72565b8552611465565b6000603c600061115886603854611b73565b815260200190815260200160002054905080876111759190612d72565b865260006111b47fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888a6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190612dd6565b15611461576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d9190612df1565b90506000611328826001600160a01b03166303e9e609866040518263ffffffff1660e01b81526004016112c291815260200190565b600060405180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113079190810190612e98565b60200151604001516001600160401b03168c6001600160401b038016611b89565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113979190612f9f565b5060408101516060015190915080158015906114255750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611410919061303c565b6001600160401b03166114238285613059565b115b1561144357604051631bb03f9d60e01b815260040160405180910390fd5b61145a6037546114528b6117e0565b612710611bbf565b8b52505050505b5050505b835161147090610a82565b6020850152845161148090610a82565b60208601525092959194509092505050565b600061149d8161151c565b6107dd826119d4565b60006001600160e01b03198216637965db0b60e01b148061058d57506301ffc9a760e01b6001600160e01b031983161461058d565b600061151184611501876000015160070b8860400151866114fc919061306c565b611ca9565b61150c600187611ca9565b611bbf565b90505b949350505050565b6115268133611d03565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161158e91815260200190565b60405180910390a4505050565b6115a58282611d5c565b60008281526002602052604090206107449082611dc7565b60408051808201909152600080825260208201523390603854839060005b82811015611688578686828181106115f5576115f5612d29565b90506040020180360381019061160b9190613093565b935061161b828560000151611ddc565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161167891815260200190565b60405180910390a36001016115db565b5060385481146116ce57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6116e08282611deb565b60008281526002602052604090206107449082611e52565b868015806117065750858114155b806117115750838114155b8061171c5750818114155b1561173a57604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061175286610593565b6000888152603d60205260409020909150838061176f5750805482115b925082156117c957818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611804575060009392505050565b60006118108242613059565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611851919061271084611e67565b95945050505050565b6040805160808101825260008082526020820181905291810182905260608101919091526000611893600185604001516114fc906130c5565b90506001600160ff1b038111156118c9576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107ca565b60006118d960016114fc866130c5565b90506001600160ff1b0381111561190957604051633e87ca5d60e11b8152600385900b60048201526024016107ca565b845160009060070b61191b83856130e8565b6119259190613118565b9050677fffffffffffffff81131561197157604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107ca565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610ba48383611f32565b600061058d825490565b6107dd828261159b565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b611a16828261315b565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc64611a48602084018461319d565b611a5860408501602086016131ba565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b600080600080845190505b80831015611b6b576000858481518110611aac57611aac612d29565b01602001516001600160f81b0319169050600160ff1b811015611ad457600184019350611b5f565b600760fd1b6001600160f81b031982161015611af557600284019350611b5f565b600f60fc1b6001600160f81b031982161015611b1657600384019350611b5f565b601f60fb1b6001600160f81b031982161015611b3757600484019350611b5f565b603f60fa1b6001600160f81b031982161015611b5857600584019350611b5f565b6006840193505b50600190910190611a90565b509392505050565b6000818310611b825781610ba4565b5090919050565b600081841180611b9857508183115b15611ba4575080610ba4565b611bae8484611f5c565b905081811115610ba4575092915050565b6000808060001985870985870292508281108382030391505080600003611bf957838281611bef57611bef612d89565b0492505050610ba4565b808411611c405760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107ca565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808260030b1215611cdb57611cbf826130c5565b611cca90600a6132bb565b611cd49084612d9f565b905061058d565b60008260030b1315611cfc57611cf282600a6132bb565b611cd49084612d72565b508161058d565b611d0d8282610bab565b6107dd57611d1a81611f70565b611d25836020611f82565b604051602001611d369291906132cd565b60408051601f198184030181529082905262461bcd60e51b82526107ca91600401613342565b611d668282610bab565b6107dd5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610ba4836001600160a01b03841661211d565b6000818311611b825781610ba4565b611df58282610bab565b156107dd5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ba4836001600160a01b03841661216c565b60008085602001516001600160401b031683611e839190612d9f565b9050801580611e9a575085516001600160c01b0316155b15611ea85784915050611514565b85516001600160c01b03166001600160401b03851603611ecc576000915050611514565b61ffff811115611ef257604051637359f25f60e01b8152600481018290526024016107ca565b6000611f228760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611bbf565b905061109e86826127108561225f565b6000826000018281548110611f4957611f49612d29565b9060005260206000200154905092915050565b8181018281101561058d575060001961058d565b606061058d6001600160a01b03831660145b60606000611f91836002612d72565b611f9c906002612db3565b6001600160401b03811115611fb357611fb3612940565b6040519080825280601f01601f191660200182016040528015611fdd576020820181803683370190505b509050600360fc1b81600081518110611ff857611ff8612d29565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061202757612027612d29565b60200101906001600160f81b031916908160001a905350600061204b846002612d72565b612056906001612db3565b90505b60018111156120ce576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061208a5761208a612d29565b1a60f81b8282815181106120a0576120a0612d29565b60200101906001600160f81b031916908160001a90535060049490941c936120c781613375565b9050612059565b508315610ba45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ca565b60008181526001830160205260408120546121645750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561058d565b50600061058d565b60008181526001830160205260408120548015612255576000612190600183613059565b85549091506000906121a490600190613059565b90508181146122095760008660000182815481106121c4576121c4612d29565b90600052602060002001549050808760000184815481106121e7576121e7612d29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061221a5761221a61338c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061058d565b600091505061058d565b600082841480612271575061ffff8216155b1561227d575083611514565b5083600080808061229e61ffff87166122958a6123c2565b61ffff16611b73565b90505b61ffff8116156122f4576122bb8561ffff83168a0a612593565b909450925083156122d457829450808603955080820191505b6122ed600261ffff83160461ffff168761ffff16611b73565b90506122a1565b505b61ffff8516156123675761230a8488612593565b90935091508215612329576000199094019390925082906001016122f6565b61ffff81161561234e5785848161234257612342612d89565b049350600019016122f6565b612359848888611bbf565b6000199095019493506122f6565b6000612372876123c2565b90505b61ffff8216156123b65760006123938261ffff168461ffff16611b73565b90508061ffff16880a86816123aa576123aa612d89565b04955090910390612375565b50505050949350505050565b600060038210156123d5575060ff919050565b60048210156123e657506080919050565b60108210156123f757506040919050565b61010082101561240957506020919050565b611bdc82101561241b57506014919050565b612c7082101561242d57506013919050565b614aa982101561243f57506012919050565b61855482101561245157506011919050565b6201000082101561246457506010919050565b620218378210156124775750600f919050565b6204e04682101561248a5750600e919050565b620ced4c82101561249d5750600d919050565b622851468210156124b05750600c919050565b629aa2ad8210156124c35750600b919050565b6303080c018210156124d75750600a919050565b6315c5cbbd8210156124eb57506009919050565b64010000000082101561250057506008919050565b6417c6a1f29f82101561251557506007919050565b6506597fa94f5c82101561252b57506006919050565b66093088c35d733b82101561254257506005919050565b6801000000000000000082101561255b57506004919050565b6a285145f31ae515c447bb5782101561257657506003919050565b600160801b82101561258a57506002919050565b5060015b919050565b600080836000036125aa57506001905060006125d7565b838302838582816125bd576125bd612d89565b04146125d05760008092509250506125d7565b6001925090505b9250929050565b6000602082840312156125f057600080fd5b81356001600160e01b031981168114610ba457600080fd5b60006020828403121561261a57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561266b5761265b84835180518252602090810151910152565b928401929085019060010161263e565b5091979650505050505050565b6001600160a01b038116811461152657600080fd5b803561258e81612678565b6000806000606084860312156126ad57600080fd5b83356126b881612678565b95602085013595506040909401359392505050565b600080604083850312156126e057600080fd5b8235915060208301356126f281612678565b809150509250929050565b60008083601f84011261270f57600080fd5b5081356001600160401b0381111561272657600080fd5b6020830191508360208260061b85010111156125d757600080fd5b6000806020838503121561275457600080fd5b82356001600160401b0381111561276a57600080fd5b612776858286016126fd565b90969095509350505050565b60008083601f84011261279457600080fd5b5081356001600160401b038111156127ab57600080fd5b6020830191508360208260051b85010111156125d757600080fd5b6000806000806000806000806080898b0312156127e257600080fd5b88356001600160401b03808211156127f957600080fd5b6128058c838d01612782565b909a50985060208b013591508082111561281e57600080fd5b61282a8c838d01612782565b909850965060408b013591508082111561284357600080fd5b61284f8c838d01612782565b909650945060608b013591508082111561286857600080fd5b506128758b828c01612782565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156128c35783511515835292840192918401916001016128a5565b50909695505050505050565b600080602083850312156128e257600080fd5b82356001600160401b03808211156128f957600080fd5b818501915085601f83011261290d57600080fd5b81358181111561291c57600080fd5b86602082850101111561292e57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561297857612978612940565b60405290565b604080519081016001600160401b038111828210171561297857612978612940565b604051606081016001600160401b038111828210171561297857612978612940565b604051601f8201601f191681016001600160401b03811182821017156129ea576129ea612940565b604052919050565b60006001600160401b03821115612a0b57612a0b612940565b50601f01601f191660200190565b600082601f830112612a2a57600080fd5b8135612a3d612a38826129f2565b6129c2565b818152846020838601011115612a5257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612a8157600080fd5b81356001600160401b03811115612a9757600080fd5b61151484828501612a19565b60008060408385031215612ab657600080fd5b50508035926020909101359150565b60008060008060408587031215612adb57600080fd5b84356001600160401b0380821115612af257600080fd5b612afe88838901612782565b90965094506020870135915080821115612b1757600080fd5b50612b2487828801612782565b95989497509550505050565b600060408284031215612b4257600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612b6a57600080fd5b612b748c35612678565b8b359a506001600160401b038060208e01351115612b9157600080fd5b612ba18e60208f01358f01612782565b909b50995060408d0135811015612bb757600080fd5b50612bc88d60408e01358e016126fd565b909850965060608c01359550612be18d60808e01612b30565b945060c08c0135612bf181612678565b9350612bff60e08d0161268d565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612c3357600080fd5b610ba48383612b30565b60008060408385031215612c5057600080fd5b82356001600160401b03811115612c6657600080fd5b612c7285828601612a19565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610ba4565b6001600160401b038116811461152657600080fd5b600060808284031215612cce57600080fd5b612cd6612956565b82518060070b8114612ce757600080fd5b81526020830151612cf781612ca7565b60208201526040830151600381900b8114612d1157600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d5157600080fd5b8135610ba481612678565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761058d5761058d612d5c565b634e487b7160e01b600052601260045260246000fd5b600082612dae57612dae612d89565b500490565b8082018082111561058d5761058d612d5c565b8051801515811461258e57600080fd5b600060208284031215612de857600080fd5b610ba482612dc6565b600060208284031215612e0357600080fd5b8151610ba481612678565b60005b83811015612e29578181015183820152602001612e11565b50506000910152565b600060808284031215612e4457600080fd5b612e4c612956565b90508151612e5981612678565b81526020820151612e6981612678565b60208201526040820151612e7c81612ca7565b6040820152612e8d60608301612dc6565b606082015292915050565b60006020808385031215612eab57600080fd5b82516001600160401b0380821115612ec257600080fd5b9084019060a08287031215612ed657600080fd5b612ede61297e565b825182811115612eed57600080fd5b830160608189031215612eff57600080fd5b612f076129a0565b815160ff81168114612f1857600080fd5b81528186015186820152604082015184811115612f3457600080fd5b82019350601f84018913612f4757600080fd5b83519150612f57612a38836129f2565b8281528987848701011115612f6b57600080fd5b612f7a83888301898801612e0e565b6040820152825250612f8e87848601612e32565b848201528094505050505092915050565b60008082840360e0811215612fb357600080fd5b60c0811215612fc157600080fd5b612fc96129a0565b84518152602085015160208201526080603f1983011215612fe957600080fd5b612ff1612956565b9150604085015161300181612678565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b60006020828403121561304e57600080fd5b8151610ba481612ca7565b8181038181111561058d5761058d612d5c565b600381810b9083900b01637fffffff8113637fffffff198212171561058d5761058d612d5c565b6000604082840312156130a557600080fd5b6130ad61297e565b82358152602083013560208201528091505092915050565b60008160030b637fffffff1981036130df576130df612d5c565b60000392915050565b80820260008212600160ff1b8414161561310457613104612d5c565b818105831482151761058d5761058d612d5c565b60008261312757613127612d89565b600160ff1b82146000198414161561314157613141612d5c565b500590565b6001600160c01b038116811461152657600080fd5b813561316681613146565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561319381612ca7565b60c01b1617905550565b6000602082840312156131af57600080fd5b8135610ba481613146565b6000602082840312156131cc57600080fd5b8135610ba481612ca7565b600181815b808511156132125781600019048211156131f8576131f8612d5c565b8085161561320557918102915b93841c93908002906131dc565b509250929050565b6000826132295750600161058d565b816132365750600061058d565b816001811461324c576002811461325657613272565b600191505061058d565b60ff84111561326757613267612d5c565b50506001821b61058d565b5060208310610133831016604e8410600b8410161715613295575081810a61058d565b61329f83836131d7565b80600019048211156132b3576132b3612d5c565b029392505050565b6000610ba463ffffffff84168361321a565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613305816017850160208801612e0e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613336816028840160208801612e0e565b01602801949350505050565b6020815260008251806020840152613361816040850160208701612e0e565b601f01601f19169190910160400192915050565b60008161338457613384612d5c565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada2646970667358221220aa4555fbe062e1770c4b5761698a653314b019545fd8833721e1e457c7ea7bac64736f6c63430008150033", "nonce": "0x2e917" ======= +======= +>>>>>>> Stashed changes "gas": "0x5bf574", "value": "0x0", "data": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", "nonce": "0x2f02f" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes }, "additionalContracts": [], "isFixedGasLimit": false }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "hash": "0x2adc7e403c3ba4bfecd0a1dc476bdb337dcd4dbc2211b5cf25353a73f5d733cd", +======= + "hash": "0x4c811d1d3597419b034940df28d0b8ded551f34e46bbf759a4b9aea206723d1e", +>>>>>>> Stashed changes ======= "hash": "0x4c811d1d3597419b034940df28d0b8ded551f34e46bbf759a4b9aea206723d1e", >>>>>>> Stashed changes @@ -44,8 +60,12 @@ "function": "upgrade(address,address)", "arguments": [ "0x51cAF51678f469e9DD4c878a7b0ceBEbbd4A4AB5", +<<<<<<< Updated upstream <<<<<<< Updated upstream "0xc77EAbB5172037A1a82f4E6bb6813894121d8062" +======= + "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a" +>>>>>>> Stashed changes ======= "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a" >>>>>>> Stashed changes @@ -56,6 +76,7 @@ "to": "0x505d91e8fd2091794b45b27f86c045529fa92cd7", "gas": "0x12b56", "value": "0x0", +<<<<<<< Updated upstream <<<<<<< Updated upstream "data": "0x99a88ec400000000000000000000000051caf51678f469e9dd4c878a7b0cebebbd4a4ab5000000000000000000000000c77eabb5172037a1a82f4e6bb6813894121d8062", "nonce": "0x2e918" @@ -191,6 +212,10 @@ "value": "0x0", "data": "0xcff8372f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000011dc83a4303c489421ea5e90bdbb15421f0d3fbc64f47c58a627a82d6cfac2b6ba18764c22eba517ea6229f5d4aa8f580ae459fdf677e2cc35f5d4cfb264a275aa241349b27ab57d6beb203abd1d857f262e1fca381dfe16b98409f0511fce290d0565e6d377a680675ce258c7ff7426ad6f342a96bb963288584b2860332dbf6887acb5dc1b98b38c9e55e7f54ac9b5a50a8749fcef04e08c1a5e7ffff69bf550c7727a3655d075d9df90d4ba39f877416288b888940749a23b935319453421055b6caa0dba9226c4001492be8f394cf6c745194c6eb8919f5ab05d206d81112a90c1901ac29642f2ee3e8602932827ea0df7bee2cca9a602678c5e6679c7106b74ef2a02584ead6bd7bd3952ee93a94bb8dd516b40a92673e2f662432cfefc09c1752c3b46bc462b7745806118d3685a942204d14aa1d9244f65f67b2459fe036cde42598744e7e5302f114bd0c7a622d11752740d183064423e2c29e969523bfcd4e4930772c9c111d002f16f5614260c7e821e47a6b48c0a314f138d451804dae40eb5997dc7285dca1b2622cfdc2e3a32aa47ddd868fb1239958dedb13aa5b0244a395a18eeab36bd1faf0fee91d7c74985753494fcc35735e717bffd84f1698a05f32f8243b543fbac6a3b5357d6213a553322bb61ef8ec6aa3cad279ba37f47e1d0b4490bade33807d567dccad48d980c4a6dfeb32046335bb3e6251699cec7cd2eb783dc77c33a2869aa06804b8a26e4f40f8d528912b826ba56fd0266000000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", "nonce": "0x2e91e" +======= + "data": "0x99a88ec400000000000000000000000051caf51678f469e9dd4c878a7b0cebebbd4a4ab50000000000000000000000008a99fc285a90d031d9e4e328fcfcc35cb0bfb34a", + "nonce": "0x2f030" +>>>>>>> Stashed changes ======= "data": "0x99a88ec400000000000000000000000051caf51678f469e9dd4c878a7b0cebebbd4a4ab50000000000000000000000008a99fc285a90d031d9e4e328fcfcc35cb0bfb34a", "nonce": "0x2f030" @@ -202,6 +227,7 @@ ], "receipts": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "transactionHash": "0x202d869a6cae9b23737797ed7cab835027f1cafbf4fd96188aabb9265a7fbc3a", "transactionIndex": "0x1", @@ -216,6 +242,8 @@ { "address": "0xc77EAbB5172037A1a82f4E6bb6813894121d8062", ======= +======= +>>>>>>> Stashed changes "transactionHash": "0xe1d34b660c74fe27dab2d792763a87a1768319d28ed62d93ba1f0045c1514cd5", "transactionIndex": "0x0", "blockHash": "0x14e9911424f73ffe87db0976a445b51052a0810c4d75a235f5898df45197fc61", @@ -228,11 +256,15 @@ "logs": [ { "address": "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "topics": [ "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" ], "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", +<<<<<<< Updated upstream <<<<<<< Updated upstream "blockHash": "0x697b8884208ae91a990c0dd57d778cdb0a766dc10961ef0692d965aa8571f1f2", "blockNumber": "0x17c6d35", @@ -240,18 +272,27 @@ "transactionIndex": "0x1", "logIndex": "0x3", ======= +======= +>>>>>>> Stashed changes "blockHash": "0x14e9911424f73ffe87db0976a445b51052a0810c4d75a235f5898df45197fc61", "blockNumber": "0x1854162", "transactionHash": "0xe1d34b660c74fe27dab2d792763a87a1768319d28ed62d93ba1f0045c1514cd5", "transactionIndex": "0x0", "logIndex": "0x0", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "removed": false } ], "status": "0x1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000001000000000000000000000000000000001000000000000000000000040000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000", +======= + "logsBloom": "0x00000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +>>>>>>> Stashed changes ======= "logsBloom": "0x00000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", >>>>>>> Stashed changes @@ -259,6 +300,7 @@ "effectiveGasPrice": "0x4a817c800" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "transactionHash": "0x2adc7e403c3ba4bfecd0a1dc476bdb337dcd4dbc2211b5cf25353a73f5d733cd", "transactionIndex": "0x2", @@ -268,6 +310,8 @@ "to": "0x505d91E8fd2091794b45b27f86C045529fa92CD7", "cumulativeGasUsed": "0x3591c7", ======= +======= +>>>>>>> Stashed changes "transactionHash": "0x4c811d1d3597419b034940df28d0b8ded551f34e46bbf759a4b9aea206723d1e", "transactionIndex": "0x0", "blockHash": "0xac953a15c1516b4cda23ca426dd7ae19b9b345617f4f0382596584feba322369", @@ -275,6 +319,9 @@ "from": "0x968D0Cd7343f711216817E617d3f92a23dC91c07", "to": "0x505d91E8fd2091794b45b27f86C045529fa92CD7", "cumulativeGasUsed": "0x850a", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "gasUsed": "0x850a", "contractAddress": null, @@ -283,6 +330,7 @@ "address": "0x51cAF51678f469e9DD4c878a7b0ceBEbbd4A4AB5", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", +<<<<<<< Updated upstream <<<<<<< Updated upstream "0x000000000000000000000000c77eabb5172037a1a82f4e6bb6813894121d8062" ], @@ -8672,6 +8720,8 @@ "status": "0x1", "logsBloom": "0x0000000000100080000000000000023000000000400000000000001008004000000400000000000000000408200000200000000000000000008000000000000000000000000000000020080000000000000000000008121080000000000000000090000000000000100000010010000000000000000000000000200000000008000000000030000000004000400020000000080040000000000000000004000000a000000000000000080001000000080008020800000004000020000000080000040000000000002040000400000000000000000040000000010000000200004000000000000000000000200000000000000020000010040000000000002000", ======= +======= +>>>>>>> Stashed changes "0x0000000000000000000000008a99fc285a90d031d9e4e328fcfcc35cb0bfb34a" ], "data": "0x", @@ -8685,6 +8735,9 @@ ], "status": "0x1", "logsBloom": "0x00000000000000000000000000000020400000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000001000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000020000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "type": "0x0", "effectiveGasPrice": "0x4a817c800" @@ -8693,15 +8746,21 @@ "libraries": [], "pending": [], "returns": {}, +<<<<<<< Updated upstream <<<<<<< Updated upstream "timestamp": 1708497849, "chain": 2021, "multi": false, "commit": "2b934a1" ======= +======= +>>>>>>> Stashed changes "timestamp": 1710234981, "chain": 2021, "multi": false, "commit": "399a1ef" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } \ No newline at end of file diff --git a/deployments/ronin-testnet/RNSDomainPriceLogic.json b/deployments/ronin-testnet/RNSDomainPriceLogic.json index d973275c..2fac229a 100644 --- a/deployments/ronin-testnet/RNSDomainPriceLogic.json +++ b/deployments/ronin-testnet/RNSDomainPriceLogic.json @@ -99,9 +99,14 @@ }, { "name": "tiers", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "uint256[]", "internalType": "uint256[]" +======= + "type": "uint8[]", + "internalType": "enum INSDomainPrice.Tier[]" +>>>>>>> Stashed changes ======= "type": "uint8[]", "internalType": "enum INSDomainPrice.Tier[]" @@ -267,9 +272,14 @@ "outputs": [ { "name": "tier", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "uint256", "internalType": "uint256" +======= + "type": "uint8", + "internalType": "enum INSDomainPrice.Tier" +>>>>>>> Stashed changes ======= "type": "uint8", "internalType": "enum INSDomainPrice.Tier" @@ -492,9 +502,14 @@ "outputs": [ { "name": "tier", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "uint256", "internalType": "uint256" +======= + "type": "uint8", + "internalType": "enum INSDomainPrice.Tier" +>>>>>>> Stashed changes ======= "type": "uint8", "internalType": "enum INSDomainPrice.Tier" @@ -1050,10 +1065,16 @@ }, { "name": "tier", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "uint256", "indexed": true, "internalType": "uint256" +======= + "type": "uint8", + "indexed": true, + "internalType": "enum INSDomainPrice.Tier" +>>>>>>> Stashed changes ======= "type": "uint8", "indexed": true, @@ -1127,6 +1148,7 @@ "inputs": [] } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "address": "0xc77EAbB5172037A1a82f4E6bb6813894121d8062", "args": "0x", @@ -1190,6 +1212,70 @@ "id": 86304, "nodeType": "PragmaDirective", "src": "32:24:147", +======= + "address": "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a", + "args": "0x", + "ast": { + "absolutePath": "src/RNSDomainPrice.sol", + "id": 119627, + "exportedSymbols": { + "AccessControlEnumerable": [ + 100251 + ], + "INSAuction": [ + 123292 + ], + "INSDomainPrice": [ + 123609 + ], + "INSUnified": [ + 123985 + ], + "IPyth": [ + 106120 + ], + "Initializable": [ + 101524 + ], + "LibPeriodScaler": [ + 125698 + ], + "LibRNSDomain": [ + 125052 + ], + "LibSafeRange": [ + 125596 + ], + "LibString": [ + 125334 + ], + "Math": [ + 104833 + ], + "PeriodScaler": [ + 125607 + ], + "PythConverter": [ + 126387 + ], + "PythStructs": [ + 106163 + ], + "RNSDomainPrice": [ + 119626 + ], + "TimestampWrapper": [ + 125530 + ] + }, + "nodeType": "SourceUnit", + "src": "32:16050:163", + "nodes": [ + { + "id": 118219, + "nodeType": "PragmaDirective", + "src": "32:24:163", +>>>>>>> Stashed changes ======= "address": "0x8A99Fc285a90D031D9e4E328fcFCc35cb0bFB34a", "args": "0x", @@ -1263,10 +1349,16 @@ ] }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86306, "nodeType": "ImportDirective", "src": "58:86:147", +======= + "id": 118221, + "nodeType": "ImportDirective", + "src": "58:86:163", +>>>>>>> Stashed changes ======= "id": 118221, "nodeType": "ImportDirective", @@ -1276,6 +1368,7 @@ "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 70607, @@ -1288,6 +1381,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 70606, "src": "67:13:147", +======= + "scope": 119627, + "sourceUnit": 101525, + "symbolAliases": [ + { + "foreign": { + "id": 118220, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101524, + "src": "67:13:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 101525, @@ -1309,10 +1415,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86308, "nodeType": "ImportDirective", "src": "145:101:147", +======= + "id": 118223, + "nodeType": "ImportDirective", + "src": "145:101:163", +>>>>>>> Stashed changes ======= "id": 118223, "nodeType": "ImportDirective", @@ -1322,6 +1434,7 @@ "absolutePath": "lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol", "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 69334, @@ -1334,6 +1447,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 69333, "src": "154:23:147", +======= + "scope": 119627, + "sourceUnit": 100252, + "symbolAliases": [ + { + "foreign": { + "id": 118222, + "name": "AccessControlEnumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100251, + "src": "154:23:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 100252, @@ -1355,10 +1481,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86310, "nodeType": "ImportDirective", "src": "247:67:147", +======= + "id": 118225, + "nodeType": "ImportDirective", + "src": "247:67:163", +>>>>>>> Stashed changes ======= "id": 118225, "nodeType": "ImportDirective", @@ -1368,6 +1500,7 @@ "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/Math.sol", "file": "@openzeppelin/contracts/utils/math/Math.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 73916, @@ -1380,6 +1513,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 73915, "src": "256:4:147", +======= + "scope": 119627, + "sourceUnit": 104834, + "symbolAliases": [ + { + "foreign": { + "id": 118224, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104833, + "src": "256:4:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 104834, @@ -1401,10 +1547,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86313, "nodeType": "ImportDirective", "src": "315:60:147", +======= + "id": 118228, + "nodeType": "ImportDirective", + "src": "315:60:163", +>>>>>>> Stashed changes ======= "id": 118228, "nodeType": "ImportDirective", @@ -1414,6 +1566,7 @@ "absolutePath": "lib/pyth-sdk-solidity/IPyth.sol", "file": "@pythnetwork/IPyth.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 75203, @@ -1426,6 +1579,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 75202, "src": "324:5:147", +======= + "scope": 119627, + "sourceUnit": 106121, + "symbolAliases": [ + { + "foreign": { + "id": 118226, + "name": "IPyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106120, + "src": "324:5:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 106121, @@ -1445,6 +1611,7 @@ }, { "foreign": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86312, "name": "PythStructs", @@ -1452,6 +1619,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 75245, "src": "331:11:147", +======= + "id": 118227, + "name": "PythStructs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106163, + "src": "331:11:163", +>>>>>>> Stashed changes ======= "id": 118227, "name": "PythStructs", @@ -1468,10 +1643,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86315, "nodeType": "ImportDirective", "src": "376:57:147", +======= + "id": 118230, + "nodeType": "ImportDirective", + "src": "376:57:163", +>>>>>>> Stashed changes ======= "id": 118230, "nodeType": "ImportDirective", @@ -1481,6 +1662,7 @@ "absolutePath": "src/interfaces/INSUnified.sol", "file": "./interfaces/INSUnified.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 92041, @@ -1493,6 +1675,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 92040, "src": "385:10:147", +======= + "scope": 119627, + "sourceUnit": 123986, + "symbolAliases": [ + { + "foreign": { + "id": 118229, + "name": "INSUnified", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123985, + "src": "385:10:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 123986, @@ -1514,10 +1709,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86317, "nodeType": "ImportDirective", "src": "434:57:147", +======= + "id": 118232, + "nodeType": "ImportDirective", + "src": "434:57:163", +>>>>>>> Stashed changes ======= "id": 118232, "nodeType": "ImportDirective", @@ -1527,6 +1728,7 @@ "absolutePath": "src/interfaces/INSAuction.sol", "file": "./interfaces/INSAuction.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 91352, @@ -1539,6 +1741,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 91351, "src": "443:10:147", +======= + "scope": 119627, + "sourceUnit": 123293, + "symbolAliases": [ + { + "foreign": { + "id": 118231, + "name": "INSAuction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123292, + "src": "443:10:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 123293, @@ -1560,10 +1775,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86319, "nodeType": "ImportDirective", "src": "492:65:147", +======= + "id": 118234, + "nodeType": "ImportDirective", + "src": "492:65:163", +>>>>>>> Stashed changes ======= "id": 118234, "nodeType": "ImportDirective", @@ -1573,6 +1794,7 @@ "absolutePath": "src/interfaces/INSDomainPrice.sol", "file": "./interfaces/INSDomainPrice.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 91665, @@ -1585,6 +1807,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 91664, "src": "501:14:147", +======= + "scope": 119627, + "sourceUnit": 123610, + "symbolAliases": [ + { + "foreign": { + "id": 118233, + "name": "INSDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123609, + "src": "501:14:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 123610, @@ -1606,10 +1841,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86323, "nodeType": "ImportDirective", "src": "558:94:147", +======= + "id": 118238, + "nodeType": "ImportDirective", + "src": "558:94:163", +>>>>>>> Stashed changes ======= "id": 118238, "nodeType": "ImportDirective", @@ -1619,6 +1860,7 @@ "absolutePath": "src/libraries/math/PeriodScalingUtils.sol", "file": "./libraries/math/PeriodScalingUtils.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 93754, @@ -1631,6 +1873,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 93662, "src": "567:12:147", +======= + "scope": 119627, + "sourceUnit": 125699, + "symbolAliases": [ + { + "foreign": { + "id": 118235, + "name": "PeriodScaler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125607, + "src": "567:12:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 125699, @@ -1650,6 +1905,7 @@ }, { "foreign": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86321, "name": "LibPeriodScaler", @@ -1657,6 +1913,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 93753, "src": "581:15:147", +======= + "id": 118236, + "name": "LibPeriodScaler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125698, + "src": "581:15:163", +>>>>>>> Stashed changes ======= "id": 118236, "name": "LibPeriodScaler", @@ -1671,6 +1935,7 @@ }, { "foreign": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86322, "name": "Math", @@ -1678,6 +1943,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 73915, "src": "598:4:147", +======= + "id": 118237, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104833, + "src": "598:4:163", +>>>>>>> Stashed changes ======= "id": 118237, "name": "Math", @@ -1694,10 +1967,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86325, "nodeType": "ImportDirective", "src": "653:73:147", +======= + "id": 118240, + "nodeType": "ImportDirective", + "src": "653:73:163", +>>>>>>> Stashed changes ======= "id": 118240, "nodeType": "ImportDirective", @@ -1707,6 +1986,7 @@ "absolutePath": "src/libraries/TimestampWrapperUtils.sol", "file": "./libraries/TimestampWrapperUtils.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 93586, @@ -1719,6 +1999,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 93585, "src": "662:16:147", +======= + "scope": 119627, + "sourceUnit": 125531, + "symbolAliases": [ + { + "foreign": { + "id": 118239, + "name": "TimestampWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125530, + "src": "662:16:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 125531, @@ -1740,10 +2033,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86327, "nodeType": "ImportDirective", "src": "727:65:147", +======= + "id": 118242, + "nodeType": "ImportDirective", + "src": "727:65:163", +>>>>>>> Stashed changes ======= "id": 118242, "nodeType": "ImportDirective", @@ -1753,6 +2052,7 @@ "absolutePath": "src/libraries/math/LibSafeRange.sol", "file": "./libraries/math/LibSafeRange.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 93652, @@ -1765,6 +2065,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 93651, "src": "736:12:147", +======= + "scope": 119627, + "sourceUnit": 125597, + "symbolAliases": [ + { + "foreign": { + "id": 118241, + "name": "LibSafeRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125596, + "src": "736:12:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 125597, @@ -1786,10 +2099,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86329, "nodeType": "ImportDirective", "src": "793:54:147", +======= + "id": 118244, + "nodeType": "ImportDirective", + "src": "793:54:163", +>>>>>>> Stashed changes ======= "id": 118244, "nodeType": "ImportDirective", @@ -1799,6 +2118,7 @@ "absolutePath": "src/libraries/LibString.sol", "file": "./libraries/LibString.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 93390, @@ -1811,6 +2131,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 93389, "src": "802:9:147", +======= + "scope": 119627, + "sourceUnit": 125335, + "symbolAliases": [ + { + "foreign": { + "id": 118243, + "name": "LibString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125334, + "src": "802:9:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 125335, @@ -1832,10 +2165,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86331, "nodeType": "ImportDirective", "src": "848:60:147", +======= + "id": 118246, + "nodeType": "ImportDirective", + "src": "848:60:163", +>>>>>>> Stashed changes ======= "id": 118246, "nodeType": "ImportDirective", @@ -1845,6 +2184,7 @@ "absolutePath": "src/libraries/LibRNSDomain.sol", "file": "./libraries/LibRNSDomain.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 93108, @@ -1857,6 +2197,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 93107, "src": "857:12:147", +======= + "scope": 119627, + "sourceUnit": 125053, + "symbolAliases": [ + { + "foreign": { + "id": 118245, + "name": "LibRNSDomain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125052, + "src": "857:12:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 125053, @@ -1878,10 +2231,16 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86333, "nodeType": "ImportDirective", "src": "909:67:147", +======= + "id": 118248, + "nodeType": "ImportDirective", + "src": "909:67:163", +>>>>>>> Stashed changes ======= "id": 118248, "nodeType": "ImportDirective", @@ -1891,6 +2250,7 @@ "absolutePath": "src/libraries/pyth/PythConverter.sol", "file": "./libraries/pyth/PythConverter.sol", "nameLocation": "-1:-1:-1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87686, "sourceUnit": 94443, @@ -1903,6 +2263,19 @@ "overloadedDeclarations": [], "referencedDeclaration": 94442, "src": "918:13:147", +======= + "scope": 119627, + "sourceUnit": 126388, + "symbolAliases": [ + { + "foreign": { + "id": 118247, + "name": "PythConverter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126387, + "src": "918:13:163", +>>>>>>> Stashed changes ======= "scope": 119627, "sourceUnit": 126388, @@ -1924,6 +2297,7 @@ "unitAlias": "" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87685, "nodeType": "ContractDefinition", @@ -1967,6 +2341,50 @@ "name": "string", "nodeType": "ElementaryTypeName", "src": "1112:6:147", +======= + "id": 119626, + "nodeType": "ContractDefinition", + "src": "978:15103:163", + "nodes": [ + { + "id": 118256, + "nodeType": "UsingForDirective", + "src": "1064:22:163", + "nodes": [], + "global": false, + "libraryName": { + "id": 118255, + "name": "LibString", + "nameLocations": [ + "1070:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125334, + "src": "1070:9:163" + } + }, + { + "id": 118259, + "nodeType": "UsingForDirective", + "src": "1089:30:163", + "nodes": [], + "global": false, + "libraryName": { + "id": 118257, + "name": "LibRNSDomain", + "nameLocations": [ + "1095:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125052, + "src": "1095:12:163" + }, + "typeName": { + "id": 118258, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1112:6:163", +>>>>>>> Stashed changes ======= "id": 119626, "nodeType": "ContractDefinition", @@ -2018,6 +2436,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86348, "nodeType": "UsingForDirective", @@ -2051,6 +2470,40 @@ "src": "1148:12:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", +======= + "id": 118263, + "nodeType": "UsingForDirective", + "src": "1122:39:163", + "nodes": [], + "global": false, + "libraryName": { + "id": 118260, + "name": "LibPeriodScaler", + "nameLocations": [ + "1128:15:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125698, + "src": "1128:15:163" + }, + "typeName": { + "id": 118262, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118261, + "name": "PeriodScaler", + "nameLocations": [ + "1148:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125607, + "src": "1148:12:163" + }, + "referencedDeclaration": 125607, + "src": "1148:12:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118263, "nodeType": "UsingForDirective", @@ -2090,6 +2543,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86352, "nodeType": "UsingForDirective", @@ -2124,6 +2578,41 @@ "src": "1188:17:147", "typeDescriptions": { "typeIdentifier": "t_struct$_Price_$75235_storage_ptr", +======= + "id": 118267, + "nodeType": "UsingForDirective", + "src": "1164:42:163", + "nodes": [], + "global": false, + "libraryName": { + "id": 118264, + "name": "PythConverter", + "nameLocations": [ + "1170:13:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 126387, + "src": "1170:13:163" + }, + "typeName": { + "id": 118266, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118265, + "name": "PythStructs.Price", + "nameLocations": [ + "1188:11:163", + "1200:5:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 106153, + "src": "1188:17:163" + }, + "referencedDeclaration": 106153, + "src": "1188:17:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Price_$106153_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118267, "nodeType": "UsingForDirective", @@ -2164,6 +2653,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86356, "nodeType": "VariableDeclaration", @@ -2183,6 +2673,10 @@ ======= "id": 118271, "nodeType": "VariableDeclaration", +======= + "id": 118271, + "nodeType": "VariableDeclaration", +>>>>>>> Stashed changes "src": "1274:64:163", "nodes": [], "constant": true, @@ -2196,6 +2690,9 @@ "name": "TIER_1_FROM_EXCLUDED_THRESHOLD", "nameLocation": "1299:30:163", "scope": 119626, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateVariable": true, "storageLocation": "default", @@ -2204,16 +2701,22 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86354, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1266:7:147", ======= +======= +>>>>>>> Stashed changes "id": 118269, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1274:7:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2222,8 +2725,12 @@ }, "value": { "hexValue": "323030653138", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86355, +======= + "id": 118270, +>>>>>>> Stashed changes ======= "id": 118270, >>>>>>> Stashed changes @@ -2233,8 +2740,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1310:6:147", +======= + "src": "1332:6:163", +>>>>>>> Stashed changes ======= "src": "1332:6:163", >>>>>>> Stashed changes @@ -2247,6 +2758,7 @@ "visibility": "private" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86360, "nodeType": "VariableDeclaration", @@ -2264,6 +2776,8 @@ "nameLocation": "1401:16:147", "scope": 87685, ======= +======= +>>>>>>> Stashed changes "id": 118275, "nodeType": "VariableDeclaration", "src": "1422:63:163", @@ -2279,6 +2793,9 @@ "name": "TIER_2_FROM_EXCLUDED_THRESHOLD", "nameLocation": "1447:30:163", "scope": 119626, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateVariable": true, "storageLocation": "default", @@ -2287,16 +2804,22 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86358, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1376:7:147", ======= +======= +>>>>>>> Stashed changes "id": 118273, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1422:7:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2305,8 +2828,12 @@ }, "value": { "hexValue": "3530653138", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86359, +======= + "id": 118274, +>>>>>>> Stashed changes ======= "id": 118274, >>>>>>> Stashed changes @@ -2316,8 +2843,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1420:5:147", +======= + "src": "1480:5:163", +>>>>>>> Stashed changes ======= "src": "1480:5:163", >>>>>>> Stashed changes @@ -2330,6 +2861,7 @@ "visibility": "private" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86364, "nodeType": "VariableDeclaration", @@ -2343,6 +2875,20 @@ "id": 86361, "nodeType": "StructuredDocumentation", "src": "1429:30:147", +======= + "id": 118279, + "nodeType": "VariableDeclaration", + "src": "1522:39:163", + "nodes": [], + "baseFunctions": [ + 123608 + ], + "constant": true, + "documentation": { + "id": 118276, + "nodeType": "StructuredDocumentation", + "src": "1489:30:163", +>>>>>>> Stashed changes ======= "id": 118279, "nodeType": "VariableDeclaration", @@ -2362,9 +2908,14 @@ "functionSelector": "2f6ee695", "mutability": "constant", "name": "USD_DECIMALS", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "1484:12:147", "scope": 87685, +======= + "nameLocation": "1544:12:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "1544:12:163", "scope": 119626, @@ -2376,11 +2927,18 @@ "typeString": "uint8" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86362, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1462:5:147", +======= + "id": 118277, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1522:5:163", +>>>>>>> Stashed changes ======= "id": 118277, "name": "uint8", @@ -2394,8 +2952,12 @@ }, "value": { "hexValue": "3138", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86363, +======= + "id": 118278, +>>>>>>> Stashed changes ======= "id": 118278, >>>>>>> Stashed changes @@ -2405,8 +2967,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1499:2:147", +======= + "src": "1559:2:163", +>>>>>>> Stashed changes ======= "src": "1559:2:163", >>>>>>> Stashed changes @@ -2419,6 +2985,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86368, "nodeType": "VariableDeclaration", @@ -2432,6 +2999,20 @@ "id": 86365, "nodeType": "StructuredDocumentation", "src": "1505:30:147", +======= + "id": 118283, + "nodeType": "VariableDeclaration", + "src": "1598:46:163", + "nodes": [], + "baseFunctions": [ + 123602 + ], + "constant": true, + "documentation": { + "id": 118280, + "nodeType": "StructuredDocumentation", + "src": "1565:30:163", +>>>>>>> Stashed changes ======= "id": 118283, "nodeType": "VariableDeclaration", @@ -2451,9 +3032,14 @@ "functionSelector": "4c255c97", "mutability": "constant", "name": "MAX_PERCENTAGE", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "1561:14:147", "scope": 87685, +======= + "nameLocation": "1621:14:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "1621:14:163", "scope": 119626, @@ -2465,11 +3051,18 @@ "typeString": "uint64" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86366, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1538:6:147", +======= + "id": 118281, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "1598:6:163", +>>>>>>> Stashed changes ======= "id": 118281, "name": "uint64", @@ -2483,8 +3076,12 @@ }, "value": { "hexValue": "3130305f3030", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86367, +======= + "id": 118282, +>>>>>>> Stashed changes ======= "id": 118282, >>>>>>> Stashed changes @@ -2494,8 +3091,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1578:6:147", +======= + "src": "1638:6:163", +>>>>>>> Stashed changes ======= "src": "1638:6:163", >>>>>>> Stashed changes @@ -2508,6 +3109,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86374, "nodeType": "VariableDeclaration", @@ -2521,6 +3123,20 @@ "id": 86369, "nodeType": "StructuredDocumentation", "src": "1588:30:147", +======= + "id": 118289, + "nodeType": "VariableDeclaration", + "src": "1681:66:163", + "nodes": [], + "baseFunctions": [ + 123590 + ], + "constant": true, + "documentation": { + "id": 118284, + "nodeType": "StructuredDocumentation", + "src": "1648:30:163", +>>>>>>> Stashed changes ======= "id": 118289, "nodeType": "VariableDeclaration", @@ -2540,9 +3156,14 @@ "functionSelector": "f5b541a6", "mutability": "constant", "name": "OPERATOR_ROLE", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "1645:13:147", "scope": 87685, +======= + "nameLocation": "1705:13:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "1705:13:163", "scope": 119626, @@ -2554,11 +3175,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86370, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1621:7:147", +======= + "id": 118285, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1681:7:163", +>>>>>>> Stashed changes ======= "id": 118285, "name": "bytes32", @@ -2574,8 +3202,12 @@ "arguments": [ { "hexValue": "4f50455241544f525f524f4c45", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86372, +======= + "id": 118287, +>>>>>>> Stashed changes ======= "id": 118287, >>>>>>> Stashed changes @@ -2585,8 +3217,12 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1671:15:147", +======= + "src": "1731:15:163", +>>>>>>> Stashed changes ======= "src": "1731:15:163", >>>>>>> Stashed changes @@ -2604,8 +3240,12 @@ "typeString": "literal_string \"OPERATOR_ROLE\"" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86371, +======= + "id": 118286, +>>>>>>> Stashed changes ======= "id": 118286, >>>>>>> Stashed changes @@ -2613,8 +3253,12 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1661:9:147", +======= + "src": "1721:9:163", +>>>>>>> Stashed changes ======= "src": "1721:9:163", >>>>>>> Stashed changes @@ -2623,8 +3267,12 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86373, +======= + "id": 118288, +>>>>>>> Stashed changes ======= "id": 118288, >>>>>>> Stashed changes @@ -2636,8 +3284,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1661:26:147", +======= + "src": "1721:26:163", +>>>>>>> Stashed changes ======= "src": "1721:26:163", >>>>>>> Stashed changes @@ -2650,6 +3302,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86380, "nodeType": "VariableDeclaration", @@ -2663,6 +3316,20 @@ "id": 86375, "nodeType": "StructuredDocumentation", "src": "1691:30:147", +======= + "id": 118295, + "nodeType": "VariableDeclaration", + "src": "1784:68:163", + "nodes": [], + "baseFunctions": [ + 123596 + ], + "constant": true, + "documentation": { + "id": 118290, + "nodeType": "StructuredDocumentation", + "src": "1751:30:163", +>>>>>>> Stashed changes ======= "id": 118295, "nodeType": "VariableDeclaration", @@ -2682,9 +3349,14 @@ "functionSelector": "700213c8", "mutability": "constant", "name": "OVERRIDER_ROLE", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "1748:14:147", "scope": 87685, +======= + "nameLocation": "1808:14:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "1808:14:163", "scope": 119626, @@ -2696,11 +3368,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86376, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1724:7:147", +======= + "id": 118291, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1784:7:163", +>>>>>>> Stashed changes ======= "id": 118291, "name": "bytes32", @@ -2716,8 +3395,12 @@ "arguments": [ { "hexValue": "4f56455252494445525f524f4c45", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86378, +======= + "id": 118293, +>>>>>>> Stashed changes ======= "id": 118293, >>>>>>> Stashed changes @@ -2727,8 +3410,12 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1775:16:147", +======= + "src": "1835:16:163", +>>>>>>> Stashed changes ======= "src": "1835:16:163", >>>>>>> Stashed changes @@ -2746,8 +3433,12 @@ "typeString": "literal_string \"OVERRIDER_ROLE\"" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86377, +======= + "id": 118292, +>>>>>>> Stashed changes ======= "id": 118292, >>>>>>> Stashed changes @@ -2755,8 +3446,12 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1765:9:147", +======= + "src": "1825:9:163", +>>>>>>> Stashed changes ======= "src": "1825:9:163", >>>>>>> Stashed changes @@ -2765,8 +3460,12 @@ "typeString": "function (bytes memory) pure returns (bytes32)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86379, +======= + "id": 118294, +>>>>>>> Stashed changes ======= "id": 118294, >>>>>>> Stashed changes @@ -2778,8 +3477,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1765:27:147", +======= + "src": "1825:27:163", +>>>>>>> Stashed changes ======= "src": "1825:27:163", >>>>>>> Stashed changes @@ -2792,6 +3495,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86385, "nodeType": "VariableDeclaration", @@ -2802,6 +3506,17 @@ "id": 86381, "nodeType": "StructuredDocumentation", "src": "1797:32:147", +======= + "id": 118300, + "nodeType": "VariableDeclaration", + "src": "1892:27:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118296, + "nodeType": "StructuredDocumentation", + "src": "1857:32:163", +>>>>>>> Stashed changes ======= "id": 118300, "nodeType": "VariableDeclaration", @@ -2817,9 +3532,14 @@ }, "mutability": "mutable", "name": "____gap", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "1852:7:147", "scope": 87685, +======= + "nameLocation": "1912:7:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "1912:7:163", "scope": 119626, @@ -2832,11 +3552,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86382, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1832:7:147", +======= + "id": 118297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1892:7:163", +>>>>>>> Stashed changes ======= "id": 118297, "name": "uint256", @@ -2848,11 +3575,18 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86384, "length": { "hexValue": "3530", "id": 86383, +======= + "id": 118299, + "length": { + "hexValue": "3530", + "id": 118298, +>>>>>>> Stashed changes ======= "id": 118299, "length": { @@ -2865,8 +3599,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1840:2:147", +======= + "src": "1900:2:163", +>>>>>>> Stashed changes ======= "src": "1900:2:163", >>>>>>> Stashed changes @@ -2877,8 +3615,12 @@ "value": "50" }, "nodeType": "ArrayTypeName", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "1832:11:147", +======= + "src": "1892:11:163", +>>>>>>> Stashed changes ======= "src": "1892:11:163", >>>>>>> Stashed changes @@ -2890,6 +3632,7 @@ "visibility": "private" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86389, "nodeType": "VariableDeclaration", @@ -2900,6 +3643,17 @@ "id": 86386, "nodeType": "StructuredDocumentation", "src": "1864:29:147", +======= + "id": 118304, + "nodeType": "VariableDeclaration", + "src": "1956:20:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118301, + "nodeType": "StructuredDocumentation", + "src": "1924:29:163", +>>>>>>> Stashed changes ======= "id": 118304, "nodeType": "VariableDeclaration", @@ -2915,6 +3669,7 @@ }, "mutability": "mutable", "name": "_pyth", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "1911:5:147", "scope": 87685, @@ -2941,6 +3696,33 @@ "src": "1896:5:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "nameLocation": "1971:5:163", + "scope": 119626, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + }, + "typeName": { + "id": 118303, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118302, + "name": "IPyth", + "nameLocations": [ + "1956:5:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 106120, + "src": "1956:5:163" + }, + "referencedDeclaration": 106120, + "src": "1956:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "nameLocation": "1971:5:163", "scope": 119626, @@ -2974,6 +3756,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86393, "nodeType": "VariableDeclaration", @@ -2984,6 +3767,17 @@ "id": 86390, "nodeType": "StructuredDocumentation", "src": "1920:28:147", +======= + "id": 118308, + "nodeType": "VariableDeclaration", + "src": "2011:28:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118305, + "nodeType": "StructuredDocumentation", + "src": "1980:28:163", +>>>>>>> Stashed changes ======= "id": 118308, "nodeType": "VariableDeclaration", @@ -2999,6 +3793,7 @@ }, "mutability": "mutable", "name": "_auction", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "1971:8:147", "scope": 87685, @@ -3025,6 +3820,33 @@ "src": "1951:10:147", "typeDescriptions": { "typeIdentifier": "t_contract$_INSAuction_$91351", +======= + "nameLocation": "2031:8:163", + "scope": 119626, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + }, + "typeName": { + "id": 118307, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118306, + "name": "INSAuction", + "nameLocations": [ + "2011:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123292, + "src": "2011:10:163" + }, + "referencedDeclaration": 123292, + "src": "2011:10:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", +>>>>>>> Stashed changes ======= "nameLocation": "2031:8:163", "scope": 119626, @@ -3058,6 +3880,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86396, "nodeType": "VariableDeclaration", @@ -3068,6 +3891,17 @@ "id": 86394, "nodeType": "StructuredDocumentation", "src": "1983:66:147", +======= + "id": 118311, + "nodeType": "VariableDeclaration", + "src": "2112:26:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118309, + "nodeType": "StructuredDocumentation", + "src": "2043:66:163", +>>>>>>> Stashed changes ======= "id": 118311, "nodeType": "VariableDeclaration", @@ -3083,9 +3917,14 @@ }, "mutability": "mutable", "name": "_taxRatio", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2069:9:147", "scope": 87685, +======= + "nameLocation": "2129:9:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "2129:9:163", "scope": 119626, @@ -3097,11 +3936,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86395, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2052:7:147", +======= + "id": 118310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2112:7:163", +>>>>>>> Stashed changes ======= "id": 118310, "name": "uint256", @@ -3116,6 +3962,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86399, "nodeType": "VariableDeclaration", @@ -3126,6 +3973,17 @@ "id": 86397, "nodeType": "StructuredDocumentation", "src": "2082:38:147", +======= + "id": 118314, + "nodeType": "VariableDeclaration", + "src": "2183:30:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118312, + "nodeType": "StructuredDocumentation", + "src": "2142:38:163", +>>>>>>> Stashed changes ======= "id": 118314, "nodeType": "VariableDeclaration", @@ -3141,9 +3999,14 @@ }, "mutability": "mutable", "name": "_rnfMaxLength", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2140:13:147", "scope": 87685, +======= + "nameLocation": "2200:13:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "2200:13:163", "scope": 119626, @@ -3155,11 +4018,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86398, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2123:7:147", +======= + "id": 118313, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2183:7:163", +>>>>>>> Stashed changes ======= "id": 118313, "name": "uint256", @@ -3174,6 +4044,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86402, "nodeType": "VariableDeclaration", @@ -3184,6 +4055,17 @@ "id": 86400, "nodeType": "StructuredDocumentation", "src": "2157:55:147", +======= + "id": 118317, + "nodeType": "VariableDeclaration", + "src": "2275:34:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118315, + "nodeType": "StructuredDocumentation", + "src": "2217:55:163", +>>>>>>> Stashed changes ======= "id": 118317, "nodeType": "VariableDeclaration", @@ -3199,9 +4081,14 @@ }, "mutability": "mutable", "name": "_maxAcceptableAge", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2232:17:147", "scope": 87685, +======= + "nameLocation": "2292:17:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "2292:17:163", "scope": 119626, @@ -3213,11 +4100,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86401, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2215:7:147", +======= + "id": 118316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2275:7:163", +>>>>>>> Stashed changes ======= "id": 118316, "name": "uint256", @@ -3232,6 +4126,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86405, "nodeType": "VariableDeclaration", @@ -3242,6 +4137,17 @@ "id": 86403, "nodeType": "StructuredDocumentation", "src": "2253:42:147", +======= + "id": 118320, + "nodeType": "VariableDeclaration", + "src": "2358:33:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118318, + "nodeType": "StructuredDocumentation", + "src": "2313:42:163", +>>>>>>> Stashed changes ======= "id": 118320, "nodeType": "VariableDeclaration", @@ -3257,9 +4163,14 @@ }, "mutability": "mutable", "name": "_pythIdForRONUSD", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2315:16:147", "scope": 87685, +======= + "nameLocation": "2375:16:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "2375:16:163", "scope": 119626, @@ -3271,11 +4182,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86404, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2298:7:147", +======= + "id": 118319, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2358:7:163", +>>>>>>> Stashed changes ======= "id": 118319, "name": "bytes32", @@ -3290,6 +4208,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86409, "nodeType": "VariableDeclaration", @@ -3300,6 +4219,17 @@ "id": 86406, "nodeType": "StructuredDocumentation", "src": "2335:59:147", +======= + "id": 118324, + "nodeType": "VariableDeclaration", + "src": "2457:35:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118321, + "nodeType": "StructuredDocumentation", + "src": "2395:59:163", +>>>>>>> Stashed changes ======= "id": 118324, "nodeType": "VariableDeclaration", @@ -3315,6 +4245,7 @@ }, "mutability": "mutable", "name": "_dpDownScaler", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2419:13:147", "scope": 87685, @@ -3341,6 +4272,33 @@ "src": "2397:12:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", +======= + "nameLocation": "2479:13:163", + "scope": 119626, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", + "typeString": "struct PeriodScaler" + }, + "typeName": { + "id": 118323, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118322, + "name": "PeriodScaler", + "nameLocations": [ + "2457:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125607, + "src": "2457:12:163" + }, + "referencedDeclaration": 125607, + "src": "2457:12:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", +>>>>>>> Stashed changes ======= "nameLocation": "2479:13:163", "scope": 119626, @@ -3374,6 +4332,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86414, "nodeType": "VariableDeclaration", @@ -3384,6 +4343,17 @@ "id": 86410, "nodeType": "StructuredDocumentation", "src": "2437:57:147", +======= + "id": 118329, + "nodeType": "VariableDeclaration", + "src": "2557:59:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118325, + "nodeType": "StructuredDocumentation", + "src": "2497:57:163", +>>>>>>> Stashed changes ======= "id": 118329, "nodeType": "VariableDeclaration", @@ -3399,9 +4369,14 @@ }, "mutability": "mutable", "name": "_rnFee", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2550:6:147", "scope": 87685, +======= + "nameLocation": "2610:6:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "2610:6:163", "scope": 119626, @@ -3413,6 +4388,7 @@ "typeString": "mapping(uint256 => uint256)" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86413, "keyName": "length", @@ -3422,6 +4398,16 @@ "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2505:7:147", +======= + "id": 118328, + "keyName": "length", + "keyNameLocation": "2573:6:163", + "keyType": { + "id": 118326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2565:7:163", +>>>>>>> Stashed changes ======= "id": 118328, "keyName": "length", @@ -3438,8 +4424,12 @@ } }, "nodeType": "Mapping", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "2497:43:147", +======= + "src": "2557:43:163", +>>>>>>> Stashed changes ======= "src": "2557:43:163", >>>>>>> Stashed changes @@ -3448,6 +4438,7 @@ "typeString": "mapping(uint256 => uint256)" }, "valueName": "usdPrice", +<<<<<<< Updated upstream <<<<<<< Updated upstream "valueNameLocation": "2531:8:147", "valueType": { @@ -3455,6 +4446,14 @@ "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2523:7:147", +======= + "valueNameLocation": "2591:8:163", + "valueType": { + "id": 118327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2583:7:163", +>>>>>>> Stashed changes ======= "valueNameLocation": "2591:8:163", "valueType": { @@ -3472,6 +4471,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86420, "nodeType": "VariableDeclaration", @@ -3482,6 +4482,17 @@ "id": 86415, "nodeType": "StructuredDocumentation", "src": "2560:49:147", +======= + "id": 118335, + "nodeType": "VariableDeclaration", + "src": "2672:65:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118330, + "nodeType": "StructuredDocumentation", + "src": "2620:49:163", +>>>>>>> Stashed changes ======= "id": 118335, "nodeType": "VariableDeclaration", @@ -3497,6 +4508,7 @@ }, "mutability": "mutable", "name": "_dp", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2674:3:147", "scope": 87685, @@ -3515,6 +4527,25 @@ "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2620:7:147", +======= + "nameLocation": "2734:3:163", + "scope": 119626, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", + "typeString": "mapping(bytes32 => struct TimestampWrapper)" + }, + "typeName": { + "id": 118334, + "keyName": "lbHash", + "keyNameLocation": "2688:6:163", + "keyType": { + "id": 118331, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2680:7:163", +>>>>>>> Stashed changes ======= "nameLocation": "2734:3:163", "scope": 119626, @@ -3540,6 +4571,7 @@ } }, "nodeType": "Mapping", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "2612:52:147", "typeDescriptions": { @@ -3565,6 +4597,32 @@ "src": "2638:16:147", "typeDescriptions": { "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", +======= + "src": "2672:52:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", + "typeString": "mapping(bytes32 => struct TimestampWrapper)" + }, + "valueName": "usdPrice", + "valueNameLocation": "2715:8:163", + "valueType": { + "id": 118333, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118332, + "name": "TimestampWrapper", + "nameLocations": [ + "2698:16:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125530, + "src": "2698:16:163" + }, + "referencedDeclaration": 125530, + "src": "2698:16:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", +>>>>>>> Stashed changes ======= "src": "2672:52:163", "typeDescriptions": { @@ -3598,6 +4656,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86425, "nodeType": "VariableDeclaration", @@ -3608,6 +4667,17 @@ "id": 86421, "nodeType": "StructuredDocumentation", "src": "2681:72:147", +======= + "id": 118340, + "nodeType": "VariableDeclaration", + "src": "2816:69:163", + "nodes": [], + "constant": false, + "documentation": { + "id": 118336, + "nodeType": "StructuredDocumentation", + "src": "2741:72:163", +>>>>>>> Stashed changes ======= "id": 118340, "nodeType": "VariableDeclaration", @@ -3623,9 +4693,14 @@ }, "mutability": "mutable", "name": "_rnFeeOverriding", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2809:16:147", "scope": 87685, +======= + "nameLocation": "2869:16:163", + "scope": 119626, +>>>>>>> Stashed changes ======= "nameLocation": "2869:16:163", "scope": 119626, @@ -3637,6 +4712,7 @@ "typeString": "mapping(bytes32 => uint256)" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86424, "keyName": "lbHash", @@ -3646,6 +4722,16 @@ "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2764:7:147", +======= + "id": 118339, + "keyName": "lbHash", + "keyNameLocation": "2832:6:163", + "keyType": { + "id": 118337, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2824:7:163", +>>>>>>> Stashed changes ======= "id": 118339, "keyName": "lbHash", @@ -3662,8 +4748,12 @@ } }, "nodeType": "Mapping", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "2756:43:147", +======= + "src": "2816:43:163", +>>>>>>> Stashed changes ======= "src": "2816:43:163", >>>>>>> Stashed changes @@ -3672,6 +4762,7 @@ "typeString": "mapping(bytes32 => uint256)" }, "valueName": "usdPrice", +<<<<<<< Updated upstream <<<<<<< Updated upstream "valueNameLocation": "2790:8:147", "valueType": { @@ -3679,6 +4770,14 @@ "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2782:7:147", +======= + "valueNameLocation": "2850:8:163", + "valueType": { + "id": 118338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2842:7:163", +>>>>>>> Stashed changes ======= "valueNameLocation": "2850:8:163", "valueType": { @@ -3696,6 +4795,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86430, "nodeType": "VariableDeclaration", @@ -3707,6 +4807,8 @@ "nodeType": "StructuredDocumentation", "src": "2829:50:147", ======= +======= +>>>>>>> Stashed changes "id": 118345, "nodeType": "VariableDeclaration", "src": "2942:62:163", @@ -3716,11 +4818,15 @@ "id": 118341, "nodeType": "StructuredDocumentation", "src": "2889:50:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "text": "@dev Mapping from label hash to overriden tier" }, "mutability": "mutable", "name": "_tierOverriding", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "2922:15:147", "scope": 87685, @@ -3740,6 +4846,8 @@ "nodeType": "ElementaryTypeName", "src": "2890:7:147", ======= +======= +>>>>>>> Stashed changes "nameLocation": "2989:15:163", "scope": 119626, "stateVariable": true, @@ -3757,6 +4865,9 @@ "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2950:7:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3764,6 +4875,7 @@ } }, "nodeType": "Mapping", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "2882:39:147", "typeDescriptions": { @@ -3781,6 +4893,8 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" ======= +======= +>>>>>>> Stashed changes "src": "2942:37:163", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", @@ -3796,6 +4910,9 @@ "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } } @@ -3803,6 +4920,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86437, "nodeType": "FunctionDefinition", @@ -3812,6 +4930,16 @@ "id": 86436, "nodeType": "Block", "src": "2964:33:147", +======= + "id": 118352, + "nodeType": "FunctionDefinition", + "src": "3009:55:163", + "nodes": [], + "body": { + "id": 118351, + "nodeType": "Block", + "src": "3031:33:163", +>>>>>>> Stashed changes ======= "id": 118352, "nodeType": "FunctionDefinition", @@ -3829,6 +4957,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86433, "name": "_disableInitializers", @@ -3836,6 +4965,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 70587, "src": "2970:20:147", +======= + "id": 118348, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101505, + "src": "3037:20:163", +>>>>>>> Stashed changes ======= "id": 118348, "name": "_disableInitializers", @@ -3849,8 +4986,12 @@ "typeString": "function ()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86434, +======= + "id": 118349, +>>>>>>> Stashed changes ======= "id": 118349, >>>>>>> Stashed changes @@ -3862,8 +5003,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "2970:22:147", +======= + "src": "3037:22:163", +>>>>>>> Stashed changes ======= "src": "3037:22:163", >>>>>>> Stashed changes @@ -3873,10 +5018,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86435, "nodeType": "ExpressionStatement", "src": "2970:22:147" +======= + "id": 118350, + "nodeType": "ExpressionStatement", + "src": "3037:22:163" +>>>>>>> Stashed changes ======= "id": 118350, "nodeType": "ExpressionStatement", @@ -3891,6 +5042,7 @@ "name": "", "nameLocation": "-1:-1:-1", "parameters": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86431, "nodeType": "ParameterList", @@ -3904,6 +5056,20 @@ "src": "2964:0:147" }, "scope": 87685, +======= + "id": 118346, + "nodeType": "ParameterList", + "parameters": [], + "src": "3020:2:163" + }, + "returnParameters": { + "id": 118347, + "nodeType": "ParameterList", + "parameters": [], + "src": "3031:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "id": 118346, "nodeType": "ParameterList", @@ -3923,6 +5089,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86522, "nodeType": "FunctionDefinition", @@ -3932,6 +5099,16 @@ "id": 86521, "nodeType": "Block", "src": "3307:470:147", +======= + "id": 118437, + "nodeType": "FunctionDefinition", + "src": "3068:776:163", + "nodes": [], + "body": { + "id": 118436, + "nodeType": "Block", + "src": "3374:470:163", +>>>>>>> Stashed changes ======= "id": 118437, "nodeType": "FunctionDefinition", @@ -3946,8 +5123,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86467 +======= + 118382 +>>>>>>> Stashed changes ======= 118382 >>>>>>> Stashed changes @@ -3955,6 +5136,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86467, "mutability": "mutable", @@ -3963,6 +5145,15 @@ "nodeType": "VariableDeclaration", "scope": 86521, "src": "3313:14:147", +======= + "id": 118382, + "mutability": "mutable", + "name": "length", + "nameLocation": "3388:6:163", + "nodeType": "VariableDeclaration", + "scope": 118436, + "src": "3380:14:163", +>>>>>>> Stashed changes ======= "id": 118382, "mutability": "mutable", @@ -3979,11 +5170,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86466, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3313:7:147", +======= + "id": 118381, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3380:7:163", +>>>>>>> Stashed changes ======= "id": 118381, "name": "uint256", @@ -3998,6 +5196,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86470, "initialValue": { @@ -4008,6 +5207,17 @@ "overloadedDeclarations": [], "referencedDeclaration": 86442, "src": "3330:9:147", +======= + "id": 118385, + "initialValue": { + "expression": { + "id": 118383, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118357, + "src": "3397:9:163", +>>>>>>> Stashed changes ======= "id": 118385, "initialValue": { @@ -4024,8 +5234,12 @@ "typeString": "address[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86469, +======= + "id": 118384, +>>>>>>> Stashed changes ======= "id": 118384, >>>>>>> Stashed changes @@ -4033,11 +5247,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "3340:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "3330:16:147", +======= + "memberLocation": "3407:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3397:16:163", +>>>>>>> Stashed changes ======= "memberLocation": "3407:6:163", "memberName": "length", @@ -4050,12 +5271,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3313:33:147" }, { "assignments": [ 86472 +======= + "src": "3380:33:163" + }, + { + "assignments": [ + 118387 +>>>>>>> Stashed changes ======= "src": "3380:33:163" }, @@ -4067,6 +5296,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86472, "mutability": "mutable", @@ -4075,6 +5305,15 @@ "nodeType": "VariableDeclaration", "scope": 86521, "src": "3352:20:147", +======= + "id": 118387, + "mutability": "mutable", + "name": "operatorRole", + "nameLocation": "3427:12:163", + "nodeType": "VariableDeclaration", + "scope": 118436, + "src": "3419:20:163", +>>>>>>> Stashed changes ======= "id": 118387, "mutability": "mutable", @@ -4091,11 +5330,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86471, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3352:7:147", +======= + "id": 118386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3419:7:163", +>>>>>>> Stashed changes ======= "id": 118386, "name": "bytes32", @@ -4110,6 +5356,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86474, "initialValue": { @@ -4119,6 +5366,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86374, "src": "3375:13:147", +======= + "id": 118389, + "initialValue": { + "id": 118388, + "name": "OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118289, + "src": "3442:13:163", +>>>>>>> Stashed changes ======= "id": 118389, "initialValue": { @@ -4135,6 +5392,7 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3352:36:147" }, @@ -4143,6 +5401,15 @@ "id": 86492, "nodeType": "Block", "src": "3424:93:147", +======= + "src": "3419:36:163" + }, + { + "body": { + "id": 118407, + "nodeType": "Block", + "src": "3491:93:163", +>>>>>>> Stashed changes ======= "src": "3419:36:163" }, @@ -4157,6 +5424,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86482, "name": "operatorRole", @@ -4164,6 +5432,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86472, "src": "3443:12:147", +======= + "id": 118397, + "name": "operatorRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118387, + "src": "3510:12:163", +>>>>>>> Stashed changes ======= "id": 118397, "name": "operatorRole", @@ -4179,6 +5455,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86483, "name": "operators", @@ -4186,6 +5463,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86442, "src": "3457:9:147", +======= + "id": 118398, + "name": "operators", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118357, + "src": "3524:9:163", +>>>>>>> Stashed changes ======= "id": 118398, "name": "operators", @@ -4199,6 +5484,7 @@ "typeString": "address[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86485, "indexExpression": { @@ -4208,6 +5494,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86476, "src": "3467:1:147", +======= + "id": 118400, + "indexExpression": { + "id": 118399, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118391, + "src": "3534:1:163", +>>>>>>> Stashed changes ======= "id": 118400, "indexExpression": { @@ -4228,8 +5524,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3457:12:147", +======= + "src": "3524:12:163", +>>>>>>> Stashed changes ======= "src": "3524:12:163", >>>>>>> Stashed changes @@ -4250,6 +5550,7 @@ "typeString": "address" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86481, "name": "_setupRole", @@ -4257,6 +5558,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 69116, "src": "3432:10:147", +======= + "id": 118396, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100034, + "src": "3499:10:163", +>>>>>>> Stashed changes ======= "id": 118396, "name": "_setupRole", @@ -4270,8 +5579,12 @@ "typeString": "function (bytes32,address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86486, +======= + "id": 118401, +>>>>>>> Stashed changes ======= "id": 118401, >>>>>>> Stashed changes @@ -4283,8 +5596,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3432:38:147", +======= + "src": "3499:38:163", +>>>>>>> Stashed changes ======= "src": "3499:38:163", >>>>>>> Stashed changes @@ -4294,6 +5611,7 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86487, "nodeType": "ExpressionStatement", @@ -4307,6 +5625,20 @@ { "expression": { "id": 86489, +======= + "id": 118402, + "nodeType": "ExpressionStatement", + "src": "3499:38:163" + }, + { + "id": 118406, + "nodeType": "UncheckedBlock", + "src": "3546:32:163", + "statements": [ + { + "expression": { + "id": 118404, +>>>>>>> Stashed changes ======= "id": 118402, "nodeType": "ExpressionStatement", @@ -4328,6 +5660,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3499:3:147", "subExpression": { @@ -4337,6 +5670,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86476, "src": "3501:1:147", +======= + "src": "3566:3:163", + "subExpression": { + "id": 118403, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118391, + "src": "3568:1:163", +>>>>>>> Stashed changes ======= "src": "3566:3:163", "subExpression": { @@ -4357,10 +5700,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86490, "nodeType": "ExpressionStatement", "src": "3499:3:147" +======= + "id": 118405, + "nodeType": "ExpressionStatement", + "src": "3566:3:163" +>>>>>>> Stashed changes ======= "id": 118405, "nodeType": "ExpressionStatement", @@ -4376,8 +5725,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86480, +======= + "id": 118395, +>>>>>>> Stashed changes ======= "id": 118395, >>>>>>> Stashed changes @@ -4386,6 +5739,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86478, "name": "i", @@ -4393,6 +5747,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86476, "src": "3411:1:147", +======= + "id": 118393, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118391, + "src": "3478:1:163", +>>>>>>> Stashed changes ======= "id": 118393, "name": "i", @@ -4409,6 +5771,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86479, "name": "length", @@ -4416,6 +5779,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86467, "src": "3415:6:147", +======= + "id": 118394, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118382, + "src": "3482:6:163", +>>>>>>> Stashed changes ======= "id": 118394, "name": "length", @@ -4429,8 +5800,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3411:10:147", +======= + "src": "3478:10:163", +>>>>>>> Stashed changes ======= "src": "3478:10:163", >>>>>>> Stashed changes @@ -4439,11 +5814,18 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86493, "initializationExpression": { "assignments": [ 86476 +======= + "id": 118408, + "initializationExpression": { + "assignments": [ + 118391 +>>>>>>> Stashed changes ======= "id": 118408, "initializationExpression": { @@ -4454,6 +5836,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86476, "mutability": "mutable", @@ -4462,6 +5845,15 @@ "nodeType": "VariableDeclaration", "scope": 86493, "src": "3400:9:147", +======= + "id": 118391, + "mutability": "mutable", + "name": "i", + "nameLocation": "3475:1:163", + "nodeType": "VariableDeclaration", + "scope": 118408, + "src": "3467:9:163", +>>>>>>> Stashed changes ======= "id": 118391, "mutability": "mutable", @@ -4478,11 +5870,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86475, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3400:7:147", +======= + "id": 118390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3467:7:163", +>>>>>>> Stashed changes ======= "id": 118390, "name": "uint256", @@ -4497,6 +5896,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86477, "nodeType": "VariableDeclarationStatement", @@ -4508,6 +5908,18 @@ { "expression": { "id": 86496, +======= + "id": 118392, + "nodeType": "VariableDeclarationStatement", + "src": "3467:9:163" + }, + "nodeType": "ForStatement", + "src": "3462:122:163" + }, + { + "expression": { + "id": 118411, +>>>>>>> Stashed changes ======= "id": 118392, "nodeType": "VariableDeclarationStatement", @@ -4525,6 +5937,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86494, "name": "_auction", @@ -4534,6 +5947,16 @@ "src": "3522:8:147", "typeDescriptions": { "typeIdentifier": "t_contract$_INSAuction_$91351", +======= + "id": 118409, + "name": "_auction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118308, + "src": "3589:8:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", +>>>>>>> Stashed changes ======= "id": 118409, "name": "_auction", @@ -4550,6 +5973,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86495, "name": "auction", @@ -4571,6 +5995,28 @@ "id": 86497, "nodeType": "ExpressionStatement", "src": "3522:18:147" +======= + "id": 118410, + "name": "auction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118372, + "src": "3600:7:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + } + }, + "src": "3589:18:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + } + }, + "id": 118412, + "nodeType": "ExpressionStatement", + "src": "3589:18:163" +>>>>>>> Stashed changes ======= "id": 118410, "name": "auction", @@ -4598,6 +6044,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86499, "name": "DEFAULT_ADMIN_ROLE", @@ -4605,6 +6052,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 68920, "src": "3557:18:147", +======= + "id": 118414, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99838, + "src": "3624:18:163", +>>>>>>> Stashed changes ======= "id": 118414, "name": "DEFAULT_ADMIN_ROLE", @@ -4619,6 +6074,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86500, "name": "admin", @@ -4626,6 +6082,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86439, "src": "3577:5:147", +======= + "id": 118415, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118354, + "src": "3644:5:163", +>>>>>>> Stashed changes ======= "id": 118415, "name": "admin", @@ -4651,6 +6115,7 @@ "typeString": "address" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86498, "name": "_setupRole", @@ -4658,6 +6123,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 69116, "src": "3546:10:147", +======= + "id": 118413, + "name": "_setupRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100034, + "src": "3613:10:163", +>>>>>>> Stashed changes ======= "id": 118413, "name": "_setupRole", @@ -4671,8 +6144,12 @@ "typeString": "function (bytes32,address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86501, +======= + "id": 118416, +>>>>>>> Stashed changes ======= "id": 118416, >>>>>>> Stashed changes @@ -4684,8 +6161,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3546:37:147", +======= + "src": "3613:37:163", +>>>>>>> Stashed changes ======= "src": "3613:37:163", >>>>>>> Stashed changes @@ -4695,10 +6176,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86502, "nodeType": "ExpressionStatement", "src": "3546:37:147" +======= + "id": 118417, + "nodeType": "ExpressionStatement", + "src": "3613:37:163" +>>>>>>> Stashed changes ======= "id": 118417, "nodeType": "ExpressionStatement", @@ -4709,6 +6196,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86504, "name": "renewalFees", @@ -4718,6 +6206,16 @@ "src": "3613:11:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", +======= + "id": 118419, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118361, + "src": "3680:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", +>>>>>>> Stashed changes ======= "id": 118419, "name": "renewalFees", @@ -4735,6 +6233,7 @@ "expression": { "argumentTypes": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" @@ -4752,6 +6251,24 @@ } }, "id": 86505, +======= + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" + } + ], + "id": 118418, + "name": "_setRenewalFeeByLengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119372, + "src": "3656:23:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", + "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" + } + }, + "id": 118420, +>>>>>>> Stashed changes ======= "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" @@ -4778,8 +6295,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3589:36:147", +======= + "src": "3656:36:163", +>>>>>>> Stashed changes ======= "src": "3656:36:163", >>>>>>> Stashed changes @@ -4789,10 +6310,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86506, "nodeType": "ExpressionStatement", "src": "3589:36:147" +======= + "id": 118421, + "nodeType": "ExpressionStatement", + "src": "3656:36:163" +>>>>>>> Stashed changes ======= "id": 118421, "nodeType": "ExpressionStatement", @@ -4803,6 +6330,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86508, "name": "taxRatio", @@ -4810,6 +6338,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86448, "src": "3644:8:147", +======= + "id": 118423, + "name": "taxRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118363, + "src": "3711:8:163", +>>>>>>> Stashed changes ======= "id": 118423, "name": "taxRatio", @@ -4831,6 +6367,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86507, "name": "_setTaxRatio", @@ -4838,6 +6375,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87505, "src": "3631:12:147", +======= + "id": 118422, + "name": "_setTaxRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119267, + "src": "3698:12:163", +>>>>>>> Stashed changes ======= "id": 118422, "name": "_setTaxRatio", @@ -4851,8 +6396,12 @@ "typeString": "function (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86509, +======= + "id": 118424, +>>>>>>> Stashed changes ======= "id": 118424, >>>>>>> Stashed changes @@ -4864,8 +6413,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3631:22:147", +======= + "src": "3698:22:163", +>>>>>>> Stashed changes ======= "src": "3698:22:163", >>>>>>> Stashed changes @@ -4875,10 +6428,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86510, "nodeType": "ExpressionStatement", "src": "3631:22:147" +======= + "id": 118425, + "nodeType": "ExpressionStatement", + "src": "3698:22:163" +>>>>>>> Stashed changes ======= "id": 118425, "nodeType": "ExpressionStatement", @@ -4889,6 +6448,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86512, "name": "domainPriceScaleRule", @@ -4898,6 +6458,16 @@ "src": "3684:20:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", +======= + "id": 118427, + "name": "domainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118366, + "src": "3751:20:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", +>>>>>>> Stashed changes ======= "id": 118427, "name": "domainPriceScaleRule", @@ -4915,6 +6485,7 @@ "expression": { "argumentTypes": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", "typeString": "struct PeriodScaler calldata" @@ -4932,6 +6503,24 @@ } }, "id": 86513, +======= + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + ], + "id": 118426, + "name": "_setDomainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119288, + "src": "3726:24:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", + "typeString": "function (struct PeriodScaler calldata)" + } + }, + "id": 118428, +>>>>>>> Stashed changes ======= "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler calldata" @@ -4958,8 +6547,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3659:46:147", +======= + "src": "3726:46:163", +>>>>>>> Stashed changes ======= "src": "3726:46:163", >>>>>>> Stashed changes @@ -4969,10 +6562,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86514, "nodeType": "ExpressionStatement", "src": "3659:46:147" +======= + "id": 118429, + "nodeType": "ExpressionStatement", + "src": "3726:46:163" +>>>>>>> Stashed changes ======= "id": 118429, "nodeType": "ExpressionStatement", @@ -4983,6 +6582,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86516, "name": "pyth", @@ -4992,6 +6592,16 @@ "src": "3732:4:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 118431, + "name": "pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118369, + "src": "3799:4:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 118431, "name": "pyth", @@ -5006,6 +6616,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86517, "name": "maxAcceptableAge", @@ -5013,6 +6624,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86459, "src": "3738:16:147", +======= + "id": 118432, + "name": "maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118374, + "src": "3805:16:163", +>>>>>>> Stashed changes ======= "id": 118432, "name": "maxAcceptableAge", @@ -5027,6 +6646,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86518, "name": "pythIdForRONUSD", @@ -5034,6 +6654,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86461, "src": "3756:15:147", +======= + "id": 118433, + "name": "pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118376, + "src": "3823:15:163", +>>>>>>> Stashed changes ======= "id": 118433, "name": "pythIdForRONUSD", @@ -5051,8 +6679,12 @@ "expression": { "argumentTypes": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "typeIdentifier": "t_contract$_IPyth_$106120", >>>>>>> Stashed changes @@ -5067,6 +6699,7 @@ "typeString": "bytes32" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86515, "name": "_setPythOracleConfig", @@ -5080,6 +6713,20 @@ } }, "id": 86519, +======= + "id": 118430, + "name": "_setPythOracleConfig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119404, + "src": "3778:20:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (contract IPyth,uint256,bytes32)" + } + }, + "id": 118434, +>>>>>>> Stashed changes ======= "id": 118430, "name": "_setPythOracleConfig", @@ -5102,8 +6749,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3711:61:147", +======= + "src": "3778:61:163", +>>>>>>> Stashed changes ======= "src": "3778:61:163", >>>>>>> Stashed changes @@ -5113,10 +6764,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86520, "nodeType": "ExpressionStatement", "src": "3711:61:147" +======= + "id": 118435, + "nodeType": "ExpressionStatement", + "src": "3778:61:163" +>>>>>>> Stashed changes ======= "id": 118435, "nodeType": "ExpressionStatement", @@ -5130,6 +6787,7 @@ "kind": "function", "modifiers": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86464, "kind": "modifierInvocation", @@ -5151,6 +6809,28 @@ "nameLocation": "3010:10:147", "parameters": { "id": 86462, +======= + "id": 118379, + "kind": "modifierInvocation", + "modifierName": { + "id": 118378, + "name": "initializer", + "nameLocations": [ + "3362:11:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 101426, + "src": "3362:11:163" + }, + "nodeType": "ModifierInvocation", + "src": "3362:11:163" + } + ], + "name": "initialize", + "nameLocation": "3077:10:163", + "parameters": { + "id": 118377, +>>>>>>> Stashed changes ======= "id": 118379, "kind": "modifierInvocation", @@ -5177,6 +6857,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86439, "mutability": "mutable", @@ -5185,6 +6866,15 @@ "nodeType": "VariableDeclaration", "scope": 86522, "src": "3026:13:147", +======= + "id": 118354, + "mutability": "mutable", + "name": "admin", + "nameLocation": "3101:5:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3093:13:163", +>>>>>>> Stashed changes ======= "id": 118354, "mutability": "mutable", @@ -5201,11 +6891,18 @@ "typeString": "address" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86438, "name": "address", "nodeType": "ElementaryTypeName", "src": "3026:7:147", +======= + "id": 118353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3093:7:163", +>>>>>>> Stashed changes ======= "id": 118353, "name": "address", @@ -5222,6 +6919,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86442, "mutability": "mutable", @@ -5230,6 +6928,15 @@ "nodeType": "VariableDeclaration", "scope": 86522, "src": "3045:28:147", +======= + "id": 118357, + "mutability": "mutable", + "name": "operators", + "nameLocation": "3131:9:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3112:28:163", +>>>>>>> Stashed changes ======= "id": 118357, "mutability": "mutable", @@ -5247,11 +6954,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86440, "name": "address", "nodeType": "ElementaryTypeName", "src": "3045:7:147", +======= + "id": 118355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3112:7:163", +>>>>>>> Stashed changes ======= "id": 118355, "name": "address", @@ -5264,10 +6978,16 @@ "typeString": "address" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86441, "nodeType": "ArrayTypeName", "src": "3045:9:147", +======= + "id": 118356, + "nodeType": "ArrayTypeName", + "src": "3112:9:163", +>>>>>>> Stashed changes ======= "id": 118356, "nodeType": "ArrayTypeName", @@ -5282,6 +7002,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86446, "mutability": "mutable", @@ -5294,6 +7015,19 @@ "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", +======= + "id": 118361, + "mutability": "mutable", + "name": "renewalFees", + "nameLocation": "3168:11:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3146:33:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", +>>>>>>> Stashed changes ======= "id": 118361, "mutability": "mutable", @@ -5311,6 +7045,7 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86444, "nodeType": "UserDefinedTypeName", @@ -5336,6 +7071,32 @@ "src": "3079:12:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", +======= + "id": 118359, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118358, + "name": "RenewalFee", + "nameLocations": [ + "3146:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123317, + "src": "3146:10:163" + }, + "referencedDeclaration": 123317, + "src": "3146:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" + } + }, + "id": 118360, + "nodeType": "ArrayTypeName", + "src": "3146:12:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118359, "nodeType": "UserDefinedTypeName", @@ -5369,6 +7130,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86448, "mutability": "mutable", @@ -5377,6 +7139,15 @@ "nodeType": "VariableDeclaration", "scope": 86522, "src": "3118:16:147", +======= + "id": 118363, + "mutability": "mutable", + "name": "taxRatio", + "nameLocation": "3193:8:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3185:16:163", +>>>>>>> Stashed changes ======= "id": 118363, "mutability": "mutable", @@ -5393,11 +7164,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86447, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3118:7:147", +======= + "id": 118362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3185:7:163", +>>>>>>> Stashed changes ======= "id": 118362, "name": "uint256", @@ -5413,6 +7191,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86451, "mutability": "mutable", @@ -5444,6 +7223,38 @@ "src": "3140:12:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", +======= + "id": 118366, + "mutability": "mutable", + "name": "domainPriceScaleRule", + "nameLocation": "3229:20:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3207:42:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler" + }, + "typeName": { + "id": 118365, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118364, + "name": "PeriodScaler", + "nameLocations": [ + "3207:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125607, + "src": "3207:12:163" + }, + "referencedDeclaration": 125607, + "src": "3207:12:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118366, "mutability": "mutable", @@ -5483,6 +7294,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86454, "mutability": "mutable", @@ -5514,6 +7326,38 @@ "src": "3188:5:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 118369, + "mutability": "mutable", + "name": "pyth", + "nameLocation": "3261:4:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3255:10:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + }, + "typeName": { + "id": 118368, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118367, + "name": "IPyth", + "nameLocations": [ + "3255:5:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 106120, + "src": "3255:5:163" + }, + "referencedDeclaration": 106120, + "src": "3255:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 118369, "mutability": "mutable", @@ -5553,6 +7397,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86457, "mutability": "mutable", @@ -5584,6 +7429,38 @@ "src": "3204:10:147", "typeDescriptions": { "typeIdentifier": "t_contract$_INSAuction_$91351", +======= + "id": 118372, + "mutability": "mutable", + "name": "auction", + "nameLocation": "3282:7:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3271:18:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", + "typeString": "contract INSAuction" + }, + "typeName": { + "id": 118371, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118370, + "name": "INSAuction", + "nameLocations": [ + "3271:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123292, + "src": "3271:10:163" + }, + "referencedDeclaration": 123292, + "src": "3271:10:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_INSAuction_$123292", +>>>>>>> Stashed changes ======= "id": 118372, "mutability": "mutable", @@ -5623,6 +7500,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86459, "mutability": "mutable", @@ -5631,6 +7509,15 @@ "nodeType": "VariableDeclaration", "scope": 86522, "src": "3228:24:147", +======= + "id": 118374, + "mutability": "mutable", + "name": "maxAcceptableAge", + "nameLocation": "3303:16:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3295:24:163", +>>>>>>> Stashed changes ======= "id": 118374, "mutability": "mutable", @@ -5647,11 +7534,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86458, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3228:7:147", +======= + "id": 118373, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3295:7:163", +>>>>>>> Stashed changes ======= "id": 118373, "name": "uint256", @@ -5667,6 +7561,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86461, "mutability": "mutable", @@ -5675,6 +7570,15 @@ "nodeType": "VariableDeclaration", "scope": 86522, "src": "3258:23:147", +======= + "id": 118376, + "mutability": "mutable", + "name": "pythIdForRONUSD", + "nameLocation": "3333:15:163", + "nodeType": "VariableDeclaration", + "scope": 118437, + "src": "3325:23:163", +>>>>>>> Stashed changes ======= "id": 118376, "mutability": "mutable", @@ -5691,11 +7595,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86460, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3258:7:147", +======= + "id": 118375, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3325:7:163", +>>>>>>> Stashed changes ======= "id": 118375, "name": "bytes32", @@ -5710,6 +7621,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3020:265:147" }, @@ -5720,6 +7632,17 @@ "src": "3307:0:147" }, "scope": 87685, +======= + "src": "3087:265:163" + }, + "returnParameters": { + "id": 118380, + "nodeType": "ParameterList", + "parameters": [], + "src": "3374:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "3087:265:163" }, @@ -5736,6 +7659,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86539, "nodeType": "FunctionDefinition", @@ -5745,6 +7669,16 @@ "id": 86538, "nodeType": "Block", "src": "3942:62:147", +======= + "id": 118454, + "nodeType": "FunctionDefinition", + "src": "3892:179:163", + "nodes": [], + "body": { + "id": 118453, + "nodeType": "Block", + "src": "4009:62:163", +>>>>>>> Stashed changes ======= "id": 118454, "nodeType": "FunctionDefinition", @@ -5761,6 +7695,7 @@ "expression": { "components": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86533, "name": "_pyth", @@ -5770,6 +7705,16 @@ "src": "3956:5:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 118448, + "name": "_pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118304, + "src": "4023:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 118448, "name": "_pyth", @@ -5784,6 +7729,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86534, "name": "_maxAcceptableAge", @@ -5791,6 +7737,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86402, "src": "3963:17:147", +======= + "id": 118449, + "name": "_maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118317, + "src": "4030:17:163", +>>>>>>> Stashed changes ======= "id": 118449, "name": "_maxAcceptableAge", @@ -5805,6 +7759,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86535, "name": "_pythIdForRONUSD", @@ -5812,6 +7767,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86405, "src": "3982:16:147", +======= + "id": 118450, + "name": "_pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118320, + "src": "4049:16:163", +>>>>>>> Stashed changes ======= "id": 118450, "name": "_pythIdForRONUSD", @@ -5826,8 +7789,12 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86536, +======= + "id": 118451, +>>>>>>> Stashed changes ======= "id": 118451, >>>>>>> Stashed changes @@ -5837,6 +7804,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3955:44:147", "typeDescriptions": { @@ -5848,6 +7816,18 @@ "id": 86537, "nodeType": "Return", "src": "3948:51:147" +======= + "src": "4022:44:163", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$", + "typeString": "tuple(contract IPyth,uint256,bytes32)" + } + }, + "functionReturnParameters": 118447, + "id": 118452, + "nodeType": "Return", + "src": "4015:51:163" +>>>>>>> Stashed changes ======= "src": "4022:44:163", "typeDescriptions": { @@ -5864,6 +7844,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91467 ], @@ -5871,6 +7852,14 @@ "id": 86523, "nodeType": "StructuredDocumentation", "src": "3781:41:147", +======= + 123409 + ], + "documentation": { + "id": 118438, + "nodeType": "StructuredDocumentation", + "src": "3848:41:163", +>>>>>>> Stashed changes ======= 123409 ], @@ -5886,6 +7875,7 @@ "kind": "function", "modifiers": [], "name": "getPythOracleConfig", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "3834:19:147", "parameters": { @@ -5896,6 +7886,17 @@ }, "returnParameters": { "id": 86532, +======= + "nameLocation": "3901:19:163", + "parameters": { + "id": 118439, + "nodeType": "ParameterList", + "parameters": [], + "src": "3920:2:163" + }, + "returnParameters": { + "id": 118447, +>>>>>>> Stashed changes ======= "nameLocation": "3901:19:163", "parameters": { @@ -5911,6 +7912,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86527, "mutability": "mutable", @@ -5942,6 +7944,38 @@ "src": "3879:5:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 118442, + "mutability": "mutable", + "name": "pyth", + "nameLocation": "3952:4:163", + "nodeType": "VariableDeclaration", + "scope": 118454, + "src": "3946:10:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + }, + "typeName": { + "id": 118441, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118440, + "name": "IPyth", + "nameLocations": [ + "3946:5:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 106120, + "src": "3946:5:163" + }, + "referencedDeclaration": 106120, + "src": "3946:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 118442, "mutability": "mutable", @@ -5981,6 +8015,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86529, "mutability": "mutable", @@ -5989,6 +8024,15 @@ "nodeType": "VariableDeclaration", "scope": 86539, "src": "3891:24:147", +======= + "id": 118444, + "mutability": "mutable", + "name": "maxAcceptableAge", + "nameLocation": "3966:16:163", + "nodeType": "VariableDeclaration", + "scope": 118454, + "src": "3958:24:163", +>>>>>>> Stashed changes ======= "id": 118444, "mutability": "mutable", @@ -6005,11 +8049,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86528, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3891:7:147", +======= + "id": 118443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3958:7:163", +>>>>>>> Stashed changes ======= "id": 118443, "name": "uint256", @@ -6025,6 +8076,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86531, "mutability": "mutable", @@ -6033,6 +8085,15 @@ "nodeType": "VariableDeclaration", "scope": 86539, "src": "3917:23:147", +======= + "id": 118446, + "mutability": "mutable", + "name": "pythIdForRONUSD", + "nameLocation": "3992:15:163", + "nodeType": "VariableDeclaration", + "scope": 118454, + "src": "3984:23:163", +>>>>>>> Stashed changes ======= "id": 118446, "mutability": "mutable", @@ -6049,11 +8110,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86530, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3917:7:147", +======= + "id": 118445, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3984:7:163", +>>>>>>> Stashed changes ======= "id": 118445, "name": "bytes32", @@ -6068,10 +8136,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "3878:63:147" }, "scope": 87685, +======= + "src": "3945:63:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "3945:63:163" }, @@ -6082,6 +8156,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86560, "nodeType": "FunctionDefinition", @@ -6091,6 +8166,16 @@ "id": 86559, "nodeType": "Block", "src": "4192:72:147", +======= + "id": 118475, + "nodeType": "FunctionDefinition", + "src": "4119:212:163", + "nodes": [], + "body": { + "id": 118474, + "nodeType": "Block", + "src": "4259:72:163", +>>>>>>> Stashed changes ======= "id": 118475, "nodeType": "FunctionDefinition", @@ -6107,6 +8192,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86554, "name": "pyth", @@ -6116,6 +8202,16 @@ "src": "4219:4:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 118469, + "name": "pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118458, + "src": "4286:4:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 118469, "name": "pyth", @@ -6130,6 +8226,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86555, "name": "maxAcceptableAge", @@ -6137,6 +8234,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86545, "src": "4225:16:147", +======= + "id": 118470, + "name": "maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118460, + "src": "4292:16:163", +>>>>>>> Stashed changes ======= "id": 118470, "name": "maxAcceptableAge", @@ -6151,6 +8256,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86556, "name": "pythIdForRONUSD", @@ -6158,6 +8264,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86547, "src": "4243:15:147", +======= + "id": 118471, + "name": "pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118462, + "src": "4310:15:163", +>>>>>>> Stashed changes ======= "id": 118471, "name": "pythIdForRONUSD", @@ -6175,8 +8289,12 @@ "expression": { "argumentTypes": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "typeIdentifier": "t_contract$_IPyth_$106120", >>>>>>> Stashed changes @@ -6191,6 +8309,7 @@ "typeString": "bytes32" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86553, "name": "_setPythOracleConfig", @@ -6204,6 +8323,20 @@ } }, "id": 86557, +======= + "id": 118468, + "name": "_setPythOracleConfig", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119404, + "src": "4265:20:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (contract IPyth,uint256,bytes32)" + } + }, + "id": 118472, +>>>>>>> Stashed changes ======= "id": 118468, "name": "_setPythOracleConfig", @@ -6226,8 +8359,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4198:61:147", +======= + "src": "4265:61:163", +>>>>>>> Stashed changes ======= "src": "4265:61:163", >>>>>>> Stashed changes @@ -6237,10 +8374,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86558, "nodeType": "ExpressionStatement", "src": "4198:61:147" +======= + "id": 118473, + "nodeType": "ExpressionStatement", + "src": "4265:61:163" +>>>>>>> Stashed changes ======= "id": 118473, "nodeType": "ExpressionStatement", @@ -6250,6 +8393,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91478 ], @@ -6257,6 +8401,14 @@ "id": 86540, "nodeType": "StructuredDocumentation", "src": "4008:41:147", +======= + 123420 + ], + "documentation": { + "id": 118455, + "nodeType": "StructuredDocumentation", + "src": "4075:41:163", +>>>>>>> Stashed changes ======= 123420 ], @@ -6274,6 +8426,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86550, "name": "DEFAULT_ADMIN_ROLE", @@ -6281,6 +8434,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 68920, "src": "4170:18:147", +======= + "id": 118465, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99838, + "src": "4237:18:163", +>>>>>>> Stashed changes ======= "id": 118465, "name": "DEFAULT_ADMIN_ROLE", @@ -6295,6 +8456,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86551, "kind": "modifierInvocation", @@ -6316,6 +8478,28 @@ "nameLocation": "4061:19:147", "parameters": { "id": 86548, +======= + "id": 118466, + "kind": "modifierInvocation", + "modifierName": { + "id": 118464, + "name": "onlyRole", + "nameLocations": [ + "4228:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "4228:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "4228:28:163" + } + ], + "name": "setPythOracleConfig", + "nameLocation": "4128:19:163", + "parameters": { + "id": 118463, +>>>>>>> Stashed changes ======= "id": 118466, "kind": "modifierInvocation", @@ -6342,6 +8526,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86543, "mutability": "mutable", @@ -6373,6 +8558,38 @@ "src": "4081:5:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 118458, + "mutability": "mutable", + "name": "pyth", + "nameLocation": "4154:4:163", + "nodeType": "VariableDeclaration", + "scope": 118475, + "src": "4148:10:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + }, + "typeName": { + "id": 118457, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118456, + "name": "IPyth", + "nameLocations": [ + "4148:5:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 106120, + "src": "4148:5:163" + }, + "referencedDeclaration": 106120, + "src": "4148:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 118458, "mutability": "mutable", @@ -6412,6 +8629,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86545, "mutability": "mutable", @@ -6420,6 +8638,15 @@ "nodeType": "VariableDeclaration", "scope": 86560, "src": "4093:24:147", +======= + "id": 118460, + "mutability": "mutable", + "name": "maxAcceptableAge", + "nameLocation": "4168:16:163", + "nodeType": "VariableDeclaration", + "scope": 118475, + "src": "4160:24:163", +>>>>>>> Stashed changes ======= "id": 118460, "mutability": "mutable", @@ -6436,11 +8663,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86544, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4093:7:147", +======= + "id": 118459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4160:7:163", +>>>>>>> Stashed changes ======= "id": 118459, "name": "uint256", @@ -6456,6 +8690,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86547, "mutability": "mutable", @@ -6464,6 +8699,15 @@ "nodeType": "VariableDeclaration", "scope": 86560, "src": "4119:23:147", +======= + "id": 118462, + "mutability": "mutable", + "name": "pythIdForRONUSD", + "nameLocation": "4194:15:163", + "nodeType": "VariableDeclaration", + "scope": 118475, + "src": "4186:23:163", +>>>>>>> Stashed changes ======= "id": 118462, "mutability": "mutable", @@ -6480,11 +8724,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86546, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4119:7:147", +======= + "id": 118461, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4186:7:163", +>>>>>>> Stashed changes ======= "id": 118461, "name": "bytes32", @@ -6499,6 +8750,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4080:63:147" }, @@ -6509,6 +8761,17 @@ "src": "4192:0:147" }, "scope": 87685, +======= + "src": "4147:63:163" + }, + "returnParameters": { + "id": 118467, + "nodeType": "ParameterList", + "parameters": [], + "src": "4259:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "4147:63:163" }, @@ -6525,6 +8788,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86619, "nodeType": "FunctionDefinition", @@ -6534,6 +8798,16 @@ "id": 86618, "nodeType": "Block", "src": "4402:306:147", +======= + "id": 118534, + "nodeType": "FunctionDefinition", + "src": "4379:396:163", + "nodes": [], + "body": { + "id": 118533, + "nodeType": "Block", + "src": "4469:306:163", +>>>>>>> Stashed changes ======= "id": 118534, "nodeType": "FunctionDefinition", @@ -6548,8 +8822,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86569 +======= + 118484 +>>>>>>> Stashed changes ======= 118484 >>>>>>> Stashed changes @@ -6557,6 +8835,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86569, "mutability": "mutable", @@ -6565,6 +8844,15 @@ "nodeType": "VariableDeclaration", "scope": 86618, "src": "4408:20:147", +======= + "id": 118484, + "mutability": "mutable", + "name": "rnfMaxLength", + "nameLocation": "4483:12:163", + "nodeType": "VariableDeclaration", + "scope": 118533, + "src": "4475:20:163", +>>>>>>> Stashed changes ======= "id": 118484, "mutability": "mutable", @@ -6581,11 +8869,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86568, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4408:7:147", +======= + "id": 118483, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4475:7:163", +>>>>>>> Stashed changes ======= "id": 118483, "name": "uint256", @@ -6600,6 +8895,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86571, "initialValue": { @@ -6609,6 +8905,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86399, "src": "4431:13:147", +======= + "id": 118486, + "initialValue": { + "id": 118485, + "name": "_rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118314, + "src": "4498:13:163", +>>>>>>> Stashed changes ======= "id": 118486, "initialValue": { @@ -6625,12 +8931,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4408:36:147" }, { "expression": { "id": 86579, +======= + "src": "4475:36:163" + }, + { + "expression": { + "id": 118494, +>>>>>>> Stashed changes ======= "src": "4475:36:163" }, @@ -6643,6 +8957,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86572, "name": "renewalFees", @@ -6652,6 +8967,16 @@ "src": "4450:11:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", +======= + "id": 118487, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118481, + "src": "4517:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", +>>>>>>> Stashed changes ======= "id": 118487, "name": "renewalFees", @@ -6670,6 +8995,7 @@ "rightHandSide": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86577, "name": "rnfMaxLength", @@ -6677,6 +9003,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86569, "src": "4481:12:147", +======= + "id": 118492, + "name": "rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118484, + "src": "4548:12:163", +>>>>>>> Stashed changes ======= "id": 118492, "name": "rnfMaxLength", @@ -6698,8 +9032,12 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86576, +======= + "id": 118491, +>>>>>>> Stashed changes ======= "id": 118491, >>>>>>> Stashed changes @@ -6708,10 +9046,16 @@ "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4464:16:147", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr_$", +======= + "src": "4531:16:163", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr_$", +>>>>>>> Stashed changes ======= "src": "4531:16:163", "typeDescriptions": { @@ -6721,6 +9065,7 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86574, "nodeType": "UserDefinedTypeName", @@ -6746,6 +9091,32 @@ "src": "4468:12:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", +======= + "id": 118489, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118488, + "name": "RenewalFee", + "nameLocations": [ + "4535:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123317, + "src": "4535:10:163" + }, + "referencedDeclaration": 123317, + "src": "4535:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" + } + }, + "id": 118490, + "nodeType": "ArrayTypeName", + "src": "4535:12:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118489, "nodeType": "UserDefinedTypeName", @@ -6776,8 +9147,12 @@ } } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86578, +======= + "id": 118493, +>>>>>>> Stashed changes ======= "id": 118493, >>>>>>> Stashed changes @@ -6789,6 +9164,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4464:30:147", "tryCall": false, @@ -6810,6 +9186,28 @@ { "assignments": [ 86582 +======= + "src": "4531:30:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" + } + }, + "src": "4517:44:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" + } + }, + "id": 118495, + "nodeType": "ExpressionStatement", + "src": "4517:44:163" + }, + { + "assignments": [ + 118497 +>>>>>>> Stashed changes ======= "src": "4531:30:163", "tryCall": false, @@ -6836,6 +9234,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86582, "mutability": "mutable", @@ -6844,6 +9243,15 @@ "nodeType": "VariableDeclaration", "scope": 86618, "src": "4500:11:147", +======= + "id": 118497, + "mutability": "mutable", + "name": "len", + "nameLocation": "4575:3:163", + "nodeType": "VariableDeclaration", + "scope": 118533, + "src": "4567:11:163", +>>>>>>> Stashed changes ======= "id": 118497, "mutability": "mutable", @@ -6860,11 +9268,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86581, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4500:7:147", +======= + "id": 118496, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4567:7:163", +>>>>>>> Stashed changes ======= "id": 118496, "name": "uint256", @@ -6879,6 +9294,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86583, "nodeType": "VariableDeclarationStatement", @@ -6898,6 +9314,26 @@ { "expression": { "id": 86594, +======= + "id": 118498, + "nodeType": "VariableDeclarationStatement", + "src": "4567:11:163" + }, + { + "body": { + "id": 118531, + "nodeType": "Block", + "src": "4620:151:163", + "statements": [ + { + "id": 118530, + "nodeType": "UncheckedBlock", + "src": "4628:137:163", + "statements": [ + { + "expression": { + "id": 118509, +>>>>>>> Stashed changes ======= "id": 118498, "nodeType": "VariableDeclarationStatement", @@ -6923,6 +9359,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86590, "name": "len", @@ -6930,6 +9367,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86582, "src": "4581:3:147", +======= + "id": 118505, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118497, + "src": "4648:3:163", +>>>>>>> Stashed changes ======= "id": 118505, "name": "len", @@ -6950,8 +9395,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86593, +======= + "id": 118508, +>>>>>>> Stashed changes ======= "id": 118508, >>>>>>> Stashed changes @@ -6960,6 +9409,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86591, "name": "i", @@ -6967,6 +9417,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86585, "src": "4587:1:147", +======= + "id": 118506, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118500, + "src": "4654:1:163", +>>>>>>> Stashed changes ======= "id": 118506, "name": "i", @@ -6984,8 +9442,12 @@ "operator": "+", "rightExpression": { "hexValue": "31", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86592, +======= + "id": 118507, +>>>>>>> Stashed changes ======= "id": 118507, >>>>>>> Stashed changes @@ -6995,8 +9457,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4591:1:147", +======= + "src": "4658:1:163", +>>>>>>> Stashed changes ======= "src": "4658:1:163", >>>>>>> Stashed changes @@ -7006,8 +9472,12 @@ }, "value": "1" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4587:5:147", +======= + "src": "4654:5:163", +>>>>>>> Stashed changes ======= "src": "4654:5:163", >>>>>>> Stashed changes @@ -7016,8 +9486,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4581:11:147", +======= + "src": "4648:11:163", +>>>>>>> Stashed changes ======= "src": "4648:11:163", >>>>>>> Stashed changes @@ -7026,6 +9500,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86595, "nodeType": "ExpressionStatement", @@ -7034,6 +9509,15 @@ { "expression": { "id": 86601, +======= + "id": 118510, + "nodeType": "ExpressionStatement", + "src": "4648:11:163" + }, + { + "expression": { + "id": 118516, +>>>>>>> Stashed changes ======= "id": 118510, "nodeType": "ExpressionStatement", @@ -7050,6 +9534,7 @@ "leftHandSide": { "expression": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86596, "name": "renewalFees", @@ -7070,6 +9555,27 @@ "overloadedDeclarations": [], "referencedDeclaration": 86585, "src": "4614:1:147", +======= + "id": 118511, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118481, + "src": "4669:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" + } + }, + "id": 118513, + "indexExpression": { + "id": 118512, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118500, + "src": "4681:1:163", +>>>>>>> Stashed changes ======= "id": 118511, "name": "renewalFees", @@ -7101,6 +9607,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4602:14:147", "typeDescriptions": { @@ -7109,6 +9616,15 @@ } }, "id": 86599, +======= + "src": "4669:14:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 118514, +>>>>>>> Stashed changes ======= "src": "4669:14:163", "typeDescriptions": { @@ -7122,12 +9638,20 @@ "isLValue": true, "isPure": false, "lValueRequested": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "4617:11:147", "memberName": "labelLength", "nodeType": "MemberAccess", "referencedDeclaration": 91373, "src": "4602:26:147", +======= + "memberLocation": "4684:11:163", + "memberName": "labelLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 123314, + "src": "4669:26:163", +>>>>>>> Stashed changes ======= "memberLocation": "4684:11:163", "memberName": "labelLength", @@ -7143,6 +9667,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86600, "name": "len", @@ -7150,6 +9675,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86582, "src": "4631:3:147", +======= + "id": 118515, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118497, + "src": "4698:3:163", +>>>>>>> Stashed changes ======= "id": 118515, "name": "len", @@ -7163,8 +9696,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4602:32:147", +======= + "src": "4669:32:163", +>>>>>>> Stashed changes ======= "src": "4669:32:163", >>>>>>> Stashed changes @@ -7173,6 +9710,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86602, "nodeType": "ExpressionStatement", @@ -7181,6 +9719,15 @@ { "expression": { "id": 86610, +======= + "id": 118517, + "nodeType": "ExpressionStatement", + "src": "4669:32:163" + }, + { + "expression": { + "id": 118525, +>>>>>>> Stashed changes ======= "id": 118517, "nodeType": "ExpressionStatement", @@ -7197,6 +9744,7 @@ "leftHandSide": { "expression": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86603, "name": "renewalFees", @@ -7217,6 +9765,27 @@ "overloadedDeclarations": [], "referencedDeclaration": 86585, "src": "4656:1:147", +======= + "id": 118518, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118481, + "src": "4711:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory[] memory" + } + }, + "id": 118520, + "indexExpression": { + "id": 118519, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118500, + "src": "4723:1:163", +>>>>>>> Stashed changes ======= "id": 118518, "name": "renewalFees", @@ -7248,6 +9817,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4644:14:147", "typeDescriptions": { @@ -7256,6 +9826,15 @@ } }, "id": 86606, +======= + "src": "4711:14:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 118521, +>>>>>>> Stashed changes ======= "src": "4711:14:163", "typeDescriptions": { @@ -7269,12 +9848,20 @@ "isLValue": true, "isPure": false, "lValueRequested": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "4659:3:147", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 91375, "src": "4644:18:147", +======= + "memberLocation": "4726:3:163", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 123316, + "src": "4711:18:163", +>>>>>>> Stashed changes ======= "memberLocation": "4726:3:163", "memberName": "fee", @@ -7291,6 +9878,7 @@ "operator": "=", "rightHandSide": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86607, "name": "_rnFee", @@ -7298,6 +9886,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86414, "src": "4665:6:147", +======= + "id": 118522, + "name": "_rnFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118329, + "src": "4732:6:163", +>>>>>>> Stashed changes ======= "id": 118522, "name": "_rnFee", @@ -7311,6 +9907,7 @@ "typeString": "mapping(uint256 => uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86609, "indexExpression": { @@ -7320,6 +9917,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86582, "src": "4672:3:147", +======= + "id": 118524, + "indexExpression": { + "id": 118523, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118497, + "src": "4739:3:163", +>>>>>>> Stashed changes ======= "id": 118524, "indexExpression": { @@ -7340,8 +9947,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4665:11:147", +======= + "src": "4732:11:163", +>>>>>>> Stashed changes ======= "src": "4732:11:163", >>>>>>> Stashed changes @@ -7350,8 +9961,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4644:32:147", +======= + "src": "4711:32:163", +>>>>>>> Stashed changes ======= "src": "4711:32:163", >>>>>>> Stashed changes @@ -7360,6 +9975,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86611, "nodeType": "ExpressionStatement", @@ -7368,6 +9984,15 @@ { "expression": { "id": 86613, +======= + "id": 118526, + "nodeType": "ExpressionStatement", + "src": "4711:32:163" + }, + { + "expression": { + "id": 118528, +>>>>>>> Stashed changes ======= "id": 118526, "nodeType": "ExpressionStatement", @@ -7384,6 +10009,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4686:3:147", "subExpression": { @@ -7393,6 +10019,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86585, "src": "4688:1:147", +======= + "src": "4753:3:163", + "subExpression": { + "id": 118527, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118500, + "src": "4755:1:163", +>>>>>>> Stashed changes ======= "src": "4753:3:163", "subExpression": { @@ -7413,10 +10049,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86614, "nodeType": "ExpressionStatement", "src": "4686:3:147" +======= + "id": 118529, + "nodeType": "ExpressionStatement", + "src": "4753:3:163" +>>>>>>> Stashed changes ======= "id": 118529, "nodeType": "ExpressionStatement", @@ -7432,8 +10074,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86589, +======= + "id": 118504, +>>>>>>> Stashed changes ======= "id": 118504, >>>>>>> Stashed changes @@ -7442,6 +10088,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86587, "name": "i", @@ -7449,6 +10096,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86585, "src": "4534:1:147", +======= + "id": 118502, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118500, + "src": "4601:1:163", +>>>>>>> Stashed changes ======= "id": 118502, "name": "i", @@ -7465,6 +10120,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86588, "name": "rnfMaxLength", @@ -7472,6 +10128,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86569, "src": "4538:12:147", +======= + "id": 118503, + "name": "rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118484, + "src": "4605:12:163", +>>>>>>> Stashed changes ======= "id": 118503, "name": "rnfMaxLength", @@ -7485,8 +10149,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4534:16:147", +======= + "src": "4601:16:163", +>>>>>>> Stashed changes ======= "src": "4601:16:163", >>>>>>> Stashed changes @@ -7495,11 +10163,18 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86617, "initializationExpression": { "assignments": [ 86585 +======= + "id": 118532, + "initializationExpression": { + "assignments": [ + 118500 +>>>>>>> Stashed changes ======= "id": 118532, "initializationExpression": { @@ -7510,6 +10185,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86585, "mutability": "mutable", @@ -7518,6 +10194,15 @@ "nodeType": "VariableDeclaration", "scope": 86617, "src": "4523:9:147", +======= + "id": 118500, + "mutability": "mutable", + "name": "i", + "nameLocation": "4598:1:163", + "nodeType": "VariableDeclaration", + "scope": 118532, + "src": "4590:9:163", +>>>>>>> Stashed changes ======= "id": 118500, "mutability": "mutable", @@ -7534,11 +10219,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86584, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4523:7:147", +======= + "id": 118499, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4590:7:163", +>>>>>>> Stashed changes ======= "id": 118499, "name": "uint256", @@ -7553,6 +10245,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86586, "nodeType": "VariableDeclarationStatement", @@ -7560,6 +10253,14 @@ }, "nodeType": "ForStatement", "src": "4518:186:147" +======= + "id": 118501, + "nodeType": "VariableDeclarationStatement", + "src": "4590:9:163" + }, + "nodeType": "ForStatement", + "src": "4585:186:163" +>>>>>>> Stashed changes ======= "id": 118501, "nodeType": "VariableDeclarationStatement", @@ -7572,6 +10273,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91500 ], @@ -7579,6 +10281,14 @@ "id": 86561, "nodeType": "StructuredDocumentation", "src": "4268:41:147", +======= + 123442 + ], + "documentation": { + "id": 118476, + "nodeType": "StructuredDocumentation", + "src": "4335:41:163", +>>>>>>> Stashed changes ======= 123442 ], @@ -7594,6 +10304,7 @@ "kind": "function", "modifiers": [], "name": "getRenewalFeeByLengths", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "4321:22:147", "parameters": { @@ -7604,6 +10315,17 @@ }, "returnParameters": { "id": 86567, +======= + "nameLocation": "4388:22:163", + "parameters": { + "id": 118477, + "nodeType": "ParameterList", + "parameters": [], + "src": "4410:2:163" + }, + "returnParameters": { + "id": 118482, +>>>>>>> Stashed changes ======= "nameLocation": "4388:22:163", "parameters": { @@ -7619,6 +10341,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86566, "mutability": "mutable", @@ -7631,6 +10354,19 @@ "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_memory_ptr_$dyn_memory_ptr", +======= + "id": 118481, + "mutability": "mutable", + "name": "renewalFees", + "nameLocation": "4456:11:163", + "nodeType": "VariableDeclaration", + "scope": 118534, + "src": "4436:31:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_memory_ptr_$dyn_memory_ptr", +>>>>>>> Stashed changes ======= "id": 118481, "mutability": "mutable", @@ -7648,6 +10384,7 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86564, "nodeType": "UserDefinedTypeName", @@ -7673,6 +10410,32 @@ "src": "4369:12:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", +======= + "id": 118479, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118478, + "name": "RenewalFee", + "nameLocations": [ + "4436:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123317, + "src": "4436:10:163" + }, + "referencedDeclaration": 123317, + "src": "4436:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" + } + }, + "id": 118480, + "nodeType": "ArrayTypeName", + "src": "4436:12:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118479, "nodeType": "UserDefinedTypeName", @@ -7705,10 +10468,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4368:33:147" }, "scope": 87685, +======= + "src": "4435:33:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "4435:33:163" }, @@ -7719,6 +10488,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86635, "nodeType": "FunctionDefinition", @@ -7728,6 +10498,16 @@ "id": 86634, "nodeType": "Block", "src": "4861:47:147", +======= + "id": 118550, + "nodeType": "FunctionDefinition", + "src": "4823:152:163", + "nodes": [], + "body": { + "id": 118549, + "nodeType": "Block", + "src": "4928:47:163", +>>>>>>> Stashed changes ======= "id": 118550, "nodeType": "FunctionDefinition", @@ -7744,6 +10524,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86631, "name": "renewalFees", @@ -7753,6 +10534,16 @@ "src": "4891:11:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", +======= + "id": 118546, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118539, + "src": "4958:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", +>>>>>>> Stashed changes ======= "id": 118546, "name": "renewalFees", @@ -7770,6 +10561,7 @@ "expression": { "argumentTypes": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" @@ -7787,6 +10579,24 @@ } }, "id": 86632, +======= + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" + } + ], + "id": 118545, + "name": "_setRenewalFeeByLengths", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119372, + "src": "4934:23:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr_$returns$__$", + "typeString": "function (struct INSDomainPrice.RenewalFee calldata[] calldata)" + } + }, + "id": 118547, +>>>>>>> Stashed changes ======= "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" @@ -7813,8 +10623,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4867:36:147", +======= + "src": "4934:36:163", +>>>>>>> Stashed changes ======= "src": "4934:36:163", >>>>>>> Stashed changes @@ -7824,10 +10638,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86633, "nodeType": "ExpressionStatement", "src": "4867:36:147" +======= + "id": 118548, + "nodeType": "ExpressionStatement", + "src": "4934:36:163" +>>>>>>> Stashed changes ======= "id": 118548, "nodeType": "ExpressionStatement", @@ -7837,6 +10657,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91508 ], @@ -7844,6 +10665,14 @@ "id": 86620, "nodeType": "StructuredDocumentation", "src": "4712:41:147", +======= + 123450 + ], + "documentation": { + "id": 118535, + "nodeType": "StructuredDocumentation", + "src": "4779:41:163", +>>>>>>> Stashed changes ======= 123450 ], @@ -7861,6 +10690,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86627, "name": "DEFAULT_ADMIN_ROLE", @@ -7868,6 +10698,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 68920, "src": "4841:18:147", +======= + "id": 118542, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99838, + "src": "4908:18:163", +>>>>>>> Stashed changes ======= "id": 118542, "name": "DEFAULT_ADMIN_ROLE", @@ -7882,6 +10720,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86628, "kind": "modifierInvocation", @@ -7903,6 +10742,28 @@ "nameLocation": "4765:22:147", "parameters": { "id": 86625, +======= + "id": 118543, + "kind": "modifierInvocation", + "modifierName": { + "id": 118541, + "name": "onlyRole", + "nameLocations": [ + "4899:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "4899:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "4899:28:163" + } + ], + "name": "setRenewalFeeByLengths", + "nameLocation": "4832:22:163", + "parameters": { + "id": 118540, +>>>>>>> Stashed changes ======= "id": 118543, "kind": "modifierInvocation", @@ -7929,6 +10790,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86624, "mutability": "mutable", @@ -7941,6 +10803,19 @@ "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", +======= + "id": 118539, + "mutability": "mutable", + "name": "renewalFees", + "nameLocation": "4877:11:163", + "nodeType": "VariableDeclaration", + "scope": 118550, + "src": "4855:33:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", +>>>>>>> Stashed changes ======= "id": 118539, "mutability": "mutable", @@ -7958,6 +10833,7 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86622, "nodeType": "UserDefinedTypeName", @@ -7983,6 +10859,32 @@ "src": "4788:12:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", +======= + "id": 118537, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118536, + "name": "RenewalFee", + "nameLocations": [ + "4855:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123317, + "src": "4855:10:163" + }, + "referencedDeclaration": 123317, + "src": "4855:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" + } + }, + "id": 118538, + "nodeType": "ArrayTypeName", + "src": "4855:12:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118537, "nodeType": "UserDefinedTypeName", @@ -8015,6 +10917,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "4787:35:147" }, @@ -8025,6 +10928,17 @@ "src": "4861:0:147" }, "scope": 87685, +======= + "src": "4854:35:163" + }, + "returnParameters": { + "id": 118544, + "nodeType": "ParameterList", + "parameters": [], + "src": "4928:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "4854:35:163" }, @@ -8041,6 +10955,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86644, "nodeType": "FunctionDefinition", @@ -8050,6 +10965,16 @@ "id": 86643, "nodeType": "Block", "src": "5017:27:147", +======= + "id": 118559, + "nodeType": "FunctionDefinition", + "src": "5023:88:163", + "nodes": [], + "body": { + "id": 118558, + "nodeType": "Block", + "src": "5084:27:163", +>>>>>>> Stashed changes ======= "id": 118559, "nodeType": "FunctionDefinition", @@ -8064,6 +10989,7 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86641, "name": "_taxRatio", @@ -8071,6 +10997,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86396, "src": "5030:9:147", +======= + "id": 118556, + "name": "_taxRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118311, + "src": "5097:9:163", +>>>>>>> Stashed changes ======= "id": 118556, "name": "_taxRatio", @@ -8084,11 +11018,18 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "functionReturnParameters": 86640, "id": 86642, "nodeType": "Return", "src": "5023:16:147" +======= + "functionReturnParameters": 118555, + "id": 118557, + "nodeType": "Return", + "src": "5090:16:163" +>>>>>>> Stashed changes ======= "functionReturnParameters": 118555, "id": 118557, @@ -8099,6 +11040,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91514 ], @@ -8106,6 +11048,14 @@ "id": 86636, "nodeType": "StructuredDocumentation", "src": "4912:41:147", +======= + 123456 + ], + "documentation": { + "id": 118551, + "nodeType": "StructuredDocumentation", + "src": "4979:41:163", +>>>>>>> Stashed changes ======= 123456 ], @@ -8121,6 +11071,7 @@ "kind": "function", "modifiers": [], "name": "getTaxRatio", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "4965:11:147", "parameters": { @@ -8131,6 +11082,17 @@ }, "returnParameters": { "id": 86640, +======= + "nameLocation": "5032:11:163", + "parameters": { + "id": 118552, + "nodeType": "ParameterList", + "parameters": [], + "src": "5043:2:163" + }, + "returnParameters": { + "id": 118555, +>>>>>>> Stashed changes ======= "nameLocation": "5032:11:163", "parameters": { @@ -8146,6 +11108,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86639, "mutability": "mutable", @@ -8154,6 +11117,15 @@ "nodeType": "VariableDeclaration", "scope": 86644, "src": "5002:13:147", +======= + "id": 118554, + "mutability": "mutable", + "name": "ratio", + "nameLocation": "5077:5:163", + "nodeType": "VariableDeclaration", + "scope": 118559, + "src": "5069:13:163", +>>>>>>> Stashed changes ======= "id": 118554, "mutability": "mutable", @@ -8170,11 +11142,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86638, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5002:7:147", +======= + "id": 118553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5069:7:163", +>>>>>>> Stashed changes ======= "id": 118553, "name": "uint256", @@ -8189,10 +11168,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5001:15:147" }, "scope": 87685, +======= + "src": "5068:15:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "5068:15:163" }, @@ -8203,6 +11188,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86658, "nodeType": "FunctionDefinition", @@ -8212,6 +11198,16 @@ "id": 86657, "nodeType": "Block", "src": "5166:30:147", +======= + "id": 118573, + "nodeType": "FunctionDefinition", + "src": "5159:104:163", + "nodes": [], + "body": { + "id": 118572, + "nodeType": "Block", + "src": "5233:30:163", +>>>>>>> Stashed changes ======= "id": 118573, "nodeType": "FunctionDefinition", @@ -8228,6 +11224,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86654, "name": "ratio", @@ -8235,6 +11232,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86647, "src": "5185:5:147", +======= + "id": 118569, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118562, + "src": "5252:5:163", +>>>>>>> Stashed changes ======= "id": 118569, "name": "ratio", @@ -8256,6 +11261,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86653, "name": "_setTaxRatio", @@ -8263,6 +11269,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87505, "src": "5172:12:147", +======= + "id": 118568, + "name": "_setTaxRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119267, + "src": "5239:12:163", +>>>>>>> Stashed changes ======= "id": 118568, "name": "_setTaxRatio", @@ -8276,8 +11290,12 @@ "typeString": "function (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86655, +======= + "id": 118570, +>>>>>>> Stashed changes ======= "id": 118570, >>>>>>> Stashed changes @@ -8289,8 +11307,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5172:19:147", +======= + "src": "5239:19:163", +>>>>>>> Stashed changes ======= "src": "5239:19:163", >>>>>>> Stashed changes @@ -8300,10 +11322,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86656, "nodeType": "ExpressionStatement", "src": "5172:19:147" +======= + "id": 118571, + "nodeType": "ExpressionStatement", + "src": "5239:19:163" +>>>>>>> Stashed changes ======= "id": 118571, "nodeType": "ExpressionStatement", @@ -8313,6 +11341,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91520 ], @@ -8320,6 +11349,14 @@ "id": 86645, "nodeType": "StructuredDocumentation", "src": "5048:41:147", +======= + 123462 + ], + "documentation": { + "id": 118560, + "nodeType": "StructuredDocumentation", + "src": "5115:41:163", +>>>>>>> Stashed changes ======= 123462 ], @@ -8337,6 +11374,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86650, "name": "DEFAULT_ADMIN_ROLE", @@ -8344,6 +11382,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 68920, "src": "5146:18:147", +======= + "id": 118565, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99838, + "src": "5213:18:163", +>>>>>>> Stashed changes ======= "id": 118565, "name": "DEFAULT_ADMIN_ROLE", @@ -8358,6 +11404,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86651, "kind": "modifierInvocation", @@ -8379,6 +11426,28 @@ "nameLocation": "5101:11:147", "parameters": { "id": 86648, +======= + "id": 118566, + "kind": "modifierInvocation", + "modifierName": { + "id": 118564, + "name": "onlyRole", + "nameLocations": [ + "5204:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "5204:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "5204:28:163" + } + ], + "name": "setTaxRatio", + "nameLocation": "5168:11:163", + "parameters": { + "id": 118563, +>>>>>>> Stashed changes ======= "id": 118566, "kind": "modifierInvocation", @@ -8405,6 +11474,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86647, "mutability": "mutable", @@ -8413,6 +11483,15 @@ "nodeType": "VariableDeclaration", "scope": 86658, "src": "5113:13:147", +======= + "id": 118562, + "mutability": "mutable", + "name": "ratio", + "nameLocation": "5188:5:163", + "nodeType": "VariableDeclaration", + "scope": 118573, + "src": "5180:13:163", +>>>>>>> Stashed changes ======= "id": 118562, "mutability": "mutable", @@ -8429,11 +11508,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86646, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5113:7:147", +======= + "id": 118561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5180:7:163", +>>>>>>> Stashed changes ======= "id": 118561, "name": "uint256", @@ -8448,6 +11534,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5112:15:147" }, @@ -8458,6 +11545,17 @@ "src": "5166:0:147" }, "scope": 87685, +======= + "src": "5179:15:163" + }, + "returnParameters": { + "id": 118567, + "nodeType": "ParameterList", + "parameters": [], + "src": "5233:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "5179:15:163" }, @@ -8474,6 +11572,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86668, "nodeType": "FunctionDefinition", @@ -8483,6 +11582,16 @@ "id": 86667, "nodeType": "Block", "src": "5340:31:147", +======= + "id": 118583, + "nodeType": "FunctionDefinition", + "src": "5311:127:163", + "nodes": [], + "body": { + "id": 118582, + "nodeType": "Block", + "src": "5407:31:163", +>>>>>>> Stashed changes ======= "id": 118583, "nodeType": "FunctionDefinition", @@ -8497,6 +11606,7 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86665, "name": "_dpDownScaler", @@ -8513,6 +11623,23 @@ "id": 86666, "nodeType": "Return", "src": "5346:20:147" +======= + "id": 118580, + "name": "_dpDownScaler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118324, + "src": "5420:13:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", + "typeString": "struct PeriodScaler storage ref" + } + }, + "functionReturnParameters": 118579, + "id": 118581, + "nodeType": "Return", + "src": "5413:20:163" +>>>>>>> Stashed changes ======= "id": 118580, "name": "_dpDownScaler", @@ -8534,6 +11661,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91485 ], @@ -8541,6 +11669,14 @@ "id": 86659, "nodeType": "StructuredDocumentation", "src": "5200:41:147", +======= + 123427 + ], + "documentation": { + "id": 118574, + "nodeType": "StructuredDocumentation", + "src": "5267:41:163", +>>>>>>> Stashed changes ======= 123427 ], @@ -8556,6 +11692,7 @@ "kind": "function", "modifiers": [], "name": "getScaleDownRuleForDomainPrice", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "5253:30:147", "parameters": { @@ -8566,6 +11703,17 @@ }, "returnParameters": { "id": 86664, +======= + "nameLocation": "5320:30:163", + "parameters": { + "id": 118575, + "nodeType": "ParameterList", + "parameters": [], + "src": "5350:2:163" + }, + "returnParameters": { + "id": 118579, +>>>>>>> Stashed changes ======= "nameLocation": "5320:30:163", "parameters": { @@ -8581,6 +11729,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86663, "mutability": "mutable", @@ -8612,6 +11761,38 @@ "src": "5309:12:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", +======= + "id": 118578, + "mutability": "mutable", + "name": "scaleRule", + "nameLocation": "5396:9:163", + "nodeType": "VariableDeclaration", + "scope": 118583, + "src": "5376:29:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_memory_ptr", + "typeString": "struct PeriodScaler" + }, + "typeName": { + "id": 118577, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118576, + "name": "PeriodScaler", + "nameLocations": [ + "5376:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125607, + "src": "5376:12:163" + }, + "referencedDeclaration": 125607, + "src": "5376:12:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118578, "mutability": "mutable", @@ -8650,10 +11831,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5308:31:147" }, "scope": 87685, +======= + "src": "5375:31:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "5375:31:163" }, @@ -8664,6 +11851,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86683, "nodeType": "FunctionDefinition", @@ -8673,6 +11861,16 @@ "id": 86682, "nodeType": "Block", "src": "5530:46:147", +======= + "id": 118598, + "nodeType": "FunctionDefinition", + "src": "5486:157:163", + "nodes": [], + "body": { + "id": 118597, + "nodeType": "Block", + "src": "5597:46:163", +>>>>>>> Stashed changes ======= "id": 118598, "nodeType": "FunctionDefinition", @@ -8689,6 +11887,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86679, "name": "scaleRule", @@ -8698,6 +11897,16 @@ "src": "5561:9:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", +======= + "id": 118594, + "name": "scaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118587, + "src": "5628:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", +>>>>>>> Stashed changes ======= "id": 118594, "name": "scaleRule", @@ -8715,6 +11924,7 @@ "expression": { "argumentTypes": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_struct$_PeriodScaler_$93662_calldata_ptr", "typeString": "struct PeriodScaler calldata" @@ -8732,6 +11942,24 @@ } }, "id": 86680, +======= + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + ], + "id": 118593, + "name": "_setDomainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119288, + "src": "5603:24:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_PeriodScaler_$125607_calldata_ptr_$returns$__$", + "typeString": "function (struct PeriodScaler calldata)" + } + }, + "id": 118595, +>>>>>>> Stashed changes ======= "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", "typeString": "struct PeriodScaler calldata" @@ -8758,8 +11986,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5536:35:147", +======= + "src": "5603:35:163", +>>>>>>> Stashed changes ======= "src": "5603:35:163", >>>>>>> Stashed changes @@ -8769,10 +12001,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86681, "nodeType": "ExpressionStatement", "src": "5536:35:147" +======= + "id": 118596, + "nodeType": "ExpressionStatement", + "src": "5603:35:163" +>>>>>>> Stashed changes ======= "id": 118596, "nodeType": "ExpressionStatement", @@ -8782,6 +12020,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91492 ], @@ -8789,6 +12028,14 @@ "id": 86669, "nodeType": "StructuredDocumentation", "src": "5375:41:147", +======= + 123434 + ], + "documentation": { + "id": 118584, + "nodeType": "StructuredDocumentation", + "src": "5442:41:163", +>>>>>>> Stashed changes ======= 123434 ], @@ -8806,6 +12053,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86675, "name": "DEFAULT_ADMIN_ROLE", @@ -8813,6 +12061,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 68920, "src": "5510:18:147", +======= + "id": 118590, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99838, + "src": "5577:18:163", +>>>>>>> Stashed changes ======= "id": 118590, "name": "DEFAULT_ADMIN_ROLE", @@ -8827,6 +12083,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86676, "kind": "modifierInvocation", @@ -8848,6 +12105,28 @@ "nameLocation": "5428:30:147", "parameters": { "id": 86673, +======= + "id": 118591, + "kind": "modifierInvocation", + "modifierName": { + "id": 118589, + "name": "onlyRole", + "nameLocations": [ + "5568:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "5568:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "5568:28:163" + } + ], + "name": "setScaleDownRuleForDomainPrice", + "nameLocation": "5495:30:163", + "parameters": { + "id": 118588, +>>>>>>> Stashed changes ======= "id": 118591, "kind": "modifierInvocation", @@ -8874,6 +12153,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86672, "mutability": "mutable", @@ -8905,6 +12185,38 @@ "src": "5459:12:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", +======= + "id": 118587, + "mutability": "mutable", + "name": "scaleRule", + "nameLocation": "5548:9:163", + "nodeType": "VariableDeclaration", + "scope": 118598, + "src": "5526:31:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler" + }, + "typeName": { + "id": 118586, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118585, + "name": "PeriodScaler", + "nameLocations": [ + "5526:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125607, + "src": "5526:12:163" + }, + "referencedDeclaration": 125607, + "src": "5526:12:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", +>>>>>>> Stashed changes ======= "id": 118587, "mutability": "mutable", @@ -8943,6 +12255,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5458:33:147" }, @@ -8953,6 +12266,17 @@ "src": "5530:0:147" }, "scope": 87685, +======= + "src": "5525:33:163" + }, + "returnParameters": { + "id": 118592, + "nodeType": "ParameterList", + "parameters": [], + "src": "5597:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "5525:33:163" }, @@ -8969,6 +12293,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86710, "nodeType": "FunctionDefinition", @@ -8978,6 +12303,16 @@ "id": 86709, "nodeType": "Block", "src": "5719:131:147", +======= + "id": 118625, + "nodeType": "FunctionDefinition", + "src": "5691:226:163", + "nodes": [], + "body": { + "id": 118624, + "nodeType": "Block", + "src": "5786:131:163", +>>>>>>> Stashed changes ======= "id": 118625, "nodeType": "FunctionDefinition", @@ -8992,8 +12327,12 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86697, +======= + "id": 118612, +>>>>>>> Stashed changes ======= "id": 118612, >>>>>>> Stashed changes @@ -9002,6 +12341,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86691, "name": "usdFee", @@ -9009,6 +12349,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86689, "src": "5725:6:147", +======= + "id": 118606, + "name": "usdFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118604, + "src": "5792:6:163", +>>>>>>> Stashed changes ======= "id": 118606, "name": "usdFee", @@ -9026,6 +12374,7 @@ "operator": "=", "rightHandSide": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86692, "name": "_rnFeeOverriding", @@ -9033,6 +12382,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86425, "src": "5734:16:147", +======= + "id": 118607, + "name": "_rnFeeOverriding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118340, + "src": "5801:16:163", +>>>>>>> Stashed changes ======= "id": 118607, "name": "_rnFeeOverriding", @@ -9046,8 +12403,12 @@ "typeString": "mapping(bytes32 => uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86696, +======= + "id": 118611, +>>>>>>> Stashed changes ======= "id": 118611, >>>>>>> Stashed changes @@ -9056,6 +12417,7 @@ "expression": { "argumentTypes": [], "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86693, "name": "label", @@ -9063,6 +12425,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86686, "src": "5751:5:147", +======= + "id": 118608, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118601, + "src": "5818:5:163", +>>>>>>> Stashed changes ======= "id": 118608, "name": "label", @@ -9076,8 +12446,12 @@ "typeString": "string calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86694, +======= + "id": 118609, +>>>>>>> Stashed changes ======= "id": 118609, >>>>>>> Stashed changes @@ -9085,12 +12459,20 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "5757:9:147", "memberName": "hashLabel", "nodeType": "MemberAccess", "referencedDeclaration": 93096, "src": "5751:15:147", +======= + "memberLocation": "5824:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "5818:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "5824:9:163", "memberName": "hashLabel", @@ -9103,8 +12485,12 @@ "typeString": "function (string memory) pure returns (bytes32)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86695, +======= + "id": 118610, +>>>>>>> Stashed changes ======= "id": 118610, >>>>>>> Stashed changes @@ -9116,8 +12502,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5751:17:147", +======= + "src": "5818:17:163", +>>>>>>> Stashed changes ======= "src": "5818:17:163", >>>>>>> Stashed changes @@ -9132,8 +12522,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5734:35:147", +======= + "src": "5801:35:163", +>>>>>>> Stashed changes ======= "src": "5801:35:163", >>>>>>> Stashed changes @@ -9142,8 +12536,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5725:44:147", +======= + "src": "5792:44:163", +>>>>>>> Stashed changes ======= "src": "5792:44:163", >>>>>>> Stashed changes @@ -9152,10 +12550,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86698, "nodeType": "ExpressionStatement", "src": "5725:44:147" +======= + "id": 118613, + "nodeType": "ExpressionStatement", + "src": "5792:44:163" +>>>>>>> Stashed changes ======= "id": 118613, "nodeType": "ExpressionStatement", @@ -9168,8 +12572,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86701, +======= + "id": 118616, +>>>>>>> Stashed changes ======= "id": 118616, >>>>>>> Stashed changes @@ -9178,6 +12586,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86699, "name": "usdFee", @@ -9185,6 +12594,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86689, "src": "5779:6:147", +======= + "id": 118614, + "name": "usdFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118604, + "src": "5846:6:163", +>>>>>>> Stashed changes ======= "id": 118614, "name": "usdFee", @@ -9202,8 +12619,12 @@ "operator": "==", "rightExpression": { "hexValue": "30", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86700, +======= + "id": 118615, +>>>>>>> Stashed changes ======= "id": 118615, >>>>>>> Stashed changes @@ -9213,8 +12634,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5789:1:147", +======= + "src": "5856:1:163", +>>>>>>> Stashed changes ======= "src": "5856:1:163", >>>>>>> Stashed changes @@ -9224,8 +12649,12 @@ }, "value": "0" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5779:11:147", +======= + "src": "5846:11:163", +>>>>>>> Stashed changes ======= "src": "5846:11:163", >>>>>>> Stashed changes @@ -9234,10 +12663,16 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86705, "nodeType": "IfStatement", "src": "5775:50:147", +======= + "id": 118620, + "nodeType": "IfStatement", + "src": "5842:50:163", +>>>>>>> Stashed changes ======= "id": 118620, "nodeType": "IfStatement", @@ -9248,6 +12683,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86702, "name": "RenewalFeeIsNotOverriden", @@ -9255,6 +12691,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91361, "src": "5799:24:147", +======= + "id": 118617, + "name": "RenewalFeeIsNotOverriden", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123302, + "src": "5866:24:163", +>>>>>>> Stashed changes ======= "id": 118617, "name": "RenewalFeeIsNotOverriden", @@ -9268,8 +12712,12 @@ "typeString": "function () pure" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86703, +======= + "id": 118618, +>>>>>>> Stashed changes ======= "id": 118618, >>>>>>> Stashed changes @@ -9281,8 +12729,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5799:26:147", +======= + "src": "5866:26:163", +>>>>>>> Stashed changes ======= "src": "5866:26:163", >>>>>>> Stashed changes @@ -9292,10 +12744,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86704, "nodeType": "RevertStatement", "src": "5792:33:147" +======= + "id": 118619, + "nodeType": "RevertStatement", + "src": "5859:33:163" +>>>>>>> Stashed changes ======= "id": 118619, "nodeType": "RevertStatement", @@ -9305,8 +12763,12 @@ }, { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86707, +======= + "id": 118622, +>>>>>>> Stashed changes ======= "id": 118622, >>>>>>> Stashed changes @@ -9317,6 +12779,7 @@ "nodeType": "UnaryOperation", "operator": "~", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5838:7:147", "subExpression": { @@ -9326,6 +12789,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86689, "src": "5839:6:147", +======= + "src": "5905:7:163", + "subExpression": { + "id": 118621, + "name": "usdFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118604, + "src": "5906:6:163", +>>>>>>> Stashed changes ======= "src": "5905:7:163", "subExpression": { @@ -9346,11 +12819,18 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "functionReturnParameters": 86690, "id": 86708, "nodeType": "Return", "src": "5831:14:147" +======= + "functionReturnParameters": 118605, + "id": 118623, + "nodeType": "Return", + "src": "5898:14:163" +>>>>>>> Stashed changes ======= "functionReturnParameters": 118605, "id": 118623, @@ -9361,6 +12841,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91560 ], @@ -9368,6 +12849,14 @@ "id": 86684, "nodeType": "StructuredDocumentation", "src": "5580:41:147", +======= + 123503 + ], + "documentation": { + "id": 118599, + "nodeType": "StructuredDocumentation", + "src": "5647:41:163", +>>>>>>> Stashed changes ======= 123503 ], @@ -9383,10 +12872,16 @@ "kind": "function", "modifiers": [], "name": "getOverriddenRenewalFee", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "5633:23:147", "parameters": { "id": 86687, +======= + "nameLocation": "5700:23:163", + "parameters": { + "id": 118602, +>>>>>>> Stashed changes ======= "nameLocation": "5700:23:163", "parameters": { @@ -9396,6 +12891,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86686, "mutability": "mutable", @@ -9404,6 +12900,15 @@ "nodeType": "VariableDeclaration", "scope": 86710, "src": "5657:21:147", +======= + "id": 118601, + "mutability": "mutable", + "name": "label", + "nameLocation": "5740:5:163", + "nodeType": "VariableDeclaration", + "scope": 118625, + "src": "5724:21:163", +>>>>>>> Stashed changes ======= "id": 118601, "mutability": "mutable", @@ -9420,11 +12925,18 @@ "typeString": "string" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86685, "name": "string", "nodeType": "ElementaryTypeName", "src": "5657:6:147", +======= + "id": 118600, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5724:6:163", +>>>>>>> Stashed changes ======= "id": 118600, "name": "string", @@ -9439,11 +12951,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5656:23:147" }, "returnParameters": { "id": 86690, +======= + "src": "5723:23:163" + }, + "returnParameters": { + "id": 118605, +>>>>>>> Stashed changes ======= "src": "5723:23:163" }, @@ -9454,6 +12973,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86689, "mutability": "mutable", @@ -9462,6 +12982,15 @@ "nodeType": "VariableDeclaration", "scope": 86710, "src": "5703:14:147", +======= + "id": 118604, + "mutability": "mutable", + "name": "usdFee", + "nameLocation": "5778:6:163", + "nodeType": "VariableDeclaration", + "scope": 118625, + "src": "5770:14:163", +>>>>>>> Stashed changes ======= "id": 118604, "mutability": "mutable", @@ -9478,11 +13007,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5703:7:147", +======= + "id": 118603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5770:7:163", +>>>>>>> Stashed changes ======= "id": 118603, "name": "uint256", @@ -9497,10 +13033,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "5702:16:147" }, "scope": 87685, +======= + "src": "5769:16:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "5769:16:163" }, @@ -9511,6 +13053,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86737, "nodeType": "FunctionDefinition", @@ -9844,6 +13387,16 @@ "id": 86810, "nodeType": "Block", "src": "6287:441:147", +======= + "id": 118655, + "nodeType": "FunctionDefinition", + "src": "5965:229:163", + "nodes": [], + "body": { + "id": 118654, + "nodeType": "Block", + "src": "6049:145:163", +>>>>>>> Stashed changes ======= "id": 118655, "nodeType": "FunctionDefinition", @@ -9858,8 +13411,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86751 +======= + 118635 +>>>>>>> Stashed changes ======= 118635 >>>>>>> Stashed changes @@ -9867,6 +13424,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86751, "mutability": "mutable", @@ -10260,6 +13818,392 @@ "nodeType": "VariableDeclaration", "scope": 118728, "src": "6384:14:163", +>>>>>>> Stashed changes +======= + "id": 118635, + "mutability": "mutable", + "name": "tierValue", + "nameLocation": "6061:9:163", + "nodeType": "VariableDeclaration", + "scope": 118654, + "src": "6055:15:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 118634, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6055:5:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 118641, + "initialValue": { + "baseExpression": { + "id": 118636, + "name": "_tierOverriding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118345, + "src": "6073:15:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint8_$", + "typeString": "mapping(bytes32 => uint8)" + } + }, + "id": 118640, + "indexExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 118637, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118628, + "src": "6089:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + "id": 118638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6095:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "6089:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes32)" + } + }, + "id": 118639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6089:17:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6073:34:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6055:52:163" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 118644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 118642, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118635, + "src": "6117:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 118643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6130:1:163", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6117:14:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 118648, + "nodeType": "IfStatement", + "src": "6113:47:163", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 118645, + "name": "TierIsNotOverriden", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123304, + "src": "6140:18:163", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 118646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6140:20:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 118647, + "nodeType": "RevertStatement", + "src": "6133:27:163" + } + }, + { + "expression": { + "arguments": [ + { + "id": 118651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "~", + "prefix": true, + "src": "6178:10:163", + "subExpression": { + "id": 118650, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118635, + "src": "6179:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 118649, + "name": "Tier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123312, + "src": "6173:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" + } + }, + "id": 118652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6173:16:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "functionReturnParameters": 118633, + "id": 118653, + "nodeType": "Return", + "src": "6166:23:163" + } + ] + }, + "baseFunctions": [ + 123512 + ], + "documentation": { + "id": 118626, + "nodeType": "StructuredDocumentation", + "src": "5921:41:163", + "text": " @inheritdoc INSDomainPrice" + }, + "functionSelector": "7e32146a", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getOverriddenTier", + "nameLocation": "5974:17:163", + "parameters": { + "id": 118629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118628, + "mutability": "mutable", + "name": "label", + "nameLocation": "6008:5:163", + "nodeType": "VariableDeclaration", + "scope": 118655, + "src": "5992:21:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 118627, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5992:6:163", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5991:23:163" + }, + "returnParameters": { + "id": 118633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118632, + "mutability": "mutable", + "name": "tier", + "nameLocation": "6043:4:163", + "nodeType": "VariableDeclaration", + "scope": 118655, + "src": "6038:9:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + }, + "typeName": { + "id": 118631, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 118630, + "name": "Tier", + "nameLocations": [ + "6038:4:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123312, + "src": "6038:4:163" + }, + "referencedDeclaration": 123312, + "src": "6038:4:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "visibility": "internal" + } + ], + "src": "6037:11:163" + }, + "scope": 119626, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 118729, + "nodeType": "FunctionDefinition", + "src": "6242:577:163", + "nodes": [], + "body": { + "id": 118728, + "nodeType": "Block", + "src": "6378:441:163", + "nodes": [], + "statements": [ + { + "assignments": [ + 118669 + ], + "declarations": [ + { + "constant": false, + "id": 118669, + "mutability": "mutable", + "name": "length", + "nameLocation": "6392:6:163", + "nodeType": "VariableDeclaration", + "scope": 118728, + "src": "6384:14:163", >>>>>>> Stashed changes "stateVariable": false, "storageLocation": "default", @@ -10268,11 +14212,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86750, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6293:7:147", +======= + "id": 118668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6384:7:163", +>>>>>>> Stashed changes ======= "id": 118668, "name": "uint256", @@ -10287,6 +14238,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86754, "initialValue": { @@ -10297,6 +14249,17 @@ "overloadedDeclarations": [], "referencedDeclaration": 86741, "src": "6310:8:147", +======= + "id": 118672, + "initialValue": { + "expression": { + "id": 118670, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118659, + "src": "6401:8:163", +>>>>>>> Stashed changes ======= "id": 118672, "initialValue": { @@ -10313,8 +14276,12 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86753, +======= + "id": 118671, +>>>>>>> Stashed changes ======= "id": 118671, >>>>>>> Stashed changes @@ -10322,11 +14289,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "6319:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "6310:15:147", +======= + "memberLocation": "6410:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6401:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "6410:6:163", "memberName": "length", @@ -10339,8 +14313,12 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6293:32:147" +======= + "src": "6384:32:163" +>>>>>>> Stashed changes ======= "src": "6384:32:163" >>>>>>> Stashed changes @@ -10351,8 +14329,12 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86762, +======= + "id": 118680, +>>>>>>> Stashed changes ======= "id": 118680, >>>>>>> Stashed changes @@ -10365,8 +14347,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86757, +======= + "id": 118675, +>>>>>>> Stashed changes ======= "id": 118675, >>>>>>> Stashed changes @@ -10375,6 +14361,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86755, "name": "length", @@ -10382,6 +14369,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86751, "src": "6335:6:147", +======= + "id": 118673, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118669, + "src": "6426:6:163", +>>>>>>> Stashed changes ======= "id": 118673, "name": "length", @@ -10399,8 +14394,12 @@ "operator": "==", "rightExpression": { "hexValue": "30", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86756, +======= + "id": 118674, +>>>>>>> Stashed changes ======= "id": 118674, >>>>>>> Stashed changes @@ -10410,8 +14409,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6345:1:147", +======= + "src": "6436:1:163", +>>>>>>> Stashed changes ======= "src": "6436:1:163", >>>>>>> Stashed changes @@ -10421,8 +14424,12 @@ }, "value": "0" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6335:11:147", +======= + "src": "6426:11:163", +>>>>>>> Stashed changes ======= "src": "6426:11:163", >>>>>>> Stashed changes @@ -10438,8 +14445,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86761, +======= + "id": 118679, +>>>>>>> Stashed changes ======= "id": 118679, >>>>>>> Stashed changes @@ -10448,6 +14459,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86758, "name": "length", @@ -10455,6 +14467,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86751, "src": "6350:6:147", +======= + "id": 118676, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118669, + "src": "6441:6:163", +>>>>>>> Stashed changes ======= "id": 118676, "name": "length", @@ -10472,6 +14492,7 @@ "operator": "!=", "rightExpression": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86759, "name": "usdPrices", @@ -10479,6 +14500,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86744, "src": "6360:9:147", +======= + "id": 118677, + "name": "usdPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118662, + "src": "6451:9:163", +>>>>>>> Stashed changes ======= "id": 118677, "name": "usdPrices", @@ -10492,8 +14521,12 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86760, +======= + "id": 118678, +>>>>>>> Stashed changes ======= "id": 118678, >>>>>>> Stashed changes @@ -10501,11 +14534,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "6370:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "6360:16:147", +======= + "memberLocation": "6461:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6451:16:163", +>>>>>>> Stashed changes ======= "memberLocation": "6461:6:163", "memberName": "length", @@ -10517,8 +14557,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6350:26:147", +======= + "src": "6441:26:163", +>>>>>>> Stashed changes ======= "src": "6441:26:163", >>>>>>> Stashed changes @@ -10527,8 +14571,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6335:41:147", +======= + "src": "6426:41:163", +>>>>>>> Stashed changes ======= "src": "6426:41:163", >>>>>>> Stashed changes @@ -10537,10 +14585,16 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86766, "nodeType": "IfStatement", "src": "6331:74:147", +======= + "id": 118684, + "nodeType": "IfStatement", + "src": "6422:74:163", +>>>>>>> Stashed changes ======= "id": 118684, "nodeType": "IfStatement", @@ -10551,6 +14605,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86763, "name": "InvalidArrayLength", @@ -10558,6 +14613,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91359, "src": "6385:18:147", +======= + "id": 118681, + "name": "InvalidArrayLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123300, + "src": "6476:18:163", +>>>>>>> Stashed changes ======= "id": 118681, "name": "InvalidArrayLength", @@ -10571,8 +14634,12 @@ "typeString": "function () pure" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86764, +======= + "id": 118682, +>>>>>>> Stashed changes ======= "id": 118682, >>>>>>> Stashed changes @@ -10584,8 +14651,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6385:20:147", +======= + "src": "6476:20:163", +>>>>>>> Stashed changes ======= "src": "6476:20:163", >>>>>>> Stashed changes @@ -10595,10 +14666,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86765, "nodeType": "RevertStatement", "src": "6378:27:147" +======= + "id": 118683, + "nodeType": "RevertStatement", + "src": "6469:27:163" +>>>>>>> Stashed changes ======= "id": 118683, "nodeType": "RevertStatement", @@ -10608,8 +14685,12 @@ }, { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86768 +======= + 118686 +>>>>>>> Stashed changes ======= 118686 >>>>>>> Stashed changes @@ -10617,6 +14698,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86768, "mutability": "mutable", @@ -10625,6 +14707,15 @@ "nodeType": "VariableDeclaration", "scope": 86810, "src": "6411:22:147", +======= + "id": 118686, + "mutability": "mutable", + "name": "inverseBitwise", + "nameLocation": "6510:14:163", + "nodeType": "VariableDeclaration", + "scope": 118728, + "src": "6502:22:163", +>>>>>>> Stashed changes ======= "id": 118686, "mutability": "mutable", @@ -10641,11 +14732,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86767, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6411:7:147", +======= + "id": 118685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6502:7:163", +>>>>>>> Stashed changes ======= "id": 118685, "name": "uint256", @@ -10660,6 +14758,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86769, "nodeType": "VariableDeclarationStatement", @@ -10668,6 +14767,15 @@ { "assignments": [ 86771 +======= + "id": 118687, + "nodeType": "VariableDeclarationStatement", + "src": "6502:22:163" + }, + { + "assignments": [ + 118689 +>>>>>>> Stashed changes ======= "id": 118687, "nodeType": "VariableDeclarationStatement", @@ -10681,6 +14789,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86771, "mutability": "mutable", @@ -10689,6 +14798,15 @@ "nodeType": "VariableDeclaration", "scope": 86810, "src": "6439:16:147", +======= + "id": 118689, + "mutability": "mutable", + "name": "operator", + "nameLocation": "6538:8:163", + "nodeType": "VariableDeclaration", + "scope": 118728, + "src": "6530:16:163", +>>>>>>> Stashed changes ======= "id": 118689, "mutability": "mutable", @@ -10705,11 +14823,18 @@ "typeString": "address" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86770, "name": "address", "nodeType": "ElementaryTypeName", "src": "6439:7:147", +======= + "id": 118688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6530:7:163", +>>>>>>> Stashed changes ======= "id": 118688, "name": "address", @@ -10725,8 +14850,12 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86774, +======= + "id": 118692, +>>>>>>> Stashed changes ======= "id": 118692, >>>>>>> Stashed changes @@ -10734,6 +14863,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86772, "name": "_msgSender", @@ -10741,6 +14871,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 72664, "src": "6458:10:147", +======= + "id": 118690, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "6549:10:163", +>>>>>>> Stashed changes ======= "id": 118690, "name": "_msgSender", @@ -10754,8 +14892,12 @@ "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86773, +======= + "id": 118691, +>>>>>>> Stashed changes ======= "id": 118691, >>>>>>> Stashed changes @@ -10767,8 +14909,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6458:12:147", +======= + "src": "6549:12:163", +>>>>>>> Stashed changes ======= "src": "6549:12:163", >>>>>>> Stashed changes @@ -10779,6 +14925,7 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6439:31:147" }, @@ -10791,6 +14938,19 @@ { "expression": { "id": 86786, +======= + "src": "6530:31:163" + }, + { + "body": { + "id": 118726, + "nodeType": "Block", + "src": "6597:218:163", + "statements": [ + { + "expression": { + "id": 118704, +>>>>>>> Stashed changes ======= "src": "6530:31:163" }, @@ -10809,6 +14969,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86781, "name": "inverseBitwise", @@ -10816,6 +14977,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86768, "src": "6514:14:147", +======= + "id": 118699, + "name": "inverseBitwise", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118686, + "src": "6605:14:163", +>>>>>>> Stashed changes ======= "id": 118699, "name": "inverseBitwise", @@ -10832,8 +15001,12 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86785, +======= + "id": 118703, +>>>>>>> Stashed changes ======= "id": 118703, >>>>>>> Stashed changes @@ -10844,6 +15017,7 @@ "nodeType": "UnaryOperation", "operator": "~", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6531:13:147", "subExpression": { @@ -10854,6 +15028,17 @@ "overloadedDeclarations": [], "referencedDeclaration": 86744, "src": "6532:9:147", +======= + "src": "6622:13:163", + "subExpression": { + "baseExpression": { + "id": 118700, + "name": "usdPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118662, + "src": "6623:9:163", +>>>>>>> Stashed changes ======= "src": "6622:13:163", "subExpression": { @@ -10870,6 +15055,7 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86784, "indexExpression": { @@ -10879,6 +15065,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86776, "src": "6542:1:147", +======= + "id": 118702, + "indexExpression": { + "id": 118701, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118694, + "src": "6633:1:163", +>>>>>>> Stashed changes ======= "id": 118702, "indexExpression": { @@ -10899,8 +15095,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6532:12:147", +======= + "src": "6623:12:163", +>>>>>>> Stashed changes ======= "src": "6623:12:163", >>>>>>> Stashed changes @@ -10914,8 +15114,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6514:30:147", +======= + "src": "6605:30:163", +>>>>>>> Stashed changes ======= "src": "6605:30:163", >>>>>>> Stashed changes @@ -10924,6 +15128,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86787, "nodeType": "ExpressionStatement", @@ -10932,6 +15137,15 @@ { "expression": { "id": 86794, +======= + "id": 118705, + "nodeType": "ExpressionStatement", + "src": "6605:30:163" + }, + { + "expression": { + "id": 118712, +>>>>>>> Stashed changes ======= "id": 118705, "nodeType": "ExpressionStatement", @@ -10947,6 +15161,7 @@ "lValueRequested": false, "leftHandSide": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86788, "name": "_rnFeeOverriding", @@ -10954,6 +15169,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86425, "src": "6552:16:147", +======= + "id": 118706, + "name": "_rnFeeOverriding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118340, + "src": "6643:16:163", +>>>>>>> Stashed changes ======= "id": 118706, "name": "_rnFeeOverriding", @@ -10967,6 +15190,7 @@ "typeString": "mapping(bytes32 => uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86792, "indexExpression": { @@ -10977,6 +15201,17 @@ "overloadedDeclarations": [], "referencedDeclaration": 86741, "src": "6569:8:147", +======= + "id": 118710, + "indexExpression": { + "baseExpression": { + "id": 118707, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118659, + "src": "6660:8:163", +>>>>>>> Stashed changes ======= "id": 118710, "indexExpression": { @@ -10993,6 +15228,7 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86791, "indexExpression": { @@ -11002,6 +15238,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86776, "src": "6578:1:147", +======= + "id": 118709, + "indexExpression": { + "id": 118708, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118694, + "src": "6669:1:163", +>>>>>>> Stashed changes ======= "id": 118709, "indexExpression": { @@ -11022,8 +15268,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6569:11:147", +======= + "src": "6660:11:163", +>>>>>>> Stashed changes ======= "src": "6660:11:163", >>>>>>> Stashed changes @@ -11037,8 +15287,12 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6552:29:147", +======= + "src": "6643:29:163", +>>>>>>> Stashed changes ======= "src": "6643:29:163", >>>>>>> Stashed changes @@ -11050,6 +15304,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86793, "name": "inverseBitwise", @@ -11057,6 +15312,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86768, "src": "6584:14:147", +======= + "id": 118711, + "name": "inverseBitwise", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118686, + "src": "6675:14:163", +>>>>>>> Stashed changes ======= "id": 118711, "name": "inverseBitwise", @@ -11070,8 +15333,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6552:46:147", +======= + "src": "6643:46:163", +>>>>>>> Stashed changes ======= "src": "6643:46:163", >>>>>>> Stashed changes @@ -11080,10 +15347,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86795, "nodeType": "ExpressionStatement", "src": "6552:46:147" +======= + "id": 118713, + "nodeType": "ExpressionStatement", + "src": "6643:46:163" +>>>>>>> Stashed changes ======= "id": 118713, "nodeType": "ExpressionStatement", @@ -11094,6 +15367,7 @@ "eventCall": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86797, "name": "operator", @@ -11101,6 +15375,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86771, "src": "6639:8:147", +======= + "id": 118715, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118689, + "src": "6730:8:163", +>>>>>>> Stashed changes ======= "id": 118715, "name": "operator", @@ -11116,6 +15398,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86798, "name": "lbHashes", @@ -11123,6 +15406,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86741, "src": "6649:8:147", +======= + "id": 118716, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118659, + "src": "6740:8:163", +>>>>>>> Stashed changes ======= "id": 118716, "name": "lbHashes", @@ -11136,6 +15427,7 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86800, "indexExpression": { @@ -11145,6 +15437,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86776, "src": "6658:1:147", +======= + "id": 118718, + "indexExpression": { + "id": 118717, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118694, + "src": "6749:1:163", +>>>>>>> Stashed changes ======= "id": 118718, "indexExpression": { @@ -11165,8 +15467,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6649:11:147", +======= + "src": "6740:11:163", +>>>>>>> Stashed changes ======= "src": "6740:11:163", >>>>>>> Stashed changes @@ -11176,6 +15482,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86801, "name": "inverseBitwise", @@ -11183,6 +15490,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86768, "src": "6662:14:147", +======= + "id": 118719, + "name": "inverseBitwise", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118686, + "src": "6753:14:163", +>>>>>>> Stashed changes ======= "id": 118719, "name": "inverseBitwise", @@ -11212,6 +15527,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86796, "name": "RenewalFeeOverridingUpdated", @@ -11219,6 +15535,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91413, "src": "6611:27:147", +======= + "id": 118714, + "name": "RenewalFeeOverridingUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123354, + "src": "6702:27:163", +>>>>>>> Stashed changes ======= "id": 118714, "name": "RenewalFeeOverridingUpdated", @@ -11232,8 +15556,12 @@ "typeString": "function (address,bytes32,uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86802, +======= + "id": 118720, +>>>>>>> Stashed changes ======= "id": 118720, >>>>>>> Stashed changes @@ -11245,8 +15573,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6611:66:147", +======= + "src": "6702:66:163", +>>>>>>> Stashed changes ======= "src": "6702:66:163", >>>>>>> Stashed changes @@ -11256,6 +15588,7 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86803, "nodeType": "EmitStatement", @@ -11269,6 +15602,20 @@ { "expression": { "id": 86805, +======= + "id": 118721, + "nodeType": "EmitStatement", + "src": "6697:71:163" + }, + { + "id": 118725, + "nodeType": "UncheckedBlock", + "src": "6777:32:163", + "statements": [ + { + "expression": { + "id": 118723, +>>>>>>> Stashed changes ======= "id": 118721, "nodeType": "EmitStatement", @@ -11290,6 +15637,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6706:3:147", "subExpression": { @@ -11299,6 +15647,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86776, "src": "6708:1:147", +======= + "src": "6797:3:163", + "subExpression": { + "id": 118722, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118694, + "src": "6799:1:163", +>>>>>>> Stashed changes ======= "src": "6797:3:163", "subExpression": { @@ -11319,10 +15677,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86806, "nodeType": "ExpressionStatement", "src": "6706:3:147" +======= + "id": 118724, + "nodeType": "ExpressionStatement", + "src": "6797:3:163" +>>>>>>> Stashed changes ======= "id": 118724, "nodeType": "ExpressionStatement", @@ -11338,8 +15702,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86780, +======= + "id": 118698, +>>>>>>> Stashed changes ======= "id": 118698, >>>>>>> Stashed changes @@ -11348,6 +15716,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86778, "name": "i", @@ -11355,6 +15724,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86776, "src": "6493:1:147", +======= + "id": 118696, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118694, + "src": "6584:1:163", +>>>>>>> Stashed changes ======= "id": 118696, "name": "i", @@ -11371,6 +15748,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86779, "name": "length", @@ -11378,6 +15756,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86751, "src": "6497:6:147", +======= + "id": 118697, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118669, + "src": "6588:6:163", +>>>>>>> Stashed changes ======= "id": 118697, "name": "length", @@ -11391,8 +15777,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6493:10:147", +======= + "src": "6584:10:163", +>>>>>>> Stashed changes ======= "src": "6584:10:163", >>>>>>> Stashed changes @@ -11401,11 +15791,18 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86809, "initializationExpression": { "assignments": [ 86776 +======= + "id": 118727, + "initializationExpression": { + "assignments": [ + 118694 +>>>>>>> Stashed changes ======= "id": 118727, "initializationExpression": { @@ -11416,6 +15813,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86776, "mutability": "mutable", @@ -11424,6 +15822,15 @@ "nodeType": "VariableDeclaration", "scope": 86809, "src": "6482:9:147", +======= + "id": 118694, + "mutability": "mutable", + "name": "i", + "nameLocation": "6581:1:163", + "nodeType": "VariableDeclaration", + "scope": 118727, + "src": "6573:9:163", +>>>>>>> Stashed changes ======= "id": 118694, "mutability": "mutable", @@ -11440,11 +15847,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86775, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6482:7:147", +======= + "id": 118693, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6573:7:163", +>>>>>>> Stashed changes ======= "id": 118693, "name": "uint256", @@ -11459,6 +15873,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86777, "nodeType": "VariableDeclarationStatement", @@ -11466,6 +15881,14 @@ }, "nodeType": "ForStatement", "src": "6477:247:147" +======= + "id": 118695, + "nodeType": "VariableDeclarationStatement", + "src": "6573:9:163" + }, + "nodeType": "ForStatement", + "src": "6568:247:163" +>>>>>>> Stashed changes ======= "id": 118695, "nodeType": "VariableDeclarationStatement", @@ -11478,6 +15901,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91578 ], @@ -11485,6 +15909,14 @@ "id": 86738, "nodeType": "StructuredDocumentation", "src": "6107:41:147", +======= + 123522 + ], + "documentation": { + "id": 118656, + "nodeType": "StructuredDocumentation", + "src": "6198:41:163", +>>>>>>> Stashed changes ======= 123522 ], @@ -11502,6 +15934,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86747, "name": "OVERRIDER_ROLE", @@ -11509,6 +15942,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86380, "src": "6269:14:147", +======= + "id": 118665, + "name": "OVERRIDER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118295, + "src": "6360:14:163", +>>>>>>> Stashed changes ======= "id": 118665, "name": "OVERRIDER_ROLE", @@ -11523,6 +15964,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86748, "kind": "modifierInvocation", @@ -11544,6 +15986,28 @@ "nameLocation": "6160:23:147", "parameters": { "id": 86745, +======= + "id": 118666, + "kind": "modifierInvocation", + "modifierName": { + "id": 118664, + "name": "onlyRole", + "nameLocations": [ + "6351:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "6351:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "6351:24:163" + } + ], + "name": "bulkOverrideRenewalFees", + "nameLocation": "6251:23:163", + "parameters": { + "id": 118663, +>>>>>>> Stashed changes ======= "id": 118666, "kind": "modifierInvocation", @@ -11570,6 +16034,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86741, "mutability": "mutable", @@ -11578,6 +16043,15 @@ "nodeType": "VariableDeclaration", "scope": 86811, "src": "6184:27:147", +======= + "id": 118659, + "mutability": "mutable", + "name": "lbHashes", + "nameLocation": "6294:8:163", + "nodeType": "VariableDeclaration", + "scope": 118729, + "src": "6275:27:163", +>>>>>>> Stashed changes ======= "id": 118659, "mutability": "mutable", @@ -11595,11 +16069,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86739, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6184:7:147", +======= + "id": 118657, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6275:7:163", +>>>>>>> Stashed changes ======= "id": 118657, "name": "bytes32", @@ -11611,10 +16092,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86740, "nodeType": "ArrayTypeName", "src": "6184:9:147", +======= + "id": 118658, + "nodeType": "ArrayTypeName", + "src": "6275:9:163", +>>>>>>> Stashed changes ======= "id": 118658, "nodeType": "ArrayTypeName", @@ -11629,6 +16116,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86744, "mutability": "mutable", @@ -11637,6 +16125,15 @@ "nodeType": "VariableDeclaration", "scope": 86811, "src": "6213:28:147", +======= + "id": 118662, + "mutability": "mutable", + "name": "usdPrices", + "nameLocation": "6323:9:163", + "nodeType": "VariableDeclaration", + "scope": 118729, + "src": "6304:28:163", +>>>>>>> Stashed changes ======= "id": 118662, "mutability": "mutable", @@ -11654,11 +16151,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86742, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6213:7:147", +======= + "id": 118660, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6304:7:163", +>>>>>>> Stashed changes ======= "id": 118660, "name": "uint256", @@ -11670,10 +16174,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86743, "nodeType": "ArrayTypeName", "src": "6213:9:147", +======= + "id": 118661, + "nodeType": "ArrayTypeName", + "src": "6304:9:163", +>>>>>>> Stashed changes ======= "id": 118661, "nodeType": "ArrayTypeName", @@ -11687,6 +16197,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6183:59:147" }, @@ -11697,6 +16208,17 @@ "src": "6287:0:147" }, "scope": 87685, +======= + "src": "6274:59:163" + }, + "returnParameters": { + "id": 118667, + "nodeType": "ParameterList", + "parameters": [], + "src": "6378:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "6274:59:163" }, @@ -11713,6 +16235,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86885, "nodeType": "FunctionDefinition", @@ -11722,6 +16245,16 @@ "id": 86884, "nodeType": "Block", "src": "6892:426:147", +======= + "id": 118809, + "nodeType": "FunctionDefinition", + "src": "6867:538:163", + "nodes": [], + "body": { + "id": 118808, + "nodeType": "Block", + "src": "6980:425:163", +>>>>>>> Stashed changes ======= "id": 118809, "nodeType": "FunctionDefinition", @@ -11736,8 +16269,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86825 +======= + 118744 +>>>>>>> Stashed changes ======= 118744 >>>>>>> Stashed changes @@ -11745,6 +16282,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86825, "mutability": "mutable", @@ -11753,6 +16291,15 @@ "nodeType": "VariableDeclaration", "scope": 86884, "src": "6898:14:147", +======= + "id": 118744, + "mutability": "mutable", + "name": "length", + "nameLocation": "6994:6:163", + "nodeType": "VariableDeclaration", + "scope": 118808, + "src": "6986:14:163", +>>>>>>> Stashed changes ======= "id": 118744, "mutability": "mutable", @@ -11769,11 +16316,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86824, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "6898:7:147", +======= + "id": 118743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6986:7:163", +>>>>>>> Stashed changes ======= "id": 118743, "name": "uint256", @@ -11788,6 +16342,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86828, "initialValue": { @@ -11799,6 +16354,8 @@ "referencedDeclaration": 86815, "src": "6915:8:147", ======= +======= +>>>>>>> Stashed changes "id": 118747, "initialValue": { "expression": { @@ -11808,14 +16365,21 @@ "overloadedDeclarations": [], "referencedDeclaration": 118733, "src": "7003:8:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86827, +======= + "id": 118746, +>>>>>>> Stashed changes ======= "id": 118746, >>>>>>> Stashed changes @@ -11823,16 +16387,22 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "6924:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "6915:15:147", ======= +======= +>>>>>>> Stashed changes "memberLocation": "7012:6:163", "memberName": "length", "nodeType": "MemberAccess", "src": "7003:15:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11840,8 +16410,12 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6898:32:147" +======= + "src": "6986:32:163" +>>>>>>> Stashed changes ======= "src": "6986:32:163" >>>>>>> Stashed changes @@ -11852,8 +16426,12 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86836, +======= + "id": 118755, +>>>>>>> Stashed changes ======= "id": 118755, >>>>>>> Stashed changes @@ -11866,8 +16444,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86831, +======= + "id": 118750, +>>>>>>> Stashed changes ======= "id": 118750, >>>>>>> Stashed changes @@ -11876,6 +16458,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86829, "name": "length", @@ -11884,12 +16467,17 @@ "referencedDeclaration": 86825, "src": "6940:6:147", ======= +======= +>>>>>>> Stashed changes "id": 118748, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118744, "src": "7028:6:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11900,8 +16488,12 @@ "operator": "==", "rightExpression": { "hexValue": "30", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86830, +======= + "id": 118749, +>>>>>>> Stashed changes ======= "id": 118749, >>>>>>> Stashed changes @@ -11911,8 +16503,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6950:1:147", +======= + "src": "7038:1:163", +>>>>>>> Stashed changes ======= "src": "7038:1:163", >>>>>>> Stashed changes @@ -11922,8 +16518,12 @@ }, "value": "0" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6940:11:147", +======= + "src": "7028:11:163", +>>>>>>> Stashed changes ======= "src": "7028:11:163", >>>>>>> Stashed changes @@ -11939,8 +16539,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86835, +======= + "id": 118754, +>>>>>>> Stashed changes ======= "id": 118754, >>>>>>> Stashed changes @@ -11949,6 +16553,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86832, "name": "length", @@ -11957,12 +16562,17 @@ "referencedDeclaration": 86825, "src": "6955:6:147", ======= +======= +>>>>>>> Stashed changes "id": 118751, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118744, "src": "7043:6:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -11973,6 +16583,7 @@ "operator": "!=", "rightExpression": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86833, "name": "tiers", @@ -11987,6 +16598,8 @@ }, "id": 86834, ======= +======= +>>>>>>> Stashed changes "id": 118752, "name": "tiers", "nodeType": "Identifier", @@ -11999,29 +16612,42 @@ } }, "id": 118753, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "6971:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "6965:12:147", ======= +======= +>>>>>>> Stashed changes "memberLocation": "7059:6:163", "memberName": "length", "nodeType": "MemberAccess", "src": "7053:12:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6955:22:147", +======= + "src": "7043:22:163", +>>>>>>> Stashed changes ======= "src": "7043:22:163", >>>>>>> Stashed changes @@ -12030,8 +16656,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6940:37:147", +======= + "src": "7028:37:163", +>>>>>>> Stashed changes ======= "src": "7028:37:163", >>>>>>> Stashed changes @@ -12040,10 +16670,16 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86840, "nodeType": "IfStatement", "src": "6936:70:147", +======= + "id": 118759, + "nodeType": "IfStatement", + "src": "7024:70:163", +>>>>>>> Stashed changes ======= "id": 118759, "nodeType": "IfStatement", @@ -12054,6 +16690,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86837, "name": "InvalidArrayLength", @@ -12062,20 +16699,29 @@ "referencedDeclaration": 91359, "src": "6986:18:147", ======= +======= +>>>>>>> Stashed changes "id": 118756, "name": "InvalidArrayLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 123300, "src": "7074:18:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86838, +======= + "id": 118757, +>>>>>>> Stashed changes ======= "id": 118757, >>>>>>> Stashed changes @@ -12087,8 +16733,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6986:20:147", +======= + "src": "7074:20:163", +>>>>>>> Stashed changes ======= "src": "7074:20:163", >>>>>>> Stashed changes @@ -12098,10 +16748,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86839, "nodeType": "RevertStatement", "src": "6979:27:147" +======= + "id": 118758, + "nodeType": "RevertStatement", + "src": "7067:27:163" +>>>>>>> Stashed changes ======= "id": 118758, "nodeType": "RevertStatement", @@ -12111,8 +16767,12 @@ }, { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86842 +======= + 118761 +>>>>>>> Stashed changes ======= 118761 >>>>>>> Stashed changes @@ -12120,6 +16780,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86842, "mutability": "mutable", @@ -12143,6 +16804,8 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" ======= +======= +>>>>>>> Stashed changes "id": 118761, "mutability": "mutable", "name": "inverseBitwise", @@ -12164,12 +16827,16 @@ "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } }, "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86843, "nodeType": "VariableDeclarationStatement", @@ -12179,6 +16846,8 @@ "assignments": [ 86845 ======= +======= +>>>>>>> Stashed changes "id": 118762, "nodeType": "VariableDeclarationStatement", "src": "7100:20:163" @@ -12186,11 +16855,15 @@ { "assignments": [ 118764 +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes ], "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86845, "mutability": "mutable", @@ -12200,6 +16873,8 @@ "scope": 86884, "src": "7040:16:147", ======= +======= +>>>>>>> Stashed changes "id": 118764, "mutability": "mutable", "name": "operator", @@ -12207,6 +16882,9 @@ "nodeType": "VariableDeclaration", "scope": 118808, "src": "7126:16:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateVariable": false, "storageLocation": "default", @@ -12215,16 +16893,22 @@ "typeString": "address" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86844, "name": "address", "nodeType": "ElementaryTypeName", "src": "7040:7:147", ======= +======= +>>>>>>> Stashed changes "id": 118763, "name": "address", "nodeType": "ElementaryTypeName", "src": "7126:7:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateMutability": "nonpayable", "typeDescriptions": { @@ -12235,8 +16919,12 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86848, +======= + "id": 118767, +>>>>>>> Stashed changes ======= "id": 118767, >>>>>>> Stashed changes @@ -12244,6 +16932,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86846, "name": "_msgSender", @@ -12252,20 +16941,29 @@ "referencedDeclaration": 72664, "src": "7059:10:147", ======= +======= +>>>>>>> Stashed changes "id": 118765, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103582, "src": "7145:10:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86847, +======= + "id": 118766, +>>>>>>> Stashed changes ======= "id": 118766, >>>>>>> Stashed changes @@ -12277,8 +16975,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7059:12:147", +======= + "src": "7145:12:163", +>>>>>>> Stashed changes ======= "src": "7145:12:163", >>>>>>> Stashed changes @@ -12289,6 +16991,7 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7040:31:147" }, @@ -12302,6 +17005,8 @@ "expression": { "id": 86860, ======= +======= +>>>>>>> Stashed changes "src": "7126:31:163" }, { @@ -12313,12 +17018,16 @@ { "expression": { "id": 118782, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86855, "name": "inverseBitwise", @@ -12330,6 +17039,8 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" ======= +======= +>>>>>>> Stashed changes "id": 118774, "name": "inverseBitwise", "nodeType": "Identifier", @@ -12339,14 +17050,21 @@ "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86859, +======= + "id": 118781, +>>>>>>> Stashed changes ======= "id": 118781, >>>>>>> Stashed changes @@ -12357,6 +17075,7 @@ "nodeType": "UnaryOperation", "operator": "~", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7132:9:147", "subExpression": { @@ -12415,6 +17134,8 @@ "expression": { "id": 86868, ======= +======= +>>>>>>> Stashed changes "src": "7218:16:163", "subExpression": { "arguments": [ @@ -12516,6 +17237,9 @@ { "expression": { "id": 118790, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "isConstant": false, "isLValue": false, @@ -12523,6 +17247,7 @@ "lValueRequested": false, "leftHandSide": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86862, "name": "_tierOverriding", @@ -12545,6 +17270,8 @@ "referencedDeclaration": 86815, "src": "7165:8:147", ======= +======= +>>>>>>> Stashed changes "id": 118784, "name": "_tierOverriding", "nodeType": "Identifier", @@ -12565,12 +17292,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 118733, "src": "7258:8:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86865, "indexExpression": { @@ -12581,6 +17312,8 @@ "referencedDeclaration": 86850, "src": "7174:1:147", ======= +======= +>>>>>>> Stashed changes "id": 118787, "indexExpression": { "id": 118786, @@ -12589,6 +17322,9 @@ "overloadedDeclarations": [], "referencedDeclaration": 118769, "src": "7267:1:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12600,8 +17336,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7165:11:147", +======= + "src": "7258:11:163", +>>>>>>> Stashed changes ======= "src": "7258:11:163", >>>>>>> Stashed changes @@ -12615,22 +17355,29 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7149:28:147", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" ======= +======= +>>>>>>> Stashed changes "src": "7242:28:163", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86867, "name": "inverseBitwise", @@ -12653,6 +17400,8 @@ "nodeType": "ExpressionStatement", "src": "7149:45:147" ======= +======= +>>>>>>> Stashed changes "id": 118789, "name": "inverseBitwise", "nodeType": "Identifier", @@ -12673,12 +17422,16 @@ "id": 118791, "nodeType": "ExpressionStatement", "src": "7242:45:163" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes }, { "eventCall": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86871, "name": "operator", @@ -12687,12 +17440,17 @@ "referencedDeclaration": 86845, "src": "7229:8:147", ======= +======= +>>>>>>> Stashed changes "id": 118793, "name": "operator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118764, "src": "7322:8:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_address", @@ -12701,6 +17459,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86872, "name": "lbHashes", @@ -12709,18 +17468,24 @@ "referencedDeclaration": 86815, "src": "7239:8:147", ======= +======= +>>>>>>> Stashed changes "id": 118794, "name": "lbHashes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118733, "src": "7332:8:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr", "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86874, "indexExpression": { @@ -12731,6 +17496,8 @@ "referencedDeclaration": 86850, "src": "7248:1:147", ======= +======= +>>>>>>> Stashed changes "id": 118796, "indexExpression": { "id": 118795, @@ -12739,6 +17506,9 @@ "overloadedDeclarations": [], "referencedDeclaration": 118769, "src": "7341:1:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12750,8 +17520,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7239:11:147", +======= + "src": "7332:11:163", +>>>>>>> Stashed changes ======= "src": "7332:11:163", >>>>>>> Stashed changes @@ -12761,6 +17535,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86875, "name": "inverseBitwise", @@ -12772,6 +17547,8 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" ======= +======= +>>>>>>> Stashed changes "baseExpression": { "id": 118797, "name": "tiers", @@ -12806,6 +17583,9 @@ "typeDescriptions": { "typeIdentifier": "t_enum$_Tier_$123312", "typeString": "enum INSDomainPrice.Tier" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } } @@ -12821,6 +17601,7 @@ "typeString": "bytes32" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12839,6 +17620,8 @@ }, "id": 86876, ======= +======= +>>>>>>> Stashed changes "typeIdentifier": "t_enum$_Tier_$123312", "typeString": "enum INSDomainPrice.Tier" } @@ -12855,6 +17638,9 @@ } }, "id": 118800, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "isConstant": false, "isLValue": false, @@ -12864,8 +17650,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7207:60:147", +======= + "src": "7300:54:163", +>>>>>>> Stashed changes ======= "src": "7300:54:163", >>>>>>> Stashed changes @@ -12875,6 +17665,7 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86877, "nodeType": "EmitStatement", @@ -12889,6 +17680,8 @@ "expression": { "id": 86879, ======= +======= +>>>>>>> Stashed changes "id": 118801, "nodeType": "EmitStatement", "src": "7295:59:163" @@ -12901,6 +17694,9 @@ { "expression": { "id": 118803, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "isConstant": false, "isLValue": false, @@ -12909,6 +17705,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7296:3:147", "subExpression": { @@ -12919,6 +17716,8 @@ "referencedDeclaration": 86850, "src": "7298:1:147", ======= +======= +>>>>>>> Stashed changes "src": "7383:3:163", "subExpression": { "id": 118802, @@ -12927,6 +17726,9 @@ "overloadedDeclarations": [], "referencedDeclaration": 118769, "src": "7385:1:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12938,10 +17740,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86880, "nodeType": "ExpressionStatement", "src": "7296:3:147" +======= + "id": 118804, + "nodeType": "ExpressionStatement", + "src": "7383:3:163" +>>>>>>> Stashed changes ======= "id": 118804, "nodeType": "ExpressionStatement", @@ -12957,8 +17765,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86854, +======= + "id": 118773, +>>>>>>> Stashed changes ======= "id": 118773, >>>>>>> Stashed changes @@ -12967,6 +17779,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86852, "name": "i", @@ -12975,12 +17788,17 @@ "referencedDeclaration": 86850, "src": "7094:1:147", ======= +======= +>>>>>>> Stashed changes "id": 118771, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118769, "src": "7180:1:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12990,6 +17808,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86853, "name": "length", @@ -12998,20 +17817,29 @@ "referencedDeclaration": 86825, "src": "7098:6:147", ======= +======= +>>>>>>> Stashed changes "id": 118772, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118744, "src": "7184:6:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7094:10:147", +======= + "src": "7180:10:163", +>>>>>>> Stashed changes ======= "src": "7180:10:163", >>>>>>> Stashed changes @@ -13020,21 +17848,28 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86883, "initializationExpression": { "assignments": [ 86850 ======= +======= +>>>>>>> Stashed changes "id": 118807, "initializationExpression": { "assignments": [ 118769 +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes ], "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86850, "mutability": "mutable", @@ -13044,6 +17879,8 @@ "scope": 86883, "src": "7083:9:147", ======= +======= +>>>>>>> Stashed changes "id": 118769, "mutability": "mutable", "name": "i", @@ -13051,6 +17888,9 @@ "nodeType": "VariableDeclaration", "scope": 118807, "src": "7169:9:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateVariable": false, "storageLocation": "default", @@ -13059,16 +17899,22 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86849, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7083:7:147", ======= +======= +>>>>>>> Stashed changes "id": 118768, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7169:7:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13078,6 +17924,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86851, "nodeType": "VariableDeclarationStatement", @@ -13086,17 +17933,23 @@ "nodeType": "ForStatement", "src": "7078:236:147" ======= +======= +>>>>>>> Stashed changes "id": 118770, "nodeType": "VariableDeclarationStatement", "src": "7169:9:163" }, "nodeType": "ForStatement", "src": "7164:237:163" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91588 ], @@ -13108,6 +17961,8 @@ }, "functionSelector": "cff8372f", ======= +======= +>>>>>>> Stashed changes 123533 ], "documentation": { @@ -13117,6 +17972,9 @@ "text": " @inheritdoc INSDomainPrice" }, "functionSelector": "59228107", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "implemented": true, "kind": "function", @@ -13124,6 +17982,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86821, "name": "OVERRIDER_ROLE", @@ -13132,12 +17991,17 @@ "referencedDeclaration": 86380, "src": "6876:14:147", ======= +======= +>>>>>>> Stashed changes "id": 118740, "name": "OVERRIDER_ROLE", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 118295, "src": "6964:14:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -13145,6 +18009,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86822, "kind": "modifierInvocation", @@ -13167,6 +18032,8 @@ "parameters": { "id": 86819, ======= +======= +>>>>>>> Stashed changes "id": 118741, "kind": "modifierInvocation", "modifierName": { @@ -13187,11 +18054,15 @@ "nameLocation": "6876:17:163", "parameters": { "id": 118738, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "nodeType": "ParameterList", "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86815, "mutability": "mutable", @@ -13201,6 +18072,8 @@ "scope": 86885, "src": "6803:27:147", ======= +======= +>>>>>>> Stashed changes "id": 118733, "mutability": "mutable", "name": "lbHashes", @@ -13208,6 +18081,9 @@ "nodeType": "VariableDeclaration", "scope": 118809, "src": "6894:27:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateVariable": false, "storageLocation": "calldata", @@ -13217,26 +18093,38 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86813, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6803:7:147", ======= +======= +>>>>>>> Stashed changes "id": 118731, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6894:7:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86814, "nodeType": "ArrayTypeName", "src": "6803:9:147", +======= + "id": 118732, + "nodeType": "ArrayTypeName", + "src": "6894:9:163", +>>>>>>> Stashed changes ======= "id": 118732, "nodeType": "ArrayTypeName", @@ -13251,6 +18139,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86818, "mutability": "mutable", @@ -13283,6 +18172,8 @@ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" ======= +======= +>>>>>>> Stashed changes "id": 118737, "mutability": "mutable", "name": "tiers", @@ -13323,12 +18214,16 @@ "typeDescriptions": { "typeIdentifier": "t_array$_t_enum$_Tier_$123312_$dyn_storage_ptr", "typeString": "enum INSDomainPrice.Tier[]" +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes } }, "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "6802:55:147" }, @@ -13340,6 +18235,8 @@ }, "scope": 87685, ======= +======= +>>>>>>> Stashed changes "src": "6893:52:163" }, "returnParameters": { @@ -13349,12 +18246,16 @@ "src": "6980:0:163" }, "scope": 119626, +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86963, "nodeType": "FunctionDefinition", @@ -13365,6 +18266,8 @@ "nodeType": "Block", "src": "7602:374:147", ======= +======= +>>>>>>> Stashed changes "id": 118887, "nodeType": "FunctionDefinition", "src": "7453:610:163", @@ -13373,13 +18276,20 @@ "id": 118886, "nodeType": "Block", "src": "7689:374:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "nodes": [], "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86908 +======= + 118832 +>>>>>>> Stashed changes ======= 118832 >>>>>>> Stashed changes @@ -13387,6 +18297,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86908, "mutability": "mutable", @@ -13396,6 +18307,8 @@ "scope": 86962, "src": "7608:14:147", ======= +======= +>>>>>>> Stashed changes "id": 118832, "mutability": "mutable", "name": "length", @@ -13403,6 +18316,9 @@ "nodeType": "VariableDeclaration", "scope": 118886, "src": "7695:14:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "stateVariable": false, "storageLocation": "default", @@ -13411,16 +18327,22 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86907, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7608:7:147", ======= +======= +>>>>>>> Stashed changes "id": 118831, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7695:7:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -13430,6 +18352,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86915, "initialValue": { @@ -13441,6 +18364,18 @@ "overloadedDeclarations": [], "referencedDeclaration": 86889, "src": "7666:8:147", +======= + "id": 118839, + "initialValue": { + "arguments": [ + { + "id": 118834, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118813, + "src": "7753:8:163", +>>>>>>> Stashed changes ======= "id": 118839, "initialValue": { @@ -13459,6 +18394,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86911, "name": "ronPrices", @@ -13466,6 +18402,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86892, "src": "7676:9:147", +======= + "id": 118835, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118816, + "src": "7763:9:163", +>>>>>>> Stashed changes ======= "id": 118835, "name": "ronPrices", @@ -13480,6 +18424,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86912, "name": "proofHashes", @@ -13487,6 +18432,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86895, "src": "7687:11:147", +======= + "id": 118836, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118819, + "src": "7774:11:163", +>>>>>>> Stashed changes ======= "id": 118836, "name": "proofHashes", @@ -13501,6 +18454,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86913, "name": "setTypes", @@ -13508,6 +18462,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86898, "src": "7700:8:147", +======= + "id": 118837, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118822, + "src": "7787:8:163", +>>>>>>> Stashed changes ======= "id": 118837, "name": "setTypes", @@ -13541,6 +18503,7 @@ "typeString": "uint256[] calldata" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86909, "name": "_requireBulkSetDomainPriceArgumentsValid", @@ -13548,6 +18511,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87423, "src": "7625:40:147", +======= + "id": 118833, + "name": "_requireBulkSetDomainPriceArgumentsValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119185, + "src": "7712:40:163", +>>>>>>> Stashed changes ======= "id": 118833, "name": "_requireBulkSetDomainPriceArgumentsValid", @@ -13561,8 +18532,12 @@ "typeString": "function (bytes32[] calldata,uint256[] calldata,bytes32[] calldata,uint256[] calldata) pure returns (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86914, +======= + "id": 118838, +>>>>>>> Stashed changes ======= "id": 118838, >>>>>>> Stashed changes @@ -13574,8 +18549,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7625:84:147", +======= + "src": "7712:84:163", +>>>>>>> Stashed changes ======= "src": "7712:84:163", >>>>>>> Stashed changes @@ -13586,12 +18565,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7608:101:147" }, { "assignments": [ 86917 +======= + "src": "7695:101:163" + }, + { + "assignments": [ + 118841 +>>>>>>> Stashed changes ======= "src": "7695:101:163" }, @@ -13603,6 +18590,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86917, "mutability": "mutable", @@ -13611,6 +18599,15 @@ "nodeType": "VariableDeclaration", "scope": 86962, "src": "7715:16:147", +======= + "id": 118841, + "mutability": "mutable", + "name": "operator", + "nameLocation": "7810:8:163", + "nodeType": "VariableDeclaration", + "scope": 118886, + "src": "7802:16:163", +>>>>>>> Stashed changes ======= "id": 118841, "mutability": "mutable", @@ -13627,11 +18624,18 @@ "typeString": "address" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86916, "name": "address", "nodeType": "ElementaryTypeName", "src": "7715:7:147", +======= + "id": 118840, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7802:7:163", +>>>>>>> Stashed changes ======= "id": 118840, "name": "address", @@ -13647,8 +18651,12 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86920, +======= + "id": 118844, +>>>>>>> Stashed changes ======= "id": 118844, >>>>>>> Stashed changes @@ -13656,6 +18664,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86918, "name": "_msgSender", @@ -13663,6 +18672,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 72664, "src": "7734:10:147", +======= + "id": 118842, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "7821:10:163", +>>>>>>> Stashed changes ======= "id": 118842, "name": "_msgSender", @@ -13676,8 +18693,12 @@ "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86919, +======= + "id": 118843, +>>>>>>> Stashed changes ======= "id": 118843, >>>>>>> Stashed changes @@ -13689,8 +18710,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7734:12:147", +======= + "src": "7821:12:163", +>>>>>>> Stashed changes ======= "src": "7821:12:163", >>>>>>> Stashed changes @@ -13701,12 +18726,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7715:31:147" }, { "expression": { "id": 86927, +======= + "src": "7802:31:163" + }, + { + "expression": { + "id": 118851, +>>>>>>> Stashed changes ======= "src": "7802:31:163" }, @@ -13719,6 +18752,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86921, "name": "updated", @@ -13726,6 +18760,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86905, "src": "7752:7:147", +======= + "id": 118845, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118829, + "src": "7839:7:163", +>>>>>>> Stashed changes ======= "id": 118845, "name": "updated", @@ -13744,6 +18786,7 @@ "rightHandSide": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86925, "name": "length", @@ -13751,6 +18794,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86908, "src": "7773:6:147", +======= + "id": 118849, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118832, + "src": "7860:6:163", +>>>>>>> Stashed changes ======= "id": 118849, "name": "length", @@ -13772,8 +18823,12 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86924, +======= + "id": 118848, +>>>>>>> Stashed changes ======= "id": 118848, >>>>>>> Stashed changes @@ -13782,8 +18837,12 @@ "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7762:10:147", +======= + "src": "7849:10:163", +>>>>>>> Stashed changes ======= "src": "7849:10:163", >>>>>>> Stashed changes @@ -13793,11 +18852,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86922, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7766:4:147", +======= + "id": 118846, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7853:4:163", +>>>>>>> Stashed changes ======= "id": 118846, "name": "bool", @@ -13809,10 +18875,16 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86923, "nodeType": "ArrayTypeName", "src": "7766:6:147", +======= + "id": 118847, + "nodeType": "ArrayTypeName", + "src": "7853:6:163", +>>>>>>> Stashed changes ======= "id": 118847, "nodeType": "ArrayTypeName", @@ -13824,8 +18896,12 @@ } } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86926, +======= + "id": 118850, +>>>>>>> Stashed changes ======= "id": 118850, >>>>>>> Stashed changes @@ -13837,8 +18913,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7762:18:147", +======= + "src": "7849:18:163", +>>>>>>> Stashed changes ======= "src": "7849:18:163", >>>>>>> Stashed changes @@ -13848,8 +18928,12 @@ "typeString": "bool[] memory" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7752:28:147", +======= + "src": "7839:28:163", +>>>>>>> Stashed changes ======= "src": "7839:28:163", >>>>>>> Stashed changes @@ -13858,6 +18942,7 @@ "typeString": "bool[] memory" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86928, "nodeType": "ExpressionStatement", @@ -13872,6 +18957,21 @@ { "expression": { "id": 86954, +======= + "id": 118852, + "nodeType": "ExpressionStatement", + "src": "7839:28:163" + }, + { + "body": { + "id": 118884, + "nodeType": "Block", + "src": "7903:156:163", + "statements": [ + { + "expression": { + "id": 118878, +>>>>>>> Stashed changes ======= "id": 118852, "nodeType": "ExpressionStatement", @@ -13893,6 +18993,7 @@ "lValueRequested": false, "leftHandSide": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86935, "name": "updated", @@ -13900,6 +19001,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86905, "src": "7824:7:147", +======= + "id": 118859, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118829, + "src": "7911:7:163", +>>>>>>> Stashed changes ======= "id": 118859, "name": "updated", @@ -13913,6 +19022,7 @@ "typeString": "bool[] memory" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86937, "indexExpression": { @@ -13922,6 +19032,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86930, "src": "7832:1:147", +======= + "id": 118861, + "indexExpression": { + "id": 118860, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7919:1:163", +>>>>>>> Stashed changes ======= "id": 118861, "indexExpression": { @@ -13942,8 +19062,12 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7824:10:147", +======= + "src": "7911:10:163", +>>>>>>> Stashed changes ======= "src": "7911:10:163", >>>>>>> Stashed changes @@ -13957,6 +19081,7 @@ "rightHandSide": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86939, "name": "operator", @@ -13964,6 +19089,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86917, "src": "7853:8:147", +======= + "id": 118863, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118841, + "src": "7940:8:163", +>>>>>>> Stashed changes ======= "id": 118863, "name": "operator", @@ -13979,6 +19112,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86940, "name": "lbHashes", @@ -13986,6 +19120,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86889, "src": "7863:8:147", +======= + "id": 118864, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118813, + "src": "7950:8:163", +>>>>>>> Stashed changes ======= "id": 118864, "name": "lbHashes", @@ -13999,6 +19141,7 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86942, "indexExpression": { @@ -14008,6 +19151,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86930, "src": "7872:1:147", +======= + "id": 118866, + "indexExpression": { + "id": 118865, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7959:1:163", +>>>>>>> Stashed changes ======= "id": 118866, "indexExpression": { @@ -14028,8 +19181,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7863:11:147", +======= + "src": "7950:11:163", +>>>>>>> Stashed changes ======= "src": "7950:11:163", >>>>>>> Stashed changes @@ -14040,6 +19197,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86943, "name": "ronPrices", @@ -14047,6 +19205,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86892, "src": "7876:9:147", +======= + "id": 118867, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118816, + "src": "7963:9:163", +>>>>>>> Stashed changes ======= "id": 118867, "name": "ronPrices", @@ -14060,6 +19226,7 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86945, "indexExpression": { @@ -14069,6 +19236,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86930, "src": "7886:1:147", +======= + "id": 118869, + "indexExpression": { + "id": 118868, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7973:1:163", +>>>>>>> Stashed changes ======= "id": 118869, "indexExpression": { @@ -14089,8 +19266,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7876:12:147", +======= + "src": "7963:12:163", +>>>>>>> Stashed changes ======= "src": "7963:12:163", >>>>>>> Stashed changes @@ -14101,6 +19282,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86946, "name": "proofHashes", @@ -14108,6 +19290,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86895, "src": "7890:11:147", +======= + "id": 118870, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118819, + "src": "7977:11:163", +>>>>>>> Stashed changes ======= "id": 118870, "name": "proofHashes", @@ -14121,6 +19311,7 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86948, "indexExpression": { @@ -14130,6 +19321,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86930, "src": "7902:1:147", +======= + "id": 118872, + "indexExpression": { + "id": 118871, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7989:1:163", +>>>>>>> Stashed changes ======= "id": 118872, "indexExpression": { @@ -14150,8 +19351,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7890:14:147", +======= + "src": "7977:14:163", +>>>>>>> Stashed changes ======= "src": "7977:14:163", >>>>>>> Stashed changes @@ -14162,6 +19367,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86949, "name": "setTypes", @@ -14169,6 +19375,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86898, "src": "7906:8:147", +======= + "id": 118873, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118822, + "src": "7993:8:163", +>>>>>>> Stashed changes ======= "id": 118873, "name": "setTypes", @@ -14182,6 +19396,7 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86951, "indexExpression": { @@ -14191,6 +19406,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86930, "src": "7915:1:147", +======= + "id": 118875, + "indexExpression": { + "id": 118874, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "8002:1:163", +>>>>>>> Stashed changes ======= "id": 118875, "indexExpression": { @@ -14211,8 +19436,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7906:11:147", +======= + "src": "7993:11:163", +>>>>>>> Stashed changes ======= "src": "7993:11:163", >>>>>>> Stashed changes @@ -14223,8 +19452,12 @@ }, { "hexValue": "66616c7365", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86952, +======= + "id": 118876, +>>>>>>> Stashed changes ======= "id": 118876, >>>>>>> Stashed changes @@ -14234,8 +19467,12 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7919:5:147", +======= + "src": "8006:5:163", +>>>>>>> Stashed changes ======= "src": "8006:5:163", >>>>>>> Stashed changes @@ -14273,6 +19510,7 @@ "typeString": "bool" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86938, "name": "_setDomainPrice", @@ -14280,6 +19518,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87488, "src": "7837:15:147", +======= + "id": 118862, + "name": "_setDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119250, + "src": "7924:15:163", +>>>>>>> Stashed changes ======= "id": 118862, "name": "_setDomainPrice", @@ -14293,8 +19539,12 @@ "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86953, +======= + "id": 118877, +>>>>>>> Stashed changes ======= "id": 118877, >>>>>>> Stashed changes @@ -14306,8 +19556,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7837:88:147", +======= + "src": "7924:88:163", +>>>>>>> Stashed changes ======= "src": "7924:88:163", >>>>>>> Stashed changes @@ -14317,8 +19571,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7824:101:147", +======= + "src": "7911:101:163", +>>>>>>> Stashed changes ======= "src": "7911:101:163", >>>>>>> Stashed changes @@ -14327,6 +19585,7 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86955, "nodeType": "ExpressionStatement", @@ -14340,6 +19599,20 @@ { "expression": { "id": 86957, +======= + "id": 118879, + "nodeType": "ExpressionStatement", + "src": "7911:101:163" + }, + { + "id": 118883, + "nodeType": "UncheckedBlock", + "src": "8021:32:163", + "statements": [ + { + "expression": { + "id": 118881, +>>>>>>> Stashed changes ======= "id": 118879, "nodeType": "ExpressionStatement", @@ -14361,6 +19634,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7954:3:147", "subExpression": { @@ -14370,6 +19644,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86930, "src": "7956:1:147", +======= + "src": "8041:3:163", + "subExpression": { + "id": 118880, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "8043:1:163", +>>>>>>> Stashed changes ======= "src": "8041:3:163", "subExpression": { @@ -14390,10 +19674,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86958, "nodeType": "ExpressionStatement", "src": "7954:3:147" +======= + "id": 118882, + "nodeType": "ExpressionStatement", + "src": "8041:3:163" +>>>>>>> Stashed changes ======= "id": 118882, "nodeType": "ExpressionStatement", @@ -14409,8 +19699,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86934, +======= + "id": 118858, +>>>>>>> Stashed changes ======= "id": 118858, >>>>>>> Stashed changes @@ -14419,6 +19713,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86932, "name": "i", @@ -14426,6 +19721,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86930, "src": "7803:1:147", +======= + "id": 118856, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118854, + "src": "7890:1:163", +>>>>>>> Stashed changes ======= "id": 118856, "name": "i", @@ -14442,6 +19745,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86933, "name": "length", @@ -14449,6 +19753,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86908, "src": "7807:6:147", +======= + "id": 118857, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118832, + "src": "7894:6:163", +>>>>>>> Stashed changes ======= "id": 118857, "name": "length", @@ -14462,8 +19774,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7803:10:147", +======= + "src": "7890:10:163", +>>>>>>> Stashed changes ======= "src": "7890:10:163", >>>>>>> Stashed changes @@ -14472,11 +19788,18 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86961, "initializationExpression": { "assignments": [ 86930 +======= + "id": 118885, + "initializationExpression": { + "assignments": [ + 118854 +>>>>>>> Stashed changes ======= "id": 118885, "initializationExpression": { @@ -14487,6 +19810,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86930, "mutability": "mutable", @@ -14495,6 +19819,15 @@ "nodeType": "VariableDeclaration", "scope": 86961, "src": "7792:9:147", +======= + "id": 118854, + "mutability": "mutable", + "name": "i", + "nameLocation": "7887:1:163", + "nodeType": "VariableDeclaration", + "scope": 118885, + "src": "7879:9:163", +>>>>>>> Stashed changes ======= "id": 118854, "mutability": "mutable", @@ -14511,11 +19844,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86929, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7792:7:147", +======= + "id": 118853, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7879:7:163", +>>>>>>> Stashed changes ======= "id": 118853, "name": "uint256", @@ -14530,6 +19870,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86931, "nodeType": "VariableDeclarationStatement", @@ -14537,6 +19878,14 @@ }, "nodeType": "ForStatement", "src": "7787:185:147" +======= + "id": 118855, + "nodeType": "VariableDeclarationStatement", + "src": "7879:9:163" + }, + "nodeType": "ForStatement", + "src": "7874:185:163" +>>>>>>> Stashed changes ======= "id": 118855, "nodeType": "VariableDeclarationStatement", @@ -14549,6 +19898,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91607 ], @@ -14556,6 +19906,14 @@ "id": 86886, "nodeType": "StructuredDocumentation", "src": "7322:41:147", +======= + 123552 + ], + "documentation": { + "id": 118810, + "nodeType": "StructuredDocumentation", + "src": "7409:41:163", +>>>>>>> Stashed changes ======= 123552 ], @@ -14573,6 +19931,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86901, "name": "OPERATOR_ROLE", @@ -14580,6 +19939,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86374, "src": "7555:13:147", +======= + "id": 118825, + "name": "OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118289, + "src": "7642:13:163", +>>>>>>> Stashed changes ======= "id": 118825, "name": "OPERATOR_ROLE", @@ -14594,6 +19961,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86902, "kind": "modifierInvocation", @@ -14615,6 +19983,28 @@ "nameLocation": "7375:21:147", "parameters": { "id": 86899, +======= + "id": 118826, + "kind": "modifierInvocation", + "modifierName": { + "id": 118824, + "name": "onlyRole", + "nameLocations": [ + "7633:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "7633:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "7633:23:163" + } + ], + "name": "bulkTrySetDomainPrice", + "nameLocation": "7462:21:163", + "parameters": { + "id": 118823, +>>>>>>> Stashed changes ======= "id": 118826, "kind": "modifierInvocation", @@ -14641,6 +20031,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86889, "mutability": "mutable", @@ -14649,6 +20040,15 @@ "nodeType": "VariableDeclaration", "scope": 86963, "src": "7402:27:147", +======= + "id": 118813, + "mutability": "mutable", + "name": "lbHashes", + "nameLocation": "7508:8:163", + "nodeType": "VariableDeclaration", + "scope": 118887, + "src": "7489:27:163", +>>>>>>> Stashed changes ======= "id": 118813, "mutability": "mutable", @@ -14666,11 +20066,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86887, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7402:7:147", +======= + "id": 118811, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7489:7:163", +>>>>>>> Stashed changes ======= "id": 118811, "name": "bytes32", @@ -14682,10 +20089,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86888, "nodeType": "ArrayTypeName", "src": "7402:9:147", +======= + "id": 118812, + "nodeType": "ArrayTypeName", + "src": "7489:9:163", +>>>>>>> Stashed changes ======= "id": 118812, "nodeType": "ArrayTypeName", @@ -14700,6 +20113,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86892, "mutability": "mutable", @@ -14708,6 +20122,15 @@ "nodeType": "VariableDeclaration", "scope": 86963, "src": "7435:28:147", +======= + "id": 118816, + "mutability": "mutable", + "name": "ronPrices", + "nameLocation": "7541:9:163", + "nodeType": "VariableDeclaration", + "scope": 118887, + "src": "7522:28:163", +>>>>>>> Stashed changes ======= "id": 118816, "mutability": "mutable", @@ -14725,11 +20148,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86890, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7435:7:147", +======= + "id": 118814, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7522:7:163", +>>>>>>> Stashed changes ======= "id": 118814, "name": "uint256", @@ -14741,10 +20171,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86891, "nodeType": "ArrayTypeName", "src": "7435:9:147", +======= + "id": 118815, + "nodeType": "ArrayTypeName", + "src": "7522:9:163", +>>>>>>> Stashed changes ======= "id": 118815, "nodeType": "ArrayTypeName", @@ -14759,6 +20195,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86895, "mutability": "mutable", @@ -14767,6 +20204,15 @@ "nodeType": "VariableDeclaration", "scope": 86963, "src": "7469:30:147", +======= + "id": 118819, + "mutability": "mutable", + "name": "proofHashes", + "nameLocation": "7575:11:163", + "nodeType": "VariableDeclaration", + "scope": 118887, + "src": "7556:30:163", +>>>>>>> Stashed changes ======= "id": 118819, "mutability": "mutable", @@ -14784,11 +20230,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86893, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7469:7:147", +======= + "id": 118817, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7556:7:163", +>>>>>>> Stashed changes ======= "id": 118817, "name": "bytes32", @@ -14800,10 +20253,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86894, "nodeType": "ArrayTypeName", "src": "7469:9:147", +======= + "id": 118818, + "nodeType": "ArrayTypeName", + "src": "7556:9:163", +>>>>>>> Stashed changes ======= "id": 118818, "nodeType": "ArrayTypeName", @@ -14818,6 +20277,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86898, "mutability": "mutable", @@ -14826,6 +20286,15 @@ "nodeType": "VariableDeclaration", "scope": 86963, "src": "7505:27:147", +======= + "id": 118822, + "mutability": "mutable", + "name": "setTypes", + "nameLocation": "7611:8:163", + "nodeType": "VariableDeclaration", + "scope": 118887, + "src": "7592:27:163", +>>>>>>> Stashed changes ======= "id": 118822, "mutability": "mutable", @@ -14843,11 +20312,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86896, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7505:7:147", +======= + "id": 118820, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7592:7:163", +>>>>>>> Stashed changes ======= "id": 118820, "name": "uint256", @@ -14859,10 +20335,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86897, "nodeType": "ArrayTypeName", "src": "7505:9:147", +======= + "id": 118821, + "nodeType": "ArrayTypeName", + "src": "7592:9:163", +>>>>>>> Stashed changes ======= "id": 118821, "nodeType": "ArrayTypeName", @@ -14876,11 +20358,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7396:140:147" }, "returnParameters": { "id": 86906, +======= + "src": "7483:140:163" + }, + "returnParameters": { + "id": 118830, +>>>>>>> Stashed changes ======= "src": "7483:140:163" }, @@ -14891,6 +20380,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86905, "mutability": "mutable", @@ -14899,6 +20389,15 @@ "nodeType": "VariableDeclaration", "scope": 86963, "src": "7579:21:147", +======= + "id": 118829, + "mutability": "mutable", + "name": "updated", + "nameLocation": "7680:7:163", + "nodeType": "VariableDeclaration", + "scope": 118887, + "src": "7666:21:163", +>>>>>>> Stashed changes ======= "id": 118829, "mutability": "mutable", @@ -14916,11 +20415,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86903, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7579:4:147", +======= + "id": 118827, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7666:4:163", +>>>>>>> Stashed changes ======= "id": 118827, "name": "bool", @@ -14932,10 +20438,16 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86904, "nodeType": "ArrayTypeName", "src": "7579:6:147", +======= + "id": 118828, + "nodeType": "ArrayTypeName", + "src": "7666:6:163", +>>>>>>> Stashed changes ======= "id": 118828, "nodeType": "ArrayTypeName", @@ -14949,10 +20461,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "7578:23:147" }, "scope": 87685, +======= + "src": "7665:23:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "7665:23:163" }, @@ -14963,6 +20481,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87026, "nodeType": "FunctionDefinition", @@ -14972,6 +20491,16 @@ "id": 87025, "nodeType": "Block", "src": "8226:325:147", +======= + "id": 118950, + "nodeType": "FunctionDefinition", + "src": "8111:527:163", + "nodes": [], + "body": { + "id": 118949, + "nodeType": "Block", + "src": "8313:325:163", +>>>>>>> Stashed changes ======= "id": 118950, "nodeType": "FunctionDefinition", @@ -14986,8 +20515,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 86983 +======= + 118907 +>>>>>>> Stashed changes ======= 118907 >>>>>>> Stashed changes @@ -14995,6 +20528,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86983, "mutability": "mutable", @@ -15003,6 +20537,15 @@ "nodeType": "VariableDeclaration", "scope": 87025, "src": "8232:14:147", +======= + "id": 118907, + "mutability": "mutable", + "name": "length", + "nameLocation": "8327:6:163", + "nodeType": "VariableDeclaration", + "scope": 118949, + "src": "8319:14:163", +>>>>>>> Stashed changes ======= "id": 118907, "mutability": "mutable", @@ -15019,11 +20562,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86982, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8232:7:147", +======= + "id": 118906, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8319:7:163", +>>>>>>> Stashed changes ======= "id": 118906, "name": "uint256", @@ -15038,6 +20588,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86990, "initialValue": { @@ -15049,6 +20600,18 @@ "overloadedDeclarations": [], "referencedDeclaration": 86967, "src": "8290:8:147", +======= + "id": 118914, + "initialValue": { + "arguments": [ + { + "id": 118909, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118891, + "src": "8377:8:163", +>>>>>>> Stashed changes ======= "id": 118914, "initialValue": { @@ -15067,6 +20630,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86986, "name": "ronPrices", @@ -15074,6 +20638,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86970, "src": "8300:9:147", +======= + "id": 118910, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118894, + "src": "8387:9:163", +>>>>>>> Stashed changes ======= "id": 118910, "name": "ronPrices", @@ -15088,6 +20660,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86987, "name": "proofHashes", @@ -15095,6 +20668,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86973, "src": "8311:11:147", +======= + "id": 118911, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118897, + "src": "8398:11:163", +>>>>>>> Stashed changes ======= "id": 118911, "name": "proofHashes", @@ -15109,6 +20690,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86988, "name": "setTypes", @@ -15116,6 +20698,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86976, "src": "8324:8:147", +======= + "id": 118912, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118900, + "src": "8411:8:163", +>>>>>>> Stashed changes ======= "id": 118912, "name": "setTypes", @@ -15149,6 +20739,7 @@ "typeString": "uint256[] calldata" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86984, "name": "_requireBulkSetDomainPriceArgumentsValid", @@ -15156,6 +20747,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87423, "src": "8249:40:147", +======= + "id": 118908, + "name": "_requireBulkSetDomainPriceArgumentsValid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119185, + "src": "8336:40:163", +>>>>>>> Stashed changes ======= "id": 118908, "name": "_requireBulkSetDomainPriceArgumentsValid", @@ -15169,8 +20768,12 @@ "typeString": "function (bytes32[] calldata,uint256[] calldata,bytes32[] calldata,uint256[] calldata) pure returns (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86989, +======= + "id": 118913, +>>>>>>> Stashed changes ======= "id": 118913, >>>>>>> Stashed changes @@ -15182,8 +20785,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8249:84:147", +======= + "src": "8336:84:163", +>>>>>>> Stashed changes ======= "src": "8336:84:163", >>>>>>> Stashed changes @@ -15194,12 +20801,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8232:101:147" }, { "assignments": [ 86992 +======= + "src": "8319:101:163" + }, + { + "assignments": [ + 118916 +>>>>>>> Stashed changes ======= "src": "8319:101:163" }, @@ -15211,6 +20826,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86992, "mutability": "mutable", @@ -15219,6 +20835,15 @@ "nodeType": "VariableDeclaration", "scope": 87025, "src": "8339:16:147", +======= + "id": 118916, + "mutability": "mutable", + "name": "operator", + "nameLocation": "8434:8:163", + "nodeType": "VariableDeclaration", + "scope": 118949, + "src": "8426:16:163", +>>>>>>> Stashed changes ======= "id": 118916, "mutability": "mutable", @@ -15235,11 +20860,18 @@ "typeString": "address" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86991, "name": "address", "nodeType": "ElementaryTypeName", "src": "8339:7:147", +======= + "id": 118915, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8426:7:163", +>>>>>>> Stashed changes ======= "id": 118915, "name": "address", @@ -15255,8 +20887,12 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86995, +======= + "id": 118919, +>>>>>>> Stashed changes ======= "id": 118919, >>>>>>> Stashed changes @@ -15264,6 +20900,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86993, "name": "_msgSender", @@ -15271,6 +20908,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 72664, "src": "8358:10:147", +======= + "id": 118917, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "8445:10:163", +>>>>>>> Stashed changes ======= "id": 118917, "name": "_msgSender", @@ -15284,8 +20929,12 @@ "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86994, +======= + "id": 118918, +>>>>>>> Stashed changes ======= "id": 118918, >>>>>>> Stashed changes @@ -15297,8 +20946,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8358:12:147", +======= + "src": "8445:12:163", +>>>>>>> Stashed changes ======= "src": "8445:12:163", >>>>>>> Stashed changes @@ -15309,6 +20962,7 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8339:31:147" }, @@ -15317,6 +20971,15 @@ "id": 87023, "nodeType": "Block", "src": "8406:141:147", +======= + "src": "8426:31:163" + }, + { + "body": { + "id": 118947, + "nodeType": "Block", + "src": "8493:141:163", +>>>>>>> Stashed changes ======= "src": "8426:31:163" }, @@ -15331,6 +20994,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87003, "name": "operator", @@ -15338,6 +21002,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86992, "src": "8430:8:147", +======= + "id": 118927, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118916, + "src": "8517:8:163", +>>>>>>> Stashed changes ======= "id": 118927, "name": "operator", @@ -15353,6 +21025,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87004, "name": "lbHashes", @@ -15360,6 +21033,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86967, "src": "8440:8:147", +======= + "id": 118928, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118891, + "src": "8527:8:163", +>>>>>>> Stashed changes ======= "id": 118928, "name": "lbHashes", @@ -15373,6 +21054,7 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87006, "indexExpression": { @@ -15382,6 +21064,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86997, "src": "8449:1:147", +======= + "id": 118930, + "indexExpression": { + "id": 118929, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8536:1:163", +>>>>>>> Stashed changes ======= "id": 118930, "indexExpression": { @@ -15402,8 +21094,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8440:11:147", +======= + "src": "8527:11:163", +>>>>>>> Stashed changes ======= "src": "8527:11:163", >>>>>>> Stashed changes @@ -15414,6 +21110,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87007, "name": "ronPrices", @@ -15421,6 +21118,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86970, "src": "8453:9:147", +======= + "id": 118931, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118894, + "src": "8540:9:163", +>>>>>>> Stashed changes ======= "id": 118931, "name": "ronPrices", @@ -15434,6 +21139,7 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87009, "indexExpression": { @@ -15443,6 +21149,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86997, "src": "8463:1:147", +======= + "id": 118933, + "indexExpression": { + "id": 118932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8550:1:163", +>>>>>>> Stashed changes ======= "id": 118933, "indexExpression": { @@ -15463,8 +21179,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8453:12:147", +======= + "src": "8540:12:163", +>>>>>>> Stashed changes ======= "src": "8540:12:163", >>>>>>> Stashed changes @@ -15475,6 +21195,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87010, "name": "proofHashes", @@ -15482,6 +21203,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86973, "src": "8467:11:147", +======= + "id": 118934, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118897, + "src": "8554:11:163", +>>>>>>> Stashed changes ======= "id": 118934, "name": "proofHashes", @@ -15495,6 +21224,7 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87012, "indexExpression": { @@ -15504,6 +21234,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86997, "src": "8479:1:147", +======= + "id": 118936, + "indexExpression": { + "id": 118935, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8566:1:163", +>>>>>>> Stashed changes ======= "id": 118936, "indexExpression": { @@ -15524,8 +21264,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8467:14:147", +======= + "src": "8554:14:163", +>>>>>>> Stashed changes ======= "src": "8554:14:163", >>>>>>> Stashed changes @@ -15536,6 +21280,7 @@ }, { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87013, "name": "setTypes", @@ -15543,6 +21288,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86976, "src": "8483:8:147", +======= + "id": 118937, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118900, + "src": "8570:8:163", +>>>>>>> Stashed changes ======= "id": 118937, "name": "setTypes", @@ -15556,6 +21309,7 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87015, "indexExpression": { @@ -15565,6 +21319,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86997, "src": "8492:1:147", +======= + "id": 118939, + "indexExpression": { + "id": 118938, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8579:1:163", +>>>>>>> Stashed changes ======= "id": 118939, "indexExpression": { @@ -15585,8 +21349,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8483:11:147", +======= + "src": "8570:11:163", +>>>>>>> Stashed changes ======= "src": "8570:11:163", >>>>>>> Stashed changes @@ -15597,8 +21365,12 @@ }, { "hexValue": "74727565", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87016, +======= + "id": 118940, +>>>>>>> Stashed changes ======= "id": 118940, >>>>>>> Stashed changes @@ -15608,8 +21380,12 @@ "kind": "bool", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8496:4:147", +======= + "src": "8583:4:163", +>>>>>>> Stashed changes ======= "src": "8583:4:163", >>>>>>> Stashed changes @@ -15647,6 +21423,7 @@ "typeString": "bool" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87002, "name": "_setDomainPrice", @@ -15654,6 +21431,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87488, "src": "8414:15:147", +======= + "id": 118926, + "name": "_setDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119250, + "src": "8501:15:163", +>>>>>>> Stashed changes ======= "id": 118926, "name": "_setDomainPrice", @@ -15667,8 +21452,12 @@ "typeString": "function (address,bytes32,uint256,bytes32,uint256,bool) returns (bool)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87017, +======= + "id": 118941, +>>>>>>> Stashed changes ======= "id": 118941, >>>>>>> Stashed changes @@ -15680,8 +21469,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8414:87:147", +======= + "src": "8501:87:163", +>>>>>>> Stashed changes ======= "src": "8501:87:163", >>>>>>> Stashed changes @@ -15691,6 +21484,7 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87018, "nodeType": "ExpressionStatement", @@ -15704,6 +21498,20 @@ { "expression": { "id": 87020, +======= + "id": 118942, + "nodeType": "ExpressionStatement", + "src": "8501:87:163" + }, + { + "id": 118946, + "nodeType": "UncheckedBlock", + "src": "8596:32:163", + "statements": [ + { + "expression": { + "id": 118944, +>>>>>>> Stashed changes ======= "id": 118942, "nodeType": "ExpressionStatement", @@ -15725,6 +21533,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8529:3:147", "subExpression": { @@ -15734,6 +21543,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86997, "src": "8531:1:147", +======= + "src": "8616:3:163", + "subExpression": { + "id": 118943, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8618:1:163", +>>>>>>> Stashed changes ======= "src": "8616:3:163", "subExpression": { @@ -15754,10 +21573,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87021, "nodeType": "ExpressionStatement", "src": "8529:3:147" +======= + "id": 118945, + "nodeType": "ExpressionStatement", + "src": "8616:3:163" +>>>>>>> Stashed changes ======= "id": 118945, "nodeType": "ExpressionStatement", @@ -15773,8 +21598,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87001, +======= + "id": 118925, +>>>>>>> Stashed changes ======= "id": 118925, >>>>>>> Stashed changes @@ -15783,6 +21612,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86999, "name": "i", @@ -15790,6 +21620,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86997, "src": "8393:1:147", +======= + "id": 118923, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118921, + "src": "8480:1:163", +>>>>>>> Stashed changes ======= "id": 118923, "name": "i", @@ -15806,6 +21644,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87000, "name": "length", @@ -15813,6 +21652,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86983, "src": "8397:6:147", +======= + "id": 118924, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118907, + "src": "8484:6:163", +>>>>>>> Stashed changes ======= "id": 118924, "name": "length", @@ -15826,8 +21673,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8393:10:147", +======= + "src": "8480:10:163", +>>>>>>> Stashed changes ======= "src": "8480:10:163", >>>>>>> Stashed changes @@ -15836,11 +21687,18 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87024, "initializationExpression": { "assignments": [ 86997 +======= + "id": 118948, + "initializationExpression": { + "assignments": [ + 118921 +>>>>>>> Stashed changes ======= "id": 118948, "initializationExpression": { @@ -15851,6 +21709,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86997, "mutability": "mutable", @@ -15859,6 +21718,15 @@ "nodeType": "VariableDeclaration", "scope": 87024, "src": "8382:9:147", +======= + "id": 118921, + "mutability": "mutable", + "name": "i", + "nameLocation": "8477:1:163", + "nodeType": "VariableDeclaration", + "scope": 118948, + "src": "8469:9:163", +>>>>>>> Stashed changes ======= "id": 118921, "mutability": "mutable", @@ -15875,11 +21743,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86996, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8382:7:147", +======= + "id": 118920, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8469:7:163", +>>>>>>> Stashed changes ======= "id": 118920, "name": "uint256", @@ -15894,6 +21769,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86998, "nodeType": "VariableDeclarationStatement", @@ -15901,6 +21777,14 @@ }, "nodeType": "ForStatement", "src": "8377:170:147" +======= + "id": 118922, + "nodeType": "VariableDeclarationStatement", + "src": "8469:9:163" + }, + "nodeType": "ForStatement", + "src": "8464:170:163" +>>>>>>> Stashed changes ======= "id": 118922, "nodeType": "VariableDeclarationStatement", @@ -15913,6 +21797,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91623 ], @@ -15920,6 +21805,14 @@ "id": 86964, "nodeType": "StructuredDocumentation", "src": "7980:41:147", +======= + 123568 + ], + "documentation": { + "id": 118888, + "nodeType": "StructuredDocumentation", + "src": "8067:41:163", +>>>>>>> Stashed changes ======= 123568 ], @@ -15937,6 +21830,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86979, "name": "OVERRIDER_ROLE", @@ -15944,6 +21838,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86380, "src": "8210:14:147", +======= + "id": 118903, + "name": "OVERRIDER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118295, + "src": "8297:14:163", +>>>>>>> Stashed changes ======= "id": 118903, "name": "OVERRIDER_ROLE", @@ -15958,6 +21860,7 @@ } } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86980, "kind": "modifierInvocation", @@ -15979,6 +21882,28 @@ "nameLocation": "8033:18:147", "parameters": { "id": 86977, +======= + "id": 118904, + "kind": "modifierInvocation", + "modifierName": { + "id": 118902, + "name": "onlyRole", + "nameLocations": [ + "8288:8:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 99849, + "src": "8288:8:163" + }, + "nodeType": "ModifierInvocation", + "src": "8288:24:163" + } + ], + "name": "bulkSetDomainPrice", + "nameLocation": "8120:18:163", + "parameters": { + "id": 118901, +>>>>>>> Stashed changes ======= "id": 118904, "kind": "modifierInvocation", @@ -16005,6 +21930,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86967, "mutability": "mutable", @@ -16013,6 +21939,15 @@ "nodeType": "VariableDeclaration", "scope": 87026, "src": "8057:27:147", +======= + "id": 118891, + "mutability": "mutable", + "name": "lbHashes", + "nameLocation": "8163:8:163", + "nodeType": "VariableDeclaration", + "scope": 118950, + "src": "8144:27:163", +>>>>>>> Stashed changes ======= "id": 118891, "mutability": "mutable", @@ -16030,11 +21965,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86965, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8057:7:147", +======= + "id": 118889, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8144:7:163", +>>>>>>> Stashed changes ======= "id": 118889, "name": "bytes32", @@ -16046,10 +21988,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86966, "nodeType": "ArrayTypeName", "src": "8057:9:147", +======= + "id": 118890, + "nodeType": "ArrayTypeName", + "src": "8144:9:163", +>>>>>>> Stashed changes ======= "id": 118890, "nodeType": "ArrayTypeName", @@ -16064,6 +22012,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86970, "mutability": "mutable", @@ -16072,6 +22021,15 @@ "nodeType": "VariableDeclaration", "scope": 87026, "src": "8090:28:147", +======= + "id": 118894, + "mutability": "mutable", + "name": "ronPrices", + "nameLocation": "8196:9:163", + "nodeType": "VariableDeclaration", + "scope": 118950, + "src": "8177:28:163", +>>>>>>> Stashed changes ======= "id": 118894, "mutability": "mutable", @@ -16089,11 +22047,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86968, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8090:7:147", +======= + "id": 118892, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8177:7:163", +>>>>>>> Stashed changes ======= "id": 118892, "name": "uint256", @@ -16105,10 +22070,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86969, "nodeType": "ArrayTypeName", "src": "8090:9:147", +======= + "id": 118893, + "nodeType": "ArrayTypeName", + "src": "8177:9:163", +>>>>>>> Stashed changes ======= "id": 118893, "nodeType": "ArrayTypeName", @@ -16123,6 +22094,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86973, "mutability": "mutable", @@ -16131,6 +22103,15 @@ "nodeType": "VariableDeclaration", "scope": 87026, "src": "8124:30:147", +======= + "id": 118897, + "mutability": "mutable", + "name": "proofHashes", + "nameLocation": "8230:11:163", + "nodeType": "VariableDeclaration", + "scope": 118950, + "src": "8211:30:163", +>>>>>>> Stashed changes ======= "id": 118897, "mutability": "mutable", @@ -16148,11 +22129,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86971, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8124:7:147", +======= + "id": 118895, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8211:7:163", +>>>>>>> Stashed changes ======= "id": 118895, "name": "bytes32", @@ -16164,10 +22152,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86972, "nodeType": "ArrayTypeName", "src": "8124:9:147", +======= + "id": 118896, + "nodeType": "ArrayTypeName", + "src": "8211:9:163", +>>>>>>> Stashed changes ======= "id": 118896, "nodeType": "ArrayTypeName", @@ -16182,6 +22176,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86976, "mutability": "mutable", @@ -16190,6 +22185,15 @@ "nodeType": "VariableDeclaration", "scope": 87026, "src": "8160:27:147", +======= + "id": 118900, + "mutability": "mutable", + "name": "setTypes", + "nameLocation": "8266:8:163", + "nodeType": "VariableDeclaration", + "scope": 118950, + "src": "8247:27:163", +>>>>>>> Stashed changes ======= "id": 118900, "mutability": "mutable", @@ -16207,11 +22211,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86974, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8160:7:147", +======= + "id": 118898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8247:7:163", +>>>>>>> Stashed changes ======= "id": 118898, "name": "uint256", @@ -16223,10 +22234,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86975, "nodeType": "ArrayTypeName", "src": "8160:9:147", +======= + "id": 118899, + "nodeType": "ArrayTypeName", + "src": "8247:9:163", +>>>>>>> Stashed changes ======= "id": 118899, "nodeType": "ArrayTypeName", @@ -16240,6 +22257,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8051:140:147" }, @@ -16250,6 +22268,17 @@ "src": "8226:0:147" }, "scope": 87685, +======= + "src": "8138:140:163" + }, + "returnParameters": { + "id": 118905, + "nodeType": "ParameterList", + "parameters": [], + "src": "8313:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "8138:140:163" }, @@ -16266,6 +22295,7 @@ "visibility": "external" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87051, "nodeType": "FunctionDefinition", @@ -16275,6 +22305,16 @@ "id": 87050, "nodeType": "Block", "src": "8701:98:147", +======= + "id": 118975, + "nodeType": "FunctionDefinition", + "src": "8686:200:163", + "nodes": [], + "body": { + "id": 118974, + "nodeType": "Block", + "src": "8788:98:163", +>>>>>>> Stashed changes ======= "id": 118975, "nodeType": "FunctionDefinition", @@ -16289,8 +22329,12 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87042, +======= + "id": 118966, +>>>>>>> Stashed changes ======= "id": 118966, >>>>>>> Stashed changes @@ -16299,6 +22343,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87036, "name": "usdPrice", @@ -16306,6 +22351,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87032, "src": "8707:8:147", +======= + "id": 118960, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118956, + "src": "8794:8:163", +>>>>>>> Stashed changes ======= "id": 118960, "name": "usdPrice", @@ -16328,6 +22381,7 @@ "expression": { "argumentTypes": [], "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87038, "name": "label", @@ -16335,6 +22389,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87029, "src": "8734:5:147", +======= + "id": 118962, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118953, + "src": "8821:5:163", +>>>>>>> Stashed changes ======= "id": 118962, "name": "label", @@ -16348,8 +22410,12 @@ "typeString": "string memory" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87039, +======= + "id": 118963, +>>>>>>> Stashed changes ======= "id": 118963, >>>>>>> Stashed changes @@ -16357,12 +22423,20 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "8740:9:147", "memberName": "hashLabel", "nodeType": "MemberAccess", "referencedDeclaration": 93096, "src": "8734:15:147", +======= + "memberLocation": "8827:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "8821:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "8827:9:163", "memberName": "hashLabel", @@ -16375,8 +22449,12 @@ "typeString": "function (string memory) pure returns (bytes32)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87040, +======= + "id": 118964, +>>>>>>> Stashed changes ======= "id": 118964, >>>>>>> Stashed changes @@ -16388,8 +22466,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8734:17:147", +======= + "src": "8821:17:163", +>>>>>>> Stashed changes ======= "src": "8821:17:163", >>>>>>> Stashed changes @@ -16407,6 +22489,7 @@ "typeString": "bytes32" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87037, "name": "_getDomainPrice", @@ -16414,6 +22497,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87684, "src": "8718:15:147", +======= + "id": 118961, + "name": "_getDomainPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119625, + "src": "8805:15:163", +>>>>>>> Stashed changes ======= "id": 118961, "name": "_getDomainPrice", @@ -16427,8 +22518,12 @@ "typeString": "function (bytes32) view returns (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87041, +======= + "id": 118965, +>>>>>>> Stashed changes ======= "id": 118965, >>>>>>> Stashed changes @@ -16440,8 +22535,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8718:34:147", +======= + "src": "8805:34:163", +>>>>>>> Stashed changes ======= "src": "8805:34:163", >>>>>>> Stashed changes @@ -16451,8 +22550,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8707:45:147", +======= + "src": "8794:45:163", +>>>>>>> Stashed changes ======= "src": "8794:45:163", >>>>>>> Stashed changes @@ -16461,6 +22564,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87043, "nodeType": "ExpressionStatement", @@ -16469,6 +22573,15 @@ { "expression": { "id": 87048, +======= + "id": 118967, + "nodeType": "ExpressionStatement", + "src": "8794:45:163" + }, + { + "expression": { + "id": 118972, +>>>>>>> Stashed changes ======= "id": 118967, "nodeType": "ExpressionStatement", @@ -16483,6 +22596,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87044, "name": "ronPrice", @@ -16490,6 +22604,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87034, "src": "8758:8:147", +======= + "id": 118968, + "name": "ronPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118958, + "src": "8845:8:163", +>>>>>>> Stashed changes ======= "id": 118968, "name": "ronPrice", @@ -16508,6 +22630,7 @@ "rightHandSide": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87046, "name": "usdPrice", @@ -16515,6 +22638,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87032, "src": "8785:8:147", +======= + "id": 118970, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118956, + "src": "8872:8:163", +>>>>>>> Stashed changes ======= "id": 118970, "name": "usdPrice", @@ -16536,6 +22667,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87045, "name": "convertUSDToRON", @@ -16543,6 +22675,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87350, "src": "8769:15:147", +======= + "id": 118969, + "name": "convertUSDToRON", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119112, + "src": "8856:15:163", +>>>>>>> Stashed changes ======= "id": 118969, "name": "convertUSDToRON", @@ -16556,8 +22696,12 @@ "typeString": "function (uint256) view returns (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87047, +======= + "id": 118971, +>>>>>>> Stashed changes ======= "id": 118971, >>>>>>> Stashed changes @@ -16569,8 +22713,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8769:25:147", +======= + "src": "8856:25:163", +>>>>>>> Stashed changes ======= "src": "8856:25:163", >>>>>>> Stashed changes @@ -16580,8 +22728,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8758:36:147", +======= + "src": "8845:36:163", +>>>>>>> Stashed changes ======= "src": "8845:36:163", >>>>>>> Stashed changes @@ -16590,10 +22742,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87049, "nodeType": "ExpressionStatement", "src": "8758:36:147" +======= + "id": 118973, + "nodeType": "ExpressionStatement", + "src": "8845:36:163" +>>>>>>> Stashed changes ======= "id": 118973, "nodeType": "ExpressionStatement", @@ -16603,6 +22761,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91530 ], @@ -16610,6 +22769,14 @@ "id": 87027, "nodeType": "StructuredDocumentation", "src": "8555:41:147", +======= + 123472 + ], + "documentation": { + "id": 118951, + "nodeType": "StructuredDocumentation", + "src": "8642:41:163", +>>>>>>> Stashed changes ======= 123472 ], @@ -16625,10 +22792,16 @@ "kind": "function", "modifiers": [], "name": "getDomainPrice", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "8608:14:147", "parameters": { "id": 87030, +======= + "nameLocation": "8695:14:163", + "parameters": { + "id": 118954, +>>>>>>> Stashed changes ======= "nameLocation": "8695:14:163", "parameters": { @@ -16638,6 +22811,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87029, "mutability": "mutable", @@ -16646,6 +22820,15 @@ "nodeType": "VariableDeclaration", "scope": 87051, "src": "8623:19:147", +======= + "id": 118953, + "mutability": "mutable", + "name": "label", + "nameLocation": "8724:5:163", + "nodeType": "VariableDeclaration", + "scope": 118975, + "src": "8710:19:163", +>>>>>>> Stashed changes ======= "id": 118953, "mutability": "mutable", @@ -16662,11 +22845,18 @@ "typeString": "string" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87028, "name": "string", "nodeType": "ElementaryTypeName", "src": "8623:6:147", +======= + "id": 118952, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8710:6:163", +>>>>>>> Stashed changes ======= "id": 118952, "name": "string", @@ -16681,11 +22871,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8622:21:147" }, "returnParameters": { "id": 87035, +======= + "src": "8709:21:163" + }, + "returnParameters": { + "id": 118959, +>>>>>>> Stashed changes ======= "src": "8709:21:163" }, @@ -16696,6 +22893,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87032, "mutability": "mutable", @@ -16704,6 +22902,15 @@ "nodeType": "VariableDeclaration", "scope": 87051, "src": "8665:16:147", +======= + "id": 118956, + "mutability": "mutable", + "name": "usdPrice", + "nameLocation": "8760:8:163", + "nodeType": "VariableDeclaration", + "scope": 118975, + "src": "8752:16:163", +>>>>>>> Stashed changes ======= "id": 118956, "mutability": "mutable", @@ -16720,11 +22927,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87031, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8665:7:147", +======= + "id": 118955, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8752:7:163", +>>>>>>> Stashed changes ======= "id": 118955, "name": "uint256", @@ -16740,6 +22954,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87034, "mutability": "mutable", @@ -16748,6 +22963,15 @@ "nodeType": "VariableDeclaration", "scope": 87051, "src": "8683:16:147", +======= + "id": 118958, + "mutability": "mutable", + "name": "ronPrice", + "nameLocation": "8778:8:163", + "nodeType": "VariableDeclaration", + "scope": 118975, + "src": "8770:16:163", +>>>>>>> Stashed changes ======= "id": 118958, "mutability": "mutable", @@ -16764,11 +22988,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87033, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8683:7:147", +======= + "id": 118957, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8770:7:163", +>>>>>>> Stashed changes ======= "id": 118957, "name": "uint256", @@ -16783,10 +23014,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8664:36:147" }, "scope": 87685, +======= + "src": "8751:36:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "8751:36:163" }, @@ -16797,6 +23034,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87146, "nodeType": "FunctionDefinition", @@ -16806,6 +23044,16 @@ "id": 87145, "nodeType": "Block", "src": "8920:678:147", +======= + "id": 119045, + "nodeType": "FunctionDefinition", + "src": "8934:631:163", + "nodes": [], + "body": { + "id": 119044, + "nodeType": "Block", + "src": "9004:561:163", +>>>>>>> Stashed changes ======= "id": 119045, "nodeType": "FunctionDefinition", @@ -16820,8 +23068,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 87060 +======= + 118985 +>>>>>>> Stashed changes ======= 118985 >>>>>>> Stashed changes @@ -16829,6 +23081,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87060, "mutability": "mutable", @@ -16837,6 +23090,15 @@ "nodeType": "VariableDeclaration", "scope": 87145, "src": "8926:14:147", +======= + "id": 118985, + "mutability": "mutable", + "name": "lbHash", + "nameLocation": "9018:6:163", + "nodeType": "VariableDeclaration", + "scope": 119044, + "src": "9010:14:163", +>>>>>>> Stashed changes ======= "id": 118985, "mutability": "mutable", @@ -16853,11 +23115,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87059, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "8926:7:147", +======= + "id": 118984, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9010:7:163", +>>>>>>> Stashed changes ======= "id": 118984, "name": "bytes32", @@ -16872,8 +23141,12 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87064, +======= + "id": 118989, +>>>>>>> Stashed changes ======= "id": 118989, >>>>>>> Stashed changes @@ -16882,6 +23155,7 @@ "expression": { "argumentTypes": [], "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87061, "name": "label", @@ -16889,6 +23163,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87054, "src": "8943:5:147", +======= + "id": 118986, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118978, + "src": "9027:5:163", +>>>>>>> Stashed changes ======= "id": 118986, "name": "label", @@ -16902,8 +23184,12 @@ "typeString": "string memory" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87062, +======= + "id": 118987, +>>>>>>> Stashed changes ======= "id": 118987, >>>>>>> Stashed changes @@ -16911,12 +23197,20 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "8949:9:147", "memberName": "hashLabel", "nodeType": "MemberAccess", "referencedDeclaration": 93096, "src": "8943:15:147", +======= + "memberLocation": "9033:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "9027:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "9033:9:163", "memberName": "hashLabel", @@ -16929,8 +23223,12 @@ "typeString": "function (string memory) pure returns (bytes32)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87063, +======= + "id": 118988, +>>>>>>> Stashed changes ======= "id": 118988, >>>>>>> Stashed changes @@ -16942,8 +23240,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8943:17:147", +======= + "src": "9027:17:163", +>>>>>>> Stashed changes ======= "src": "9027:17:163", >>>>>>> Stashed changes @@ -16954,12 +23256,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8926:34:147" }, { "assignments": [ 87066 +======= + "src": "9010:34:163" + }, + { + "assignments": [ + 118991 +>>>>>>> Stashed changes ======= "src": "9010:34:163" }, @@ -16971,6 +23281,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87066, "mutability": "mutable", @@ -16979,6 +23290,15 @@ "nodeType": "VariableDeclaration", "scope": 87145, "src": "8966:22:147", +======= + "id": 118991, + "mutability": "mutable", + "name": "overriddenTier", + "nameLocation": "9056:14:163", + "nodeType": "VariableDeclaration", + "scope": 119044, + "src": "9050:20:163", +>>>>>>> Stashed changes ======= "id": 118991, "mutability": "mutable", @@ -16995,11 +23315,18 @@ "typeString": "uint8" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87065, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8966:7:147", +======= + "id": 118990, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9050:5:163", +>>>>>>> Stashed changes ======= "id": 118990, "name": "uint8", @@ -17014,6 +23341,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87070, "initialValue": { @@ -17024,6 +23352,17 @@ "overloadedDeclarations": [], "referencedDeclaration": 86430, "src": "8991:15:147", +======= + "id": 118995, + "initialValue": { + "baseExpression": { + "id": 118992, + "name": "_tierOverriding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118345, + "src": "9073:15:163", +>>>>>>> Stashed changes ======= "id": 118995, "initialValue": { @@ -17040,6 +23379,7 @@ "typeString": "mapping(bytes32 => uint8)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87069, "indexExpression": { @@ -17049,6 +23389,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 87060, "src": "9007:6:147", +======= + "id": 118994, + "indexExpression": { + "id": 118993, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118985, + "src": "9089:6:163", +>>>>>>> Stashed changes ======= "id": 118994, "indexExpression": { @@ -17069,9 +23419,12 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8991:23:147", ======= +======= +>>>>>>> Stashed changes "src": "9073:23:163", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -17487,6 +23840,9 @@ } }, "src": "9292:58:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -17494,8 +23850,12 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "8966:48:147" +======= + "src": "9272:78:163" +>>>>>>> Stashed changes ======= "src": "9272:78:163" >>>>>>> Stashed changes @@ -17506,8 +23866,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87073, +======= + "id": 119026, +>>>>>>> Stashed changes ======= "id": 119026, >>>>>>> Stashed changes @@ -17516,6 +23880,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87071, "name": "overriddenTier", @@ -18907,14 +25272,23 @@ "overloadedDeclarations": [], "referencedDeclaration": 87173, "src": "9943:20:147", +======= + "id": 119024, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119014, + "src": "9361:9:163", +>>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": ">", "rightExpression": { +<<<<<<< Updated upstream "hexValue": "30", "id": 87179, "isConstant": false, @@ -18924,19 +25298,31 @@ "lValueRequested": false, "nodeType": "Literal", "src": "9967:1:147", +======= + "id": 119025, + "name": "TIER_1_FROM_EXCLUDED_THRESHOLD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118271, + "src": "9373:30:163", +>>>>>>> Stashed changes "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, +<<<<<<< Updated upstream "src": "9943:25:147", +======= + "src": "9361:42:163", +>>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { +<<<<<<< Updated upstream "id": 87299, "nodeType": "Block", "src": "10039:877:147", @@ -18967,6 +25353,51 @@ "nodeType": "ElementaryTypeName", "src": "10047:7:147", ======= +======= + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 119033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 119031, + "name": "tierValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119014, + "src": "9447:9:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 119032, + "name": "TIER_2_FROM_EXCLUDED_THRESHOLD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118275, + "src": "9459:30:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9447:42:163", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { +>>>>>>> Stashed changes "id": 119041, "nodeType": "Block", "src": "9529:32:163", @@ -18980,12 +25411,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 123312, "src": "9544:4:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", "typeString": "type(enum INSDomainPrice.Tier)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "visibility": "internal" } @@ -19192,11 +25627,104 @@ "id": 87207, ======= "id": 119028, +>>>>>>> Stashed changes +======= + "id": 119039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9549:5:163", + "memberName": "Tier3", + "nodeType": "MemberAccess", + "referencedDeclaration": 123311, + "src": "9544:10:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "functionReturnParameters": 118983, + "id": 119040, + "nodeType": "Return", + "src": "9537:17:163" + } + ] + }, + "id": 119042, + "nodeType": "IfStatement", + "src": "9443:118:163", + "trueBody": { + "id": 119037, + "nodeType": "Block", + "src": "9491:32:163", + "statements": [ + { + "expression": { + "expression": { + "id": 119034, + "name": "Tier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123312, + "src": "9506:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" + } + }, + "id": 119035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9511:5:163", + "memberName": "Tier2", + "nodeType": "MemberAccess", + "referencedDeclaration": 123310, + "src": "9506:10:163", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Tier_$123312", + "typeString": "enum INSDomainPrice.Tier" + } + }, + "functionReturnParameters": 118983, + "id": 119036, + "nodeType": "Return", + "src": "9499:17:163" + } + ] + } + }, + "id": 119043, + "nodeType": "IfStatement", + "src": "9357:204:163", + "trueBody": { + "id": 119030, + "nodeType": "Block", + "src": "9405:32:163", + "statements": [ + { + "expression": { + "expression": { + "id": 119027, + "name": "Tier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123312, + "src": "9420:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Tier_$123312_$", + "typeString": "type(enum INSDomainPrice.Tier)" + } + }, + "id": 119028, >>>>>>> Stashed changes "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "leftHandSide": { "expression": { @@ -19272,17 +25800,23 @@ }, "src": "10124:45:147", ======= +======= +>>>>>>> Stashed changes "memberLocation": "9425:5:163", "memberName": "Tier1", "nodeType": "MemberAccess", "referencedDeclaration": 123309, "src": "9420:10:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_enum$_Tier_$123312", "typeString": "enum INSDomainPrice.Tier" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87208, "nodeType": "ExpressionStatement", @@ -20867,6 +27401,15 @@ "id": 87318, "nodeType": "ExpressionStatement", "src": "10962:46:147" +======= + "functionReturnParameters": 118983, + "id": 119029, + "nodeType": "Return", + "src": "9413:17:163" + } + ] + } +>>>>>>> Stashed changes ======= "functionReturnParameters": 118983, "id": 119029, @@ -20880,6 +27423,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91544 ], @@ -20887,6 +27431,14 @@ "id": 87147, "nodeType": "StructuredDocumentation", "src": "9602:41:147", +======= + 123495 + ], + "documentation": { + "id": 118976, + "nodeType": "StructuredDocumentation", + "src": "8890:41:163", +>>>>>>> Stashed changes ======= 123495 ], @@ -20901,11 +27453,18 @@ "implemented": true, "kind": "function", "modifiers": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "name": "getRenewalFee", "nameLocation": "9655:13:147", "parameters": { "id": 87152, +======= + "name": "getTier", + "nameLocation": "8943:7:163", + "parameters": { + "id": 118979, +>>>>>>> Stashed changes ======= "name": "getTier", "nameLocation": "8943:7:163", @@ -20916,6 +27475,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87149, "mutability": "mutable", @@ -20924,6 +27484,15 @@ "nodeType": "VariableDeclaration", "scope": 87320, "src": "9669:19:147", +======= + "id": 118978, + "mutability": "mutable", + "name": "label", + "nameLocation": "8965:5:163", + "nodeType": "VariableDeclaration", + "scope": 119045, + "src": "8951:19:163", +>>>>>>> Stashed changes ======= "id": 118978, "mutability": "mutable", @@ -20940,6 +27509,7 @@ "typeString": "string" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87148, "name": "string", @@ -20949,6 +27519,11 @@ "id": 118977, "name": "string", "nodeType": "ElementaryTypeName", +======= + "id": 118977, + "name": "string", + "nodeType": "ElementaryTypeName", +>>>>>>> Stashed changes "src": "8951:6:163", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", @@ -21428,6 +28003,9 @@ "name": "string", "nodeType": "ElementaryTypeName", "src": "9636:6:163", +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", @@ -21438,6 +28016,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87151, "mutability": "mutable", @@ -21446,6 +28025,15 @@ "nodeType": "VariableDeclaration", "scope": 87320, "src": "9690:16:147", +======= + "id": 119050, + "mutability": "mutable", + "name": "duration", + "nameLocation": "9665:8:163", + "nodeType": "VariableDeclaration", + "scope": 119082, + "src": "9657:16:163", +>>>>>>> Stashed changes ======= "id": 119050, "mutability": "mutable", @@ -21462,11 +28050,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87150, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9690:7:147", +======= + "id": 119049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9657:7:163", +>>>>>>> Stashed changes ======= "id": 119049, "name": "uint256", @@ -21481,11 +28076,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "9668:39:147" }, "returnParameters": { "id": 87159, +======= + "src": "9635:39:163" + }, + "returnParameters": { + "id": 119058, +>>>>>>> Stashed changes ======= "src": "9635:39:163" }, @@ -21496,6 +28098,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87155, "mutability": "mutable", @@ -21527,6 +28130,38 @@ "src": "9741:9:147", "typeDescriptions": { "typeIdentifier": "t_struct$_UnitPrice_$91381_storage_ptr", +======= + "id": 119054, + "mutability": "mutable", + "name": "basePrice", + "nameLocation": "9725:9:163", + "nodeType": "VariableDeclaration", + "scope": 119082, + "src": "9708:26:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + }, + "typeName": { + "id": 119053, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119052, + "name": "UnitPrice", + "nameLocations": [ + "9708:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123322, + "src": "9708:9:163" + }, + "referencedDeclaration": 123322, + "src": "9708:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", +>>>>>>> Stashed changes ======= "id": 119054, "mutability": "mutable", @@ -21566,6 +28201,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87158, "mutability": "mutable", @@ -21597,6 +28233,38 @@ "src": "9769:9:147", "typeDescriptions": { "typeIdentifier": "t_struct$_UnitPrice_$91381_storage_ptr", +======= + "id": 119057, + "mutability": "mutable", + "name": "tax", + "nameLocation": "9753:3:163", + "nodeType": "VariableDeclaration", + "scope": 119082, + "src": "9736:20:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_memory_ptr", + "typeString": "struct INSDomainPrice.UnitPrice" + }, + "typeName": { + "id": 119056, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119055, + "name": "UnitPrice", + "nameLocations": [ + "9736:9:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123322, + "src": "9736:9:163" + }, + "referencedDeclaration": 123322, + "src": "9736:9:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UnitPrice_$123322_storage_ptr", +>>>>>>> Stashed changes ======= "id": 119057, "mutability": "mutable", @@ -21635,10 +28303,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "9740:50:147" }, "scope": 87685, +======= + "src": "9707:50:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "9707:50:163" }, @@ -21649,6 +28323,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87350, "nodeType": "FunctionDefinition", @@ -21658,6 +28333,16 @@ "id": 87349, "nodeType": "Block", "src": "11139:208:147", +======= + "id": 119112, + "nodeType": "FunctionDefinition", + "src": "10057:286:163", + "nodes": [], + "body": { + "id": 119111, + "nodeType": "Block", + "src": "10135:208:163", +>>>>>>> Stashed changes ======= "id": 119112, "nodeType": "FunctionDefinition", @@ -21674,6 +28359,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87338, "name": "usdWei", @@ -21681,6 +28367,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87323, "src": "11258:6:147", +======= + "id": 119100, + "name": "usdWei", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119085, + "src": "10254:6:163", +>>>>>>> Stashed changes ======= "id": 119100, "name": "usdWei", @@ -21699,6 +28393,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87343, "name": "USD_DECIMALS", @@ -21706,6 +28401,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86364, "src": "11298:12:147", +======= + "id": 119105, + "name": "USD_DECIMALS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118279, + "src": "10294:12:163", +>>>>>>> Stashed changes ======= "id": 119105, "name": "USD_DECIMALS", @@ -21727,8 +28430,12 @@ "typeString": "uint8" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87342, +======= + "id": 119104, +>>>>>>> Stashed changes ======= "id": 119104, >>>>>>> Stashed changes @@ -21737,8 +28444,12 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11291:6:147", +======= + "src": "10287:6:163", +>>>>>>> Stashed changes ======= "src": "10287:6:163", >>>>>>> Stashed changes @@ -21747,6 +28458,7 @@ "typeString": "type(uint32)" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87341, "name": "uint32", @@ -21756,6 +28468,16 @@ } }, "id": 87344, +======= + "id": 119103, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "10287:6:163", + "typeDescriptions": {} + } + }, + "id": 119106, +>>>>>>> Stashed changes ======= "id": 119103, "name": "uint32", @@ -21774,8 +28496,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11291:20:147", +======= + "src": "10287:20:163", +>>>>>>> Stashed changes ======= "src": "10287:20:163", >>>>>>> Stashed changes @@ -21793,8 +28519,12 @@ "typeString": "uint32" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87340, +======= + "id": 119102, +>>>>>>> Stashed changes ======= "id": 119102, >>>>>>> Stashed changes @@ -21803,8 +28533,12 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11285:5:147", +======= + "src": "10281:5:163", +>>>>>>> Stashed changes ======= "src": "10281:5:163", >>>>>>> Stashed changes @@ -21813,6 +28547,7 @@ "typeString": "type(int32)" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87339, "name": "int32", @@ -21822,6 +28557,16 @@ } }, "id": 87345, +======= + "id": 119101, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "10281:5:163", + "typeDescriptions": {} + } + }, + "id": 119107, +>>>>>>> Stashed changes ======= "id": 119101, "name": "int32", @@ -21840,8 +28585,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11285:27:147", +======= + "src": "10281:27:163", +>>>>>>> Stashed changes ======= "src": "10281:27:163", >>>>>>> Stashed changes @@ -21853,8 +28602,12 @@ }, { "hexValue": "3138", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87346, +======= + "id": 119108, +>>>>>>> Stashed changes ======= "id": 119108, >>>>>>> Stashed changes @@ -21864,8 +28617,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11333:2:147", +======= + "src": "10329:2:163", +>>>>>>> Stashed changes ======= "src": "10329:2:163", >>>>>>> Stashed changes @@ -21894,8 +28651,12 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87335, +======= + "id": 119097, +>>>>>>> Stashed changes ======= "id": 119097, >>>>>>> Stashed changes @@ -21906,11 +28667,18 @@ "nodeType": "UnaryOperation", "operator": "-", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11231:3:147", "subExpression": { "hexValue": "3138", "id": 87334, +======= + "src": "10227:3:163", + "subExpression": { + "hexValue": "3138", + "id": 119096, +>>>>>>> Stashed changes ======= "src": "10227:3:163", "subExpression": { @@ -21923,8 +28691,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11232:2:147", +======= + "src": "10228:2:163", +>>>>>>> Stashed changes ======= "src": "10228:2:163", >>>>>>> Stashed changes @@ -21950,6 +28722,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87330, "name": "_pythIdForRONUSD", @@ -21957,6 +28730,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86405, "src": "11178:16:147", +======= + "id": 119092, + "name": "_pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118320, + "src": "10174:16:163", +>>>>>>> Stashed changes ======= "id": 119092, "name": "_pythIdForRONUSD", @@ -21971,6 +28752,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87331, "name": "_maxAcceptableAge", @@ -21978,6 +28760,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86402, "src": "11196:17:147", +======= + "id": 119093, + "name": "_maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118317, + "src": "10192:17:163", +>>>>>>> Stashed changes ======= "id": 119093, "name": "_maxAcceptableAge", @@ -22004,6 +28794,7 @@ } ], "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87328, "name": "_pyth", @@ -22017,6 +28808,20 @@ } }, "id": 87329, +======= + "id": 119090, + "name": "_pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118304, + "src": "10148:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + } + }, + "id": 119091, +>>>>>>> Stashed changes ======= "id": 119090, "name": "_pyth", @@ -22035,6 +28840,7 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "11158:19:147", "memberName": "getPriceNoOlderThan", @@ -22047,6 +28853,19 @@ } }, "id": 87332, +======= + "memberLocation": "10154:19:163", + "memberName": "getPriceNoOlderThan", + "nodeType": "MemberAccess", + "referencedDeclaration": 106052, + "src": "10148:25:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" + } + }, + "id": 119094, +>>>>>>> Stashed changes ======= "memberLocation": "10154:19:163", "memberName": "getPriceNoOlderThan", @@ -22068,6 +28887,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11152:62:147", "tryCall": false, @@ -22077,6 +28897,16 @@ } }, "id": 87333, +======= + "src": "10148:62:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", + "typeString": "struct PythStructs.Price memory" + } + }, + "id": 119095, +>>>>>>> Stashed changes ======= "src": "10148:62:163", "tryCall": false, @@ -22091,6 +28921,7 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "11215:7:147", "memberName": "inverse", @@ -22103,6 +28934,19 @@ } }, "id": 87336, +======= + "memberLocation": "10211:7:163", + "memberName": "inverse", + "nodeType": "MemberAccess", + "referencedDeclaration": 126386, + "src": "10148:70:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_int32_$returns$_t_struct$_Price_$106153_memory_ptr_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (struct PythStructs.Price memory,int32) pure returns (struct PythStructs.Price memory)" + } + }, + "id": 119098, +>>>>>>> Stashed changes ======= "memberLocation": "10211:7:163", "memberName": "inverse", @@ -22122,8 +28966,12 @@ "kind": "functionCall", "lValueRequested": false, "nameLocations": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream "11225:4:147" +======= + "10221:4:163" +>>>>>>> Stashed changes ======= "10221:4:163" >>>>>>> Stashed changes @@ -22132,6 +28980,7 @@ "expo" ], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11152:85:147", "tryCall": false, @@ -22141,6 +28990,16 @@ } }, "id": 87337, +======= + "src": "10148:85:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", + "typeString": "struct PythStructs.Price memory" + } + }, + "id": 119099, +>>>>>>> Stashed changes ======= "src": "10148:85:163", "tryCall": false, @@ -22155,6 +29014,7 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "11238:3:147", "memberName": "mul", @@ -22167,6 +29027,19 @@ } }, "id": 87347, +======= + "memberLocation": "10234:3:163", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 126278, + "src": "10148:89:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" + } + }, + "id": 119109, +>>>>>>> Stashed changes ======= "memberLocation": "10234:3:163", "memberName": "mul", @@ -22186,10 +29059,16 @@ "kind": "functionCall", "lValueRequested": false, "nameLocations": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream "11250:6:147", "11272:11:147", "11320:11:147" +======= + "10246:6:163", + "10268:11:163", + "10316:11:163" +>>>>>>> Stashed changes ======= "10246:6:163", "10268:11:163", @@ -22202,8 +29081,12 @@ "outDecimals" ], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11152:190:147", +======= + "src": "10148:190:163", +>>>>>>> Stashed changes ======= "src": "10148:190:163", >>>>>>> Stashed changes @@ -22213,11 +29096,18 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "functionReturnParameters": 87327, "id": 87348, "nodeType": "Return", "src": "11145:197:147" +======= + "functionReturnParameters": 119089, + "id": 119110, + "nodeType": "Return", + "src": "10141:197:163" +>>>>>>> Stashed changes ======= "functionReturnParameters": 119089, "id": 119110, @@ -22228,6 +29118,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91631 ], @@ -22235,6 +29126,14 @@ "id": 87321, "nodeType": "StructuredDocumentation", "src": "11017:41:147", +======= + 123576 + ], + "documentation": { + "id": 119083, + "nodeType": "StructuredDocumentation", + "src": "10013:41:163", +>>>>>>> Stashed changes ======= 123576 ], @@ -22250,10 +29149,16 @@ "kind": "function", "modifiers": [], "name": "convertUSDToRON", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "11070:15:147", "parameters": { "id": 87324, +======= + "nameLocation": "10066:15:163", + "parameters": { + "id": 119086, +>>>>>>> Stashed changes ======= "nameLocation": "10066:15:163", "parameters": { @@ -22263,6 +29168,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87323, "mutability": "mutable", @@ -22271,6 +29177,15 @@ "nodeType": "VariableDeclaration", "scope": 87350, "src": "11086:14:147", +======= + "id": 119085, + "mutability": "mutable", + "name": "usdWei", + "nameLocation": "10090:6:163", + "nodeType": "VariableDeclaration", + "scope": 119112, + "src": "10082:14:163", +>>>>>>> Stashed changes ======= "id": 119085, "mutability": "mutable", @@ -22287,11 +29202,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87322, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11086:7:147", +======= + "id": 119084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10082:7:163", +>>>>>>> Stashed changes ======= "id": 119084, "name": "uint256", @@ -22306,11 +29228,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11085:16:147" }, "returnParameters": { "id": 87327, +======= + "src": "10081:16:163" + }, + "returnParameters": { + "id": 119089, +>>>>>>> Stashed changes ======= "src": "10081:16:163" }, @@ -22321,6 +29250,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87326, "mutability": "mutable", @@ -22329,6 +29259,15 @@ "nodeType": "VariableDeclaration", "scope": 87350, "src": "11123:14:147", +======= + "id": 119088, + "mutability": "mutable", + "name": "ronWei", + "nameLocation": "10127:6:163", + "nodeType": "VariableDeclaration", + "scope": 119112, + "src": "10119:14:163", +>>>>>>> Stashed changes ======= "id": 119088, "mutability": "mutable", @@ -22345,11 +29284,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87325, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11123:7:147", +======= + "id": 119087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10119:7:163", +>>>>>>> Stashed changes ======= "id": 119087, "name": "uint256", @@ -22364,10 +29310,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11122:16:147" }, "scope": 87685, +======= + "src": "10118:16:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "10118:16:163" }, @@ -22378,6 +29330,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87376, "nodeType": "FunctionDefinition", @@ -22387,6 +29340,16 @@ "id": 87375, "nodeType": "Block", "src": "11473:185:147", +======= + "id": 119138, + "nodeType": "FunctionDefinition", + "src": "10391:263:163", + "nodes": [], + "body": { + "id": 119137, + "nodeType": "Block", + "src": "10469:185:163", +>>>>>>> Stashed changes ======= "id": 119138, "nodeType": "FunctionDefinition", @@ -22403,6 +29366,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87364, "name": "ronWei", @@ -22410,6 +29374,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87353, "src": "11569:6:147", +======= + "id": 119126, + "name": "ronWei", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119115, + "src": "10565:6:163", +>>>>>>> Stashed changes ======= "id": 119126, "name": "ronWei", @@ -22425,8 +29397,12 @@ }, { "hexValue": "3138", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87365, +======= + "id": 119127, +>>>>>>> Stashed changes ======= "id": 119127, >>>>>>> Stashed changes @@ -22436,8 +29412,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11596:2:147", +======= + "src": "10592:2:163", +>>>>>>> Stashed changes ======= "src": "10592:2:163", >>>>>>> Stashed changes @@ -22452,6 +29432,7 @@ { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87370, "name": "USD_DECIMALS", @@ -22459,6 +29440,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86364, "src": "11632:12:147", +======= + "id": 119132, + "name": "USD_DECIMALS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118279, + "src": "10628:12:163", +>>>>>>> Stashed changes ======= "id": 119132, "name": "USD_DECIMALS", @@ -22480,8 +29469,12 @@ "typeString": "uint8" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87369, +======= + "id": 119131, +>>>>>>> Stashed changes ======= "id": 119131, >>>>>>> Stashed changes @@ -22490,8 +29483,12 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11625:6:147", +======= + "src": "10621:6:163", +>>>>>>> Stashed changes ======= "src": "10621:6:163", >>>>>>> Stashed changes @@ -22500,6 +29497,7 @@ "typeString": "type(uint32)" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87368, "name": "uint32", @@ -22509,6 +29507,16 @@ } }, "id": 87371, +======= + "id": 119130, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "10621:6:163", + "typeDescriptions": {} + } + }, + "id": 119133, +>>>>>>> Stashed changes ======= "id": 119130, "name": "uint32", @@ -22527,8 +29535,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11625:20:147", +======= + "src": "10621:20:163", +>>>>>>> Stashed changes ======= "src": "10621:20:163", >>>>>>> Stashed changes @@ -22546,8 +29558,12 @@ "typeString": "uint32" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87367, +======= + "id": 119129, +>>>>>>> Stashed changes ======= "id": 119129, >>>>>>> Stashed changes @@ -22556,8 +29572,12 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11619:5:147", +======= + "src": "10615:5:163", +>>>>>>> Stashed changes ======= "src": "10615:5:163", >>>>>>> Stashed changes @@ -22566,6 +29586,7 @@ "typeString": "type(int32)" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87366, "name": "int32", @@ -22575,6 +29596,16 @@ } }, "id": 87372, +======= + "id": 119128, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "10615:5:163", + "typeDescriptions": {} + } + }, + "id": 119134, +>>>>>>> Stashed changes ======= "id": 119128, "name": "int32", @@ -22593,8 +29624,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11619:27:147", +======= + "src": "10615:27:163", +>>>>>>> Stashed changes ======= "src": "10615:27:163", >>>>>>> Stashed changes @@ -22623,6 +29658,7 @@ "expression": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87360, "name": "_pythIdForRONUSD", @@ -22630,6 +29666,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86405, "src": "11512:16:147", +======= + "id": 119122, + "name": "_pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118320, + "src": "10508:16:163", +>>>>>>> Stashed changes ======= "id": 119122, "name": "_pythIdForRONUSD", @@ -22644,6 +29688,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87361, "name": "_maxAcceptableAge", @@ -22651,6 +29696,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86402, "src": "11530:17:147", +======= + "id": 119123, + "name": "_maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118317, + "src": "10526:17:163", +>>>>>>> Stashed changes ======= "id": 119123, "name": "_maxAcceptableAge", @@ -22677,6 +29730,7 @@ } ], "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87358, "name": "_pyth", @@ -22690,6 +29744,20 @@ } }, "id": 87359, +======= + "id": 119120, + "name": "_pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118304, + "src": "10482:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + } + }, + "id": 119121, +>>>>>>> Stashed changes ======= "id": 119120, "name": "_pyth", @@ -22708,6 +29776,7 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "11492:19:147", "memberName": "getPriceNoOlderThan", @@ -22720,6 +29789,19 @@ } }, "id": 87362, +======= + "memberLocation": "10488:19:163", + "memberName": "getPriceNoOlderThan", + "nodeType": "MemberAccess", + "referencedDeclaration": 106052, + "src": "10482:25:163", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (bytes32,uint256) view external returns (struct PythStructs.Price memory)" + } + }, + "id": 119124, +>>>>>>> Stashed changes ======= "memberLocation": "10488:19:163", "memberName": "getPriceNoOlderThan", @@ -22741,6 +29823,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11486:62:147", "tryCall": false, @@ -22750,6 +29833,16 @@ } }, "id": 87363, +======= + "src": "10482:62:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Price_$106153_memory_ptr", + "typeString": "struct PythStructs.Price memory" + } + }, + "id": 119125, +>>>>>>> Stashed changes ======= "src": "10482:62:163", "tryCall": false, @@ -22764,6 +29857,7 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "11549:3:147", "memberName": "mul", @@ -22776,6 +29870,19 @@ } }, "id": 87373, +======= + "memberLocation": "10545:3:163", + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 126278, + "src": "10482:66:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Price_$106153_memory_ptr_$_t_uint256_$_t_int32_$_t_int32_$returns$_t_uint256_$attached_to$_t_struct$_Price_$106153_memory_ptr_$", + "typeString": "function (struct PythStructs.Price memory,uint256,int32,int32) pure returns (uint256)" + } + }, + "id": 119135, +>>>>>>> Stashed changes ======= "memberLocation": "10545:3:163", "memberName": "mul", @@ -22795,10 +29902,16 @@ "kind": "functionCall", "lValueRequested": false, "nameLocations": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream "11561:6:147", "11583:11:147", "11606:11:147" +======= + "10557:6:163", + "10579:11:163", + "10602:11:163" +>>>>>>> Stashed changes ======= "10557:6:163", "10579:11:163", @@ -22811,8 +29924,12 @@ "outDecimals" ], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11486:167:147", +======= + "src": "10482:167:163", +>>>>>>> Stashed changes ======= "src": "10482:167:163", >>>>>>> Stashed changes @@ -22822,11 +29939,18 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "functionReturnParameters": 87357, "id": 87374, "nodeType": "Return", "src": "11479:174:147" +======= + "functionReturnParameters": 119119, + "id": 119136, + "nodeType": "Return", + "src": "10475:174:163" +>>>>>>> Stashed changes ======= "functionReturnParameters": 119119, "id": 119136, @@ -22837,6 +29961,7 @@ ] }, "baseFunctions": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 91639 ], @@ -22844,6 +29969,14 @@ "id": 87351, "nodeType": "StructuredDocumentation", "src": "11351:41:147", +======= + 123584 + ], + "documentation": { + "id": 119113, + "nodeType": "StructuredDocumentation", + "src": "10347:41:163", +>>>>>>> Stashed changes ======= 123584 ], @@ -22859,10 +29992,16 @@ "kind": "function", "modifiers": [], "name": "convertRONToUSD", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "11404:15:147", "parameters": { "id": 87354, +======= + "nameLocation": "10400:15:163", + "parameters": { + "id": 119116, +>>>>>>> Stashed changes ======= "nameLocation": "10400:15:163", "parameters": { @@ -22872,6 +30011,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87353, "mutability": "mutable", @@ -22880,6 +30020,15 @@ "nodeType": "VariableDeclaration", "scope": 87376, "src": "11420:14:147", +======= + "id": 119115, + "mutability": "mutable", + "name": "ronWei", + "nameLocation": "10424:6:163", + "nodeType": "VariableDeclaration", + "scope": 119138, + "src": "10416:14:163", +>>>>>>> Stashed changes ======= "id": 119115, "mutability": "mutable", @@ -22896,11 +30045,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87352, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11420:7:147", +======= + "id": 119114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10416:7:163", +>>>>>>> Stashed changes ======= "id": 119114, "name": "uint256", @@ -22915,11 +30071,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11419:16:147" }, "returnParameters": { - "id": 87357, + "id": 87357, +======= + "src": "10415:16:163" + }, + "returnParameters": { + "id": 119119, +>>>>>>> Stashed changes ======= "src": "10415:16:163" }, @@ -22930,6 +30093,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87356, "mutability": "mutable", @@ -22938,6 +30102,15 @@ "nodeType": "VariableDeclaration", "scope": 87376, "src": "11457:14:147", +======= + "id": 119118, + "mutability": "mutable", + "name": "usdWei", + "nameLocation": "10461:6:163", + "nodeType": "VariableDeclaration", + "scope": 119138, + "src": "10453:14:163", +>>>>>>> Stashed changes ======= "id": 119118, "mutability": "mutable", @@ -22954,11 +30127,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87355, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11457:7:147", +======= + "id": 119117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10453:7:163", +>>>>>>> Stashed changes ======= "id": 119117, "name": "uint256", @@ -22973,10 +30153,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11456:16:147" }, "scope": 87685, +======= + "src": "10452:16:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "10452:16:163" }, @@ -22987,6 +30173,7 @@ "visibility": "public" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87423, "nodeType": "FunctionDefinition", @@ -22996,6 +30183,16 @@ "id": 87422, "nodeType": "Block", "src": "11985:190:147", +======= + "id": 119185, + "nodeType": "FunctionDefinition", + "src": "10752:419:163", + "nodes": [], + "body": { + "id": 119184, + "nodeType": "Block", + "src": "10981:190:163", +>>>>>>> Stashed changes ======= "id": 119185, "nodeType": "FunctionDefinition", @@ -23010,8 +30207,12 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87397, +======= + "id": 119159, +>>>>>>> Stashed changes ======= "id": 119159, >>>>>>> Stashed changes @@ -23020,6 +30221,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87394, "name": "length", @@ -23027,6 +30229,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87392, "src": "11991:6:147", +======= + "id": 119156, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "10987:6:163", +>>>>>>> Stashed changes ======= "id": 119156, "name": "length", @@ -23044,6 +30254,7 @@ "operator": "=", "rightHandSide": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87395, "name": "lbHashes", @@ -23051,6 +30262,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87380, "src": "12000:8:147", +======= + "id": 119157, + "name": "lbHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119142, + "src": "10996:8:163", +>>>>>>> Stashed changes ======= "id": 119157, "name": "lbHashes", @@ -23064,8 +30283,12 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87396, +======= + "id": 119158, +>>>>>>> Stashed changes ======= "id": 119158, >>>>>>> Stashed changes @@ -23073,11 +30296,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12009:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "12000:15:147", +======= + "memberLocation": "11005:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "10996:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "11005:6:163", "memberName": "length", @@ -23089,8 +30319,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11991:24:147", +======= + "src": "10987:24:163", +>>>>>>> Stashed changes ======= "src": "10987:24:163", >>>>>>> Stashed changes @@ -23099,10 +30333,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87398, "nodeType": "ExpressionStatement", "src": "11991:24:147" +======= + "id": 119160, + "nodeType": "ExpressionStatement", + "src": "10987:24:163" +>>>>>>> Stashed changes ======= "id": 119160, "nodeType": "ExpressionStatement", @@ -23115,8 +30355,12 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87416, +======= + "id": 119178, +>>>>>>> Stashed changes ======= "id": 119178, >>>>>>> Stashed changes @@ -23129,8 +30373,12 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87411, +======= + "id": 119173, +>>>>>>> Stashed changes ======= "id": 119173, >>>>>>> Stashed changes @@ -23143,8 +30391,12 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87406, +======= + "id": 119168, +>>>>>>> Stashed changes ======= "id": 119168, >>>>>>> Stashed changes @@ -23157,8 +30409,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87401, +======= + "id": 119163, +>>>>>>> Stashed changes ======= "id": 119163, >>>>>>> Stashed changes @@ -23167,6 +30423,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87399, "name": "length", @@ -23174,6 +30431,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87392, "src": "12025:6:147", +======= + "id": 119161, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11021:6:163", +>>>>>>> Stashed changes ======= "id": 119161, "name": "length", @@ -23191,8 +30456,12 @@ "operator": "==", "rightExpression": { "hexValue": "30", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87400, +======= + "id": 119162, +>>>>>>> Stashed changes ======= "id": 119162, >>>>>>> Stashed changes @@ -23202,8 +30471,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12035:1:147", +======= + "src": "11031:1:163", +>>>>>>> Stashed changes ======= "src": "11031:1:163", >>>>>>> Stashed changes @@ -23213,8 +30486,12 @@ }, "value": "0" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12025:11:147", +======= + "src": "11021:11:163", +>>>>>>> Stashed changes ======= "src": "11021:11:163", >>>>>>> Stashed changes @@ -23230,8 +30507,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87405, +======= + "id": 119167, +>>>>>>> Stashed changes ======= "id": 119167, >>>>>>> Stashed changes @@ -23241,6 +30522,7 @@ "lValueRequested": false, "leftExpression": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87402, "name": "ronPrices", @@ -23248,6 +30530,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87383, "src": "12040:9:147", +======= + "id": 119164, + "name": "ronPrices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119145, + "src": "11036:9:163", +>>>>>>> Stashed changes ======= "id": 119164, "name": "ronPrices", @@ -23261,8 +30551,12 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87403, +======= + "id": 119165, +>>>>>>> Stashed changes ======= "id": 119165, >>>>>>> Stashed changes @@ -23270,11 +30564,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12050:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "12040:16:147", +======= + "memberLocation": "11046:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11036:16:163", +>>>>>>> Stashed changes ======= "memberLocation": "11046:6:163", "memberName": "length", @@ -23289,6 +30590,7 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87404, "name": "length", @@ -23296,6 +30598,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87392, "src": "12060:6:147", +======= + "id": 119166, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11056:6:163", +>>>>>>> Stashed changes ======= "id": 119166, "name": "length", @@ -23309,8 +30619,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12040:26:147", +======= + "src": "11036:26:163", +>>>>>>> Stashed changes ======= "src": "11036:26:163", >>>>>>> Stashed changes @@ -23319,8 +30633,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12025:41:147", +======= + "src": "11021:41:163", +>>>>>>> Stashed changes ======= "src": "11021:41:163", >>>>>>> Stashed changes @@ -23336,8 +30654,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87410, +======= + "id": 119172, +>>>>>>> Stashed changes ======= "id": 119172, >>>>>>> Stashed changes @@ -23347,6 +30669,7 @@ "lValueRequested": false, "leftExpression": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87407, "name": "proofHashes", @@ -23354,6 +30677,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87386, "src": "12070:11:147", +======= + "id": 119169, + "name": "proofHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119148, + "src": "11066:11:163", +>>>>>>> Stashed changes ======= "id": 119169, "name": "proofHashes", @@ -23367,8 +30698,12 @@ "typeString": "bytes32[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87408, +======= + "id": 119170, +>>>>>>> Stashed changes ======= "id": 119170, >>>>>>> Stashed changes @@ -23376,11 +30711,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12082:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "12070:18:147", +======= + "memberLocation": "11078:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11066:18:163", +>>>>>>> Stashed changes ======= "memberLocation": "11078:6:163", "memberName": "length", @@ -23395,6 +30737,7 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87409, "name": "length", @@ -23402,6 +30745,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87392, "src": "12092:6:147", +======= + "id": 119171, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11088:6:163", +>>>>>>> Stashed changes ======= "id": 119171, "name": "length", @@ -23415,8 +30766,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12070:28:147", +======= + "src": "11066:28:163", +>>>>>>> Stashed changes ======= "src": "11066:28:163", >>>>>>> Stashed changes @@ -23425,8 +30780,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12025:73:147", +======= + "src": "11021:73:163", +>>>>>>> Stashed changes ======= "src": "11021:73:163", >>>>>>> Stashed changes @@ -23442,8 +30801,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87415, +======= + "id": 119177, +>>>>>>> Stashed changes ======= "id": 119177, >>>>>>> Stashed changes @@ -23453,6 +30816,7 @@ "lValueRequested": false, "leftExpression": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87412, "name": "setTypes", @@ -23460,6 +30824,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87389, "src": "12102:8:147", +======= + "id": 119174, + "name": "setTypes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119151, + "src": "11098:8:163", +>>>>>>> Stashed changes ======= "id": 119174, "name": "setTypes", @@ -23473,8 +30845,12 @@ "typeString": "uint256[] calldata" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87413, +======= + "id": 119175, +>>>>>>> Stashed changes ======= "id": 119175, >>>>>>> Stashed changes @@ -23482,11 +30858,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12111:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "12102:15:147", +======= + "memberLocation": "11107:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "11098:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "11107:6:163", "memberName": "length", @@ -23501,6 +30884,7 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87414, "name": "length", @@ -23508,6 +30892,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87392, "src": "12121:6:147", +======= + "id": 119176, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119154, + "src": "11117:6:163", +>>>>>>> Stashed changes ======= "id": 119176, "name": "length", @@ -23521,8 +30913,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12102:25:147", +======= + "src": "11098:25:163", +>>>>>>> Stashed changes ======= "src": "11098:25:163", >>>>>>> Stashed changes @@ -23531,8 +30927,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12025:102:147", +======= + "src": "11021:102:163", +>>>>>>> Stashed changes ======= "src": "11021:102:163", >>>>>>> Stashed changes @@ -23541,6 +30941,7 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87421, "nodeType": "IfStatement", @@ -23549,6 +30950,15 @@ "id": 87420, "nodeType": "Block", "src": "12129:42:147", +======= + "id": 119183, + "nodeType": "IfStatement", + "src": "11017:150:163", + "trueBody": { + "id": 119182, + "nodeType": "Block", + "src": "11125:42:163", +>>>>>>> Stashed changes ======= "id": 119183, "nodeType": "IfStatement", @@ -23564,6 +30974,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87417, "name": "InvalidArrayLength", @@ -23571,6 +30982,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91359, "src": "12144:18:147", +======= + "id": 119179, + "name": "InvalidArrayLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123300, + "src": "11140:18:163", +>>>>>>> Stashed changes ======= "id": 119179, "name": "InvalidArrayLength", @@ -23584,8 +31003,12 @@ "typeString": "function () pure" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87418, +======= + "id": 119180, +>>>>>>> Stashed changes ======= "id": 119180, >>>>>>> Stashed changes @@ -23597,8 +31020,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12144:20:147", +======= + "src": "11140:20:163", +>>>>>>> Stashed changes ======= "src": "11140:20:163", >>>>>>> Stashed changes @@ -23608,10 +31035,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87419, "nodeType": "RevertStatement", "src": "12137:27:147" +======= + "id": 119181, + "nodeType": "RevertStatement", + "src": "11133:27:163" +>>>>>>> Stashed changes ======= "id": 119181, "nodeType": "RevertStatement", @@ -23624,10 +31057,16 @@ ] }, "documentation": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87377, "nodeType": "StructuredDocumentation", "src": "11662:91:147", +======= + "id": 119139, + "nodeType": "StructuredDocumentation", + "src": "10658:91:163", +>>>>>>> Stashed changes ======= "id": 119139, "nodeType": "StructuredDocumentation", @@ -23639,10 +31078,16 @@ "kind": "function", "modifiers": [], "name": "_requireBulkSetDomainPriceArgumentsValid", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "11765:40:147", "parameters": { "id": 87390, +======= + "nameLocation": "10761:40:163", + "parameters": { + "id": 119152, +>>>>>>> Stashed changes ======= "nameLocation": "10761:40:163", "parameters": { @@ -23652,6 +31097,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87380, "mutability": "mutable", @@ -23660,6 +31106,15 @@ "nodeType": "VariableDeclaration", "scope": 87423, "src": "11811:27:147", +======= + "id": 119142, + "mutability": "mutable", + "name": "lbHashes", + "nameLocation": "10826:8:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10807:27:163", +>>>>>>> Stashed changes ======= "id": 119142, "mutability": "mutable", @@ -23677,11 +31132,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87378, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11811:7:147", +======= + "id": 119140, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10807:7:163", +>>>>>>> Stashed changes ======= "id": 119140, "name": "bytes32", @@ -23693,10 +31155,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87379, "nodeType": "ArrayTypeName", "src": "11811:9:147", +======= + "id": 119141, + "nodeType": "ArrayTypeName", + "src": "10807:9:163", +>>>>>>> Stashed changes ======= "id": 119141, "nodeType": "ArrayTypeName", @@ -23711,6 +31179,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87383, "mutability": "mutable", @@ -23719,6 +31188,15 @@ "nodeType": "VariableDeclaration", "scope": 87423, "src": "11844:28:147", +======= + "id": 119145, + "mutability": "mutable", + "name": "ronPrices", + "nameLocation": "10859:9:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10840:28:163", +>>>>>>> Stashed changes ======= "id": 119145, "mutability": "mutable", @@ -23736,11 +31214,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87381, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11844:7:147", +======= + "id": 119143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10840:7:163", +>>>>>>> Stashed changes ======= "id": 119143, "name": "uint256", @@ -23752,10 +31237,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87382, "nodeType": "ArrayTypeName", "src": "11844:9:147", +======= + "id": 119144, + "nodeType": "ArrayTypeName", + "src": "10840:9:163", +>>>>>>> Stashed changes ======= "id": 119144, "nodeType": "ArrayTypeName", @@ -23770,6 +31261,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87386, "mutability": "mutable", @@ -23778,6 +31270,15 @@ "nodeType": "VariableDeclaration", "scope": 87423, "src": "11878:30:147", +======= + "id": 119148, + "mutability": "mutable", + "name": "proofHashes", + "nameLocation": "10893:11:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10874:30:163", +>>>>>>> Stashed changes ======= "id": 119148, "mutability": "mutable", @@ -23795,11 +31296,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87384, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "11878:7:147", +======= + "id": 119146, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10874:7:163", +>>>>>>> Stashed changes ======= "id": 119146, "name": "bytes32", @@ -23811,10 +31319,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87385, "nodeType": "ArrayTypeName", "src": "11878:9:147", +======= + "id": 119147, + "nodeType": "ArrayTypeName", + "src": "10874:9:163", +>>>>>>> Stashed changes ======= "id": 119147, "nodeType": "ArrayTypeName", @@ -23829,6 +31343,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87389, "mutability": "mutable", @@ -23837,6 +31352,15 @@ "nodeType": "VariableDeclaration", "scope": 87423, "src": "11914:27:147", +======= + "id": 119151, + "mutability": "mutable", + "name": "setTypes", + "nameLocation": "10929:8:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10910:27:163", +>>>>>>> Stashed changes ======= "id": 119151, "mutability": "mutable", @@ -23854,11 +31378,18 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87387, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11914:7:147", +======= + "id": 119149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10910:7:163", +>>>>>>> Stashed changes ======= "id": 119149, "name": "uint256", @@ -23870,10 +31401,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87388, "nodeType": "ArrayTypeName", "src": "11914:9:147", +======= + "id": 119150, + "nodeType": "ArrayTypeName", + "src": "10910:9:163", +>>>>>>> Stashed changes ======= "id": 119150, "nodeType": "ArrayTypeName", @@ -23887,11 +31424,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11805:140:147" }, "returnParameters": { "id": 87393, +======= + "src": "10801:140:163" + }, + "returnParameters": { + "id": 119155, +>>>>>>> Stashed changes ======= "src": "10801:140:163" }, @@ -23902,6 +31446,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87392, "mutability": "mutable", @@ -23910,6 +31455,15 @@ "nodeType": "VariableDeclaration", "scope": 87423, "src": "11969:14:147", +======= + "id": 119154, + "mutability": "mutable", + "name": "length", + "nameLocation": "10973:6:163", + "nodeType": "VariableDeclaration", + "scope": 119185, + "src": "10965:14:163", +>>>>>>> Stashed changes ======= "id": 119154, "mutability": "mutable", @@ -23926,11 +31480,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87391, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "11969:7:147", +======= + "id": 119153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10965:7:163", +>>>>>>> Stashed changes ======= "id": 119153, "name": "uint256", @@ -23945,10 +31506,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "11968:16:147" }, "scope": 87685, +======= + "src": "10964:16:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "10964:16:163" }, @@ -23959,6 +31526,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87488, "nodeType": "FunctionDefinition", @@ -23968,6 +31536,16 @@ "id": 87487, "nodeType": "Block", "src": "12480:317:147", +======= + "id": 119250, + "nodeType": "FunctionDefinition", + "src": "11290:503:163", + "nodes": [], + "body": { + "id": 119249, + "nodeType": "Block", + "src": "11476:317:163", +>>>>>>> Stashed changes ======= "id": 119250, "nodeType": "FunctionDefinition", @@ -23982,8 +31560,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 87442 +======= + 119204 +>>>>>>> Stashed changes ======= 119204 >>>>>>> Stashed changes @@ -23991,6 +31573,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87442, "mutability": "mutable", @@ -23999,6 +31582,15 @@ "nodeType": "VariableDeclaration", "scope": 87487, "src": "12486:16:147", +======= + "id": 119204, + "mutability": "mutable", + "name": "usdPrice", + "nameLocation": "11490:8:163", + "nodeType": "VariableDeclaration", + "scope": 119249, + "src": "11482:16:163", +>>>>>>> Stashed changes ======= "id": 119204, "mutability": "mutable", @@ -24015,11 +31607,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87441, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12486:7:147", +======= + "id": 119203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11482:7:163", +>>>>>>> Stashed changes ======= "id": 119203, "name": "uint256", @@ -24034,6 +31633,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87446, "initialValue": { @@ -24045,6 +31645,18 @@ "overloadedDeclarations": [], "referencedDeclaration": 87430, "src": "12521:8:147", +======= + "id": 119208, + "initialValue": { + "arguments": [ + { + "id": 119206, + "name": "ronPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119192, + "src": "11517:8:163", +>>>>>>> Stashed changes ======= "id": 119208, "initialValue": { @@ -24070,6 +31682,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87443, "name": "convertRONToUSD", @@ -24077,6 +31690,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87376, "src": "12505:15:147", +======= + "id": 119205, + "name": "convertRONToUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119138, + "src": "11501:15:163", +>>>>>>> Stashed changes ======= "id": 119205, "name": "convertRONToUSD", @@ -24090,8 +31711,12 @@ "typeString": "function (uint256) view returns (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87445, +======= + "id": 119207, +>>>>>>> Stashed changes ======= "id": 119207, >>>>>>> Stashed changes @@ -24103,8 +31728,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12505:25:147", +======= + "src": "11501:25:163", +>>>>>>> Stashed changes ======= "src": "11501:25:163", >>>>>>> Stashed changes @@ -24115,12 +31744,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12486:44:147" }, { "assignments": [ 87449 +======= + "src": "11482:44:163" + }, + { + "assignments": [ + 119211 +>>>>>>> Stashed changes ======= "src": "11482:44:163" }, @@ -24132,6 +31769,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87449, "mutability": "mutable", @@ -24163,6 +31801,38 @@ "src": "12536:16:147", "typeDescriptions": { "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage_ptr", +======= + "id": 119211, + "mutability": "mutable", + "name": "dp", + "nameLocation": "11557:2:163", + "nodeType": "VariableDeclaration", + "scope": 119249, + "src": "11532:27:163", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper" + }, + "typeName": { + "id": 119210, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119209, + "name": "TimestampWrapper", + "nameLocations": [ + "11532:16:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125530, + "src": "11532:16:163" + }, + "referencedDeclaration": 125530, + "src": "11532:16:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", +>>>>>>> Stashed changes ======= "id": 119211, "mutability": "mutable", @@ -24201,6 +31871,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87453, "initialValue": { @@ -24224,6 +31895,30 @@ "overloadedDeclarations": [], "referencedDeclaration": 87428, "src": "12570:6:147", +======= + "id": 119215, + "initialValue": { + "baseExpression": { + "id": 119212, + "name": "_dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118335, + "src": "11562:3:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", + "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" + } + }, + "id": 119214, + "indexExpression": { + "id": 119213, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119190, + "src": "11566:6:163", +>>>>>>> Stashed changes ======= "id": 119215, "initialValue": { @@ -24258,10 +31953,16 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12566:11:147", "typeDescriptions": { "typeIdentifier": "t_struct$_TimestampWrapper_$93585_storage", +======= + "src": "11562:11:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", +>>>>>>> Stashed changes ======= "src": "11562:11:163", "typeDescriptions": { @@ -24271,12 +31972,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12536:41:147" }, { "expression": { "id": 87461, +======= + "src": "11532:41:163" + }, + { + "expression": { + "id": 119223, +>>>>>>> Stashed changes ======= "src": "11532:41:163" }, @@ -24289,6 +31998,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87454, "name": "updated", @@ -24296,6 +32006,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87439, "src": "12583:7:147", +======= + "id": 119216, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119201, + "src": "11579:7:163", +>>>>>>> Stashed changes ======= "id": 119216, "name": "updated", @@ -24316,8 +32034,12 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87460, +======= + "id": 119222, +>>>>>>> Stashed changes ======= "id": 119222, >>>>>>> Stashed changes @@ -24326,6 +32048,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87455, "name": "forced", @@ -24333,6 +32056,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87436, "src": "12593:6:147", +======= + "id": 119217, + "name": "forced", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119198, + "src": "11589:6:163", +>>>>>>> Stashed changes ======= "id": 119217, "name": "forced", @@ -24353,8 +32084,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87459, +======= + "id": 119221, +>>>>>>> Stashed changes ======= "id": 119221, >>>>>>> Stashed changes @@ -24364,6 +32099,7 @@ "lValueRequested": false, "leftExpression": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87456, "name": "dp", @@ -24377,6 +32113,20 @@ } }, "id": 87457, +======= + "id": 119218, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119211, + "src": "11599:2:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" + } + }, + "id": 119219, +>>>>>>> Stashed changes ======= "id": 119218, "name": "dp", @@ -24395,12 +32145,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12606:5:147", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 93582, "src": "12603:8:147", +======= + "memberLocation": "11602:5:163", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 125527, + "src": "11599:8:163", +>>>>>>> Stashed changes ======= "memberLocation": "11602:5:163", "memberName": "value", @@ -24416,6 +32174,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87458, "name": "usdPrice", @@ -24423,6 +32182,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87442, "src": "12614:8:147", +======= + "id": 119220, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119204, + "src": "11610:8:163", +>>>>>>> Stashed changes ======= "id": 119220, "name": "usdPrice", @@ -24436,8 +32203,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12603:19:147", +======= + "src": "11599:19:163", +>>>>>>> Stashed changes ======= "src": "11599:19:163", >>>>>>> Stashed changes @@ -24446,8 +32217,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12593:29:147", +======= + "src": "11589:29:163", +>>>>>>> Stashed changes ======= "src": "11589:29:163", >>>>>>> Stashed changes @@ -24456,8 +32231,12 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12583:39:147", +======= + "src": "11579:39:163", +>>>>>>> Stashed changes ======= "src": "11579:39:163", >>>>>>> Stashed changes @@ -24466,6 +32245,7 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87462, "nodeType": "ExpressionStatement", @@ -24479,6 +32259,20 @@ "overloadedDeclarations": [], "referencedDeclaration": 87439, "src": "12633:7:147", +======= + "id": 119224, + "nodeType": "ExpressionStatement", + "src": "11579:39:163" + }, + { + "condition": { + "id": 119225, + "name": "updated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119201, + "src": "11629:7:163", +>>>>>>> Stashed changes ======= "id": 119224, "nodeType": "ExpressionStatement", @@ -24498,6 +32292,7 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87486, "nodeType": "IfStatement", @@ -24510,6 +32305,19 @@ { "expression": { "id": 87468, +======= + "id": 119248, + "nodeType": "IfStatement", + "src": "11625:164:163", + "trueBody": { + "id": 119247, + "nodeType": "Block", + "src": "11638:151:163", + "statements": [ + { + "expression": { + "id": 119230, +>>>>>>> Stashed changes ======= "id": 119248, "nodeType": "IfStatement", @@ -24529,6 +32337,7 @@ "lValueRequested": false, "leftHandSide": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87464, "name": "dp", @@ -24542,6 +32351,20 @@ } }, "id": 87466, +======= + "id": 119226, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119211, + "src": "11646:2:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" + } + }, + "id": 119228, +>>>>>>> Stashed changes ======= "id": 119226, "name": "dp", @@ -24560,12 +32383,20 @@ "isLValue": true, "isPure": false, "lValueRequested": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12653:5:147", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 93582, "src": "12650:8:147", +======= + "memberLocation": "11649:5:163", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 125527, + "src": "11646:8:163", +>>>>>>> Stashed changes ======= "memberLocation": "11649:5:163", "memberName": "value", @@ -24581,6 +32412,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87467, "name": "usdPrice", @@ -24588,6 +32420,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87442, "src": "12661:8:147", +======= + "id": 119229, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119204, + "src": "11657:8:163", +>>>>>>> Stashed changes ======= "id": 119229, "name": "usdPrice", @@ -24601,8 +32441,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12650:19:147", +======= + "src": "11646:19:163", +>>>>>>> Stashed changes ======= "src": "11646:19:163", >>>>>>> Stashed changes @@ -24611,6 +32455,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87469, "nodeType": "ExpressionStatement", @@ -24619,6 +32464,15 @@ { "expression": { "id": 87475, +======= + "id": 119231, + "nodeType": "ExpressionStatement", + "src": "11646:19:163" + }, + { + "expression": { + "id": 119237, +>>>>>>> Stashed changes ======= "id": 119231, "nodeType": "ExpressionStatement", @@ -24634,6 +32488,7 @@ "lValueRequested": false, "leftHandSide": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87470, "name": "dp", @@ -24647,6 +32502,20 @@ } }, "id": 87472, +======= + "id": 119232, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119211, + "src": "11673:2:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" + } + }, + "id": 119234, +>>>>>>> Stashed changes ======= "id": 119232, "name": "dp", @@ -24665,12 +32534,20 @@ "isLValue": true, "isPure": false, "lValueRequested": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12680:9:147", "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 93584, "src": "12677:12:147", +======= + "memberLocation": "11676:9:163", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 125529, + "src": "11673:12:163", +>>>>>>> Stashed changes ======= "memberLocation": "11676:9:163", "memberName": "timestamp", @@ -24687,8 +32564,12 @@ "operator": "=", "rightHandSide": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87473, +======= + "id": 119235, +>>>>>>> Stashed changes ======= "id": 119235, >>>>>>> Stashed changes @@ -24696,8 +32577,12 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12692:5:147", +======= + "src": "11688:5:163", +>>>>>>> Stashed changes ======= "src": "11688:5:163", >>>>>>> Stashed changes @@ -24706,8 +32591,12 @@ "typeString": "block" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87474, +======= + "id": 119236, +>>>>>>> Stashed changes ======= "id": 119236, >>>>>>> Stashed changes @@ -24715,11 +32604,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "12698:9:147", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "12692:15:147", +======= + "memberLocation": "11694:9:163", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "11688:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "11694:9:163", "memberName": "timestamp", @@ -24731,8 +32627,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12677:30:147", +======= + "src": "11673:30:163", +>>>>>>> Stashed changes ======= "src": "11673:30:163", >>>>>>> Stashed changes @@ -24741,10 +32641,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87476, "nodeType": "ExpressionStatement", "src": "12677:30:147" +======= + "id": 119238, + "nodeType": "ExpressionStatement", + "src": "11673:30:163" +>>>>>>> Stashed changes ======= "id": 119238, "nodeType": "ExpressionStatement", @@ -24755,6 +32661,7 @@ "eventCall": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87478, "name": "operator", @@ -24762,6 +32669,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87426, "src": "12739:8:147", +======= + "id": 119240, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119188, + "src": "11735:8:163", +>>>>>>> Stashed changes ======= "id": 119240, "name": "operator", @@ -24776,6 +32691,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87479, "name": "lbHash", @@ -24783,6 +32699,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87428, "src": "12749:6:147", +======= + "id": 119241, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119190, + "src": "11745:6:163", +>>>>>>> Stashed changes ======= "id": 119241, "name": "lbHash", @@ -24797,6 +32721,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87480, "name": "usdPrice", @@ -24804,6 +32729,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87442, "src": "12757:8:147", +======= + "id": 119242, + "name": "usdPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119204, + "src": "11753:8:163", +>>>>>>> Stashed changes ======= "id": 119242, "name": "usdPrice", @@ -24818,6 +32751,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87481, "name": "proofHash", @@ -24825,6 +32759,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87432, "src": "12767:9:147", +======= + "id": 119243, + "name": "proofHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119194, + "src": "11763:9:163", +>>>>>>> Stashed changes ======= "id": 119243, "name": "proofHash", @@ -24839,6 +32781,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87482, "name": "setType", @@ -24846,6 +32789,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87434, "src": "12778:7:147", +======= + "id": 119244, + "name": "setType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119196, + "src": "11774:7:163", +>>>>>>> Stashed changes ======= "id": 119244, "name": "setType", @@ -24883,6 +32834,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87477, "name": "DomainPriceUpdated", @@ -24890,6 +32842,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91435, "src": "12720:18:147", +======= + "id": 119239, + "name": "DomainPriceUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123377, + "src": "11716:18:163", +>>>>>>> Stashed changes ======= "id": 119239, "name": "DomainPriceUpdated", @@ -24903,8 +32863,12 @@ "typeString": "function (address,bytes32,uint256,bytes32,uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87483, +======= + "id": 119245, +>>>>>>> Stashed changes ======= "id": 119245, >>>>>>> Stashed changes @@ -24916,8 +32880,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12720:66:147", +======= + "src": "11716:66:163", +>>>>>>> Stashed changes ======= "src": "11716:66:163", >>>>>>> Stashed changes @@ -24927,10 +32895,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87484, "nodeType": "EmitStatement", "src": "12715:71:147" +======= + "id": 119246, + "nodeType": "EmitStatement", + "src": "11711:71:163" +>>>>>>> Stashed changes ======= "id": 119246, "nodeType": "EmitStatement", @@ -24943,10 +32917,16 @@ ] }, "documentation": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87424, "nodeType": "StructuredDocumentation", "src": "12179:112:147", +======= + "id": 119186, + "nodeType": "StructuredDocumentation", + "src": "11175:112:163", +>>>>>>> Stashed changes ======= "id": 119186, "nodeType": "StructuredDocumentation", @@ -24958,10 +32938,16 @@ "kind": "function", "modifiers": [], "name": "_setDomainPrice", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "12303:15:147", "parameters": { "id": 87437, +======= + "nameLocation": "11299:15:163", + "parameters": { + "id": 119199, +>>>>>>> Stashed changes ======= "nameLocation": "11299:15:163", "parameters": { @@ -24971,6 +32957,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87426, "mutability": "mutable", @@ -24979,6 +32966,15 @@ "nodeType": "VariableDeclaration", "scope": 87488, "src": "12324:16:147", +======= + "id": 119188, + "mutability": "mutable", + "name": "operator", + "nameLocation": "11328:8:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11320:16:163", +>>>>>>> Stashed changes ======= "id": 119188, "mutability": "mutable", @@ -24995,11 +32991,18 @@ "typeString": "address" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87425, "name": "address", "nodeType": "ElementaryTypeName", "src": "12324:7:147", +======= + "id": 119187, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11320:7:163", +>>>>>>> Stashed changes ======= "id": 119187, "name": "address", @@ -25016,6 +33019,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87428, "mutability": "mutable", @@ -25024,6 +33028,15 @@ "nodeType": "VariableDeclaration", "scope": 87488, "src": "12346:14:147", +======= + "id": 119190, + "mutability": "mutable", + "name": "lbHash", + "nameLocation": "11350:6:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11342:14:163", +>>>>>>> Stashed changes ======= "id": 119190, "mutability": "mutable", @@ -25040,11 +33053,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87427, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12346:7:147", +======= + "id": 119189, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11342:7:163", +>>>>>>> Stashed changes ======= "id": 119189, "name": "bytes32", @@ -25060,6 +33080,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87430, "mutability": "mutable", @@ -25068,6 +33089,15 @@ "nodeType": "VariableDeclaration", "scope": 87488, "src": "12366:16:147", +======= + "id": 119192, + "mutability": "mutable", + "name": "ronPrice", + "nameLocation": "11370:8:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11362:16:163", +>>>>>>> Stashed changes ======= "id": 119192, "mutability": "mutable", @@ -25084,11 +33114,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87429, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12366:7:147", +======= + "id": 119191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11362:7:163", +>>>>>>> Stashed changes ======= "id": 119191, "name": "uint256", @@ -25104,6 +33141,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87432, "mutability": "mutable", @@ -25112,6 +33150,15 @@ "nodeType": "VariableDeclaration", "scope": 87488, "src": "12388:17:147", +======= + "id": 119194, + "mutability": "mutable", + "name": "proofHash", + "nameLocation": "11392:9:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11384:17:163", +>>>>>>> Stashed changes ======= "id": 119194, "mutability": "mutable", @@ -25128,11 +33175,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87431, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12388:7:147", +======= + "id": 119193, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11384:7:163", +>>>>>>> Stashed changes ======= "id": 119193, "name": "bytes32", @@ -25148,6 +33202,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87434, "mutability": "mutable", @@ -25156,6 +33211,15 @@ "nodeType": "VariableDeclaration", "scope": 87488, "src": "12411:15:147", +======= + "id": 119196, + "mutability": "mutable", + "name": "setType", + "nameLocation": "11415:7:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11407:15:163", +>>>>>>> Stashed changes ======= "id": 119196, "mutability": "mutable", @@ -25172,11 +33236,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87433, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12411:7:147", +======= + "id": 119195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11407:7:163", +>>>>>>> Stashed changes ======= "id": 119195, "name": "uint256", @@ -25192,6 +33263,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87436, "mutability": "mutable", @@ -25200,6 +33272,15 @@ "nodeType": "VariableDeclaration", "scope": 87488, "src": "12432:11:147", +======= + "id": 119198, + "mutability": "mutable", + "name": "forced", + "nameLocation": "11433:6:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11428:11:163", +>>>>>>> Stashed changes ======= "id": 119198, "mutability": "mutable", @@ -25216,11 +33297,18 @@ "typeString": "bool" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87435, "name": "bool", "nodeType": "ElementaryTypeName", "src": "12432:4:147", +======= + "id": 119197, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11428:4:163", +>>>>>>> Stashed changes ======= "id": 119197, "name": "bool", @@ -25235,11 +33323,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12318:129:147" }, "returnParameters": { "id": 87440, +======= + "src": "11314:129:163" + }, + "returnParameters": { + "id": 119202, +>>>>>>> Stashed changes ======= "src": "11314:129:163" }, @@ -25250,6 +33345,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87439, "mutability": "mutable", @@ -25258,6 +33354,15 @@ "nodeType": "VariableDeclaration", "scope": 87488, "src": "12466:12:147", +======= + "id": 119201, + "mutability": "mutable", + "name": "updated", + "nameLocation": "11467:7:163", + "nodeType": "VariableDeclaration", + "scope": 119250, + "src": "11462:12:163", +>>>>>>> Stashed changes ======= "id": 119201, "mutability": "mutable", @@ -25274,11 +33379,18 @@ "typeString": "bool" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87438, "name": "bool", "nodeType": "ElementaryTypeName", "src": "12466:4:147", +======= + "id": 119200, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11462:4:163", +>>>>>>> Stashed changes ======= "id": 119200, "name": "bool", @@ -25293,10 +33405,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12465:14:147" }, "scope": 87685, +======= + "src": "11461:14:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "11461:14:163" }, @@ -25307,6 +33425,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87505, "nodeType": "FunctionDefinition", @@ -25316,6 +33435,16 @@ "id": 87504, "nodeType": "Block", "src": "12945:75:147", +======= + "id": 119267, + "nodeType": "FunctionDefinition", + "src": "11895:121:163", + "nodes": [], + "body": { + "id": 119266, + "nodeType": "Block", + "src": "11941:75:163", +>>>>>>> Stashed changes ======= "id": 119267, "nodeType": "FunctionDefinition", @@ -25330,8 +33459,12 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87496, +======= + "id": 119258, +>>>>>>> Stashed changes ======= "id": 119258, >>>>>>> Stashed changes @@ -25340,6 +33473,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87494, "name": "_taxRatio", @@ -25347,6 +33481,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86396, "src": "12951:9:147", +======= + "id": 119256, + "name": "_taxRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118311, + "src": "11947:9:163", +>>>>>>> Stashed changes ======= "id": 119256, "name": "_taxRatio", @@ -25363,6 +33505,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87495, "name": "ratio", @@ -25370,6 +33513,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87491, "src": "12963:5:147", +======= + "id": 119257, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119253, + "src": "11959:5:163", +>>>>>>> Stashed changes ======= "id": 119257, "name": "ratio", @@ -25383,8 +33534,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12951:17:147", +======= + "src": "11947:17:163", +>>>>>>> Stashed changes ======= "src": "11947:17:163", >>>>>>> Stashed changes @@ -25393,10 +33548,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87497, "nodeType": "ExpressionStatement", "src": "12951:17:147" +======= + "id": 119259, + "nodeType": "ExpressionStatement", + "src": "11947:17:163" +>>>>>>> Stashed changes ======= "id": 119259, "nodeType": "ExpressionStatement", @@ -25410,6 +33571,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87499, "name": "_msgSender", @@ -25417,6 +33579,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 72664, "src": "12995:10:147", +======= + "id": 119261, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "11991:10:163", +>>>>>>> Stashed changes ======= "id": 119261, "name": "_msgSender", @@ -25430,8 +33600,12 @@ "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87500, +======= + "id": 119262, +>>>>>>> Stashed changes ======= "id": 119262, >>>>>>> Stashed changes @@ -25443,8 +33617,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12995:12:147", +======= + "src": "11991:12:163", +>>>>>>> Stashed changes ======= "src": "11991:12:163", >>>>>>> Stashed changes @@ -25455,6 +33633,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87501, "name": "ratio", @@ -25462,6 +33641,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87491, "src": "13009:5:147", +======= + "id": 119263, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119253, + "src": "12005:5:163", +>>>>>>> Stashed changes ======= "id": 119263, "name": "ratio", @@ -25487,6 +33674,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87498, "name": "TaxRatioUpdated", @@ -25494,6 +33682,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91388, "src": "12979:15:147", +======= + "id": 119260, + "name": "TaxRatioUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123329, + "src": "11975:15:163", +>>>>>>> Stashed changes ======= "id": 119260, "name": "TaxRatioUpdated", @@ -25507,8 +33703,12 @@ "typeString": "function (address,uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87502, +======= + "id": 119264, +>>>>>>> Stashed changes ======= "id": 119264, >>>>>>> Stashed changes @@ -25520,8 +33720,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12979:36:147", +======= + "src": "11975:36:163", +>>>>>>> Stashed changes ======= "src": "11975:36:163", >>>>>>> Stashed changes @@ -25531,10 +33735,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87503, "nodeType": "EmitStatement", "src": "12974:41:147" +======= + "id": 119265, + "nodeType": "EmitStatement", + "src": "11970:41:163" +>>>>>>> Stashed changes ======= "id": 119265, "nodeType": "EmitStatement", @@ -25544,10 +33754,16 @@ ] }, "documentation": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87489, "nodeType": "StructuredDocumentation", "src": "12801:95:147", +======= + "id": 119251, + "nodeType": "StructuredDocumentation", + "src": "11797:95:163", +>>>>>>> Stashed changes ======= "id": 119251, "nodeType": "StructuredDocumentation", @@ -25559,10 +33775,16 @@ "kind": "function", "modifiers": [], "name": "_setTaxRatio", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "12908:12:147", "parameters": { "id": 87492, +======= + "nameLocation": "11904:12:163", + "parameters": { + "id": 119254, +>>>>>>> Stashed changes ======= "nameLocation": "11904:12:163", "parameters": { @@ -25572,6 +33794,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87491, "mutability": "mutable", @@ -25580,6 +33803,15 @@ "nodeType": "VariableDeclaration", "scope": 87505, "src": "12921:13:147", +======= + "id": 119253, + "mutability": "mutable", + "name": "ratio", + "nameLocation": "11925:5:163", + "nodeType": "VariableDeclaration", + "scope": 119267, + "src": "11917:13:163", +>>>>>>> Stashed changes ======= "id": 119253, "mutability": "mutable", @@ -25596,11 +33828,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87490, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "12921:7:147", +======= + "id": 119252, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11917:7:163", +>>>>>>> Stashed changes ======= "id": 119252, "name": "uint256", @@ -25615,6 +33854,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "12920:15:147" }, @@ -25625,6 +33865,17 @@ "src": "12945:0:147" }, "scope": 87685, +======= + "src": "11916:15:163" + }, + "returnParameters": { + "id": 119255, + "nodeType": "ParameterList", + "parameters": [], + "src": "11941:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "11916:15:163" }, @@ -25641,6 +33892,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87526, "nodeType": "FunctionDefinition", @@ -25650,6 +33902,16 @@ "id": 87525, "nodeType": "Block", "src": "13217:156:147", +======= + "id": 119288, + "nodeType": "FunctionDefinition", + "src": "12126:243:163", + "nodes": [], + "body": { + "id": 119287, + "nodeType": "Block", + "src": "12213:156:163", +>>>>>>> Stashed changes ======= "id": 119288, "nodeType": "FunctionDefinition", @@ -25664,8 +33926,12 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87514, +======= + "id": 119276, +>>>>>>> Stashed changes ======= "id": 119276, >>>>>>> Stashed changes @@ -25674,6 +33940,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87512, "name": "_dpDownScaler", @@ -25683,6 +33950,16 @@ "src": "13223:13:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage", +======= + "id": 119274, + "name": "_dpDownScaler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118324, + "src": "12219:13:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", +>>>>>>> Stashed changes ======= "id": 119274, "name": "_dpDownScaler", @@ -25699,6 +33976,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87513, "name": "domainPriceScaleRule", @@ -25720,6 +33998,28 @@ "id": 87515, "nodeType": "ExpressionStatement", "src": "13223:36:147" +======= + "id": 119275, + "name": "domainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119271, + "src": "12235:20:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + }, + "src": "12219:36:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", + "typeString": "struct PeriodScaler storage ref" + } + }, + "id": 119277, + "nodeType": "ExpressionStatement", + "src": "12219:36:163" +>>>>>>> Stashed changes ======= "id": 119275, "name": "domainPriceScaleRule", @@ -25750,6 +34050,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87517, "name": "_msgSender", @@ -25757,6 +34058,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 72664, "src": "13298:10:147", +======= + "id": 119279, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "12294:10:163", +>>>>>>> Stashed changes ======= "id": 119279, "name": "_msgSender", @@ -25770,8 +34079,12 @@ "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87518, +======= + "id": 119280, +>>>>>>> Stashed changes ======= "id": 119280, >>>>>>> Stashed changes @@ -25783,8 +34096,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13298:12:147", +======= + "src": "12294:12:163", +>>>>>>> Stashed changes ======= "src": "12294:12:163", >>>>>>> Stashed changes @@ -25796,6 +34113,7 @@ }, { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87519, "name": "domainPriceScaleRule", @@ -25809,6 +34127,20 @@ } }, "id": 87520, +======= + "id": 119281, + "name": "domainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119271, + "src": "12308:20:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + }, + "id": 119282, +>>>>>>> Stashed changes ======= "id": 119281, "name": "domainPriceScaleRule", @@ -25827,12 +34159,20 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "13333:5:147", "memberName": "ratio", "nodeType": "MemberAccess", "referencedDeclaration": 93659, "src": "13312:26:147", +======= + "memberLocation": "12329:5:163", + "memberName": "ratio", + "nodeType": "MemberAccess", + "referencedDeclaration": 125604, + "src": "12308:26:163", +>>>>>>> Stashed changes ======= "memberLocation": "12329:5:163", "memberName": "ratio", @@ -25847,6 +34187,7 @@ }, { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87521, "name": "domainPriceScaleRule", @@ -25860,6 +34201,20 @@ } }, "id": 87522, +======= + "id": 119283, + "name": "domainPriceScaleRule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119271, + "src": "12336:20:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler calldata" + } + }, + "id": 119284, +>>>>>>> Stashed changes ======= "id": 119283, "name": "domainPriceScaleRule", @@ -25878,12 +34233,20 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "13361:6:147", "memberName": "period", "nodeType": "MemberAccess", "referencedDeclaration": 93661, "src": "13340:27:147", +======= + "memberLocation": "12357:6:163", + "memberName": "period", + "nodeType": "MemberAccess", + "referencedDeclaration": 125606, + "src": "12336:27:163", +>>>>>>> Stashed changes ======= "memberLocation": "12357:6:163", "memberName": "period", @@ -25912,6 +34275,7 @@ "typeString": "uint64" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87516, "name": "DomainPriceScaleRuleUpdated", @@ -25919,6 +34283,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91444, "src": "13270:27:147", +======= + "id": 119278, + "name": "DomainPriceScaleRuleUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123386, + "src": "12266:27:163", +>>>>>>> Stashed changes ======= "id": 119278, "name": "DomainPriceScaleRuleUpdated", @@ -25932,8 +34304,12 @@ "typeString": "function (address,uint192,uint64)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87523, +======= + "id": 119285, +>>>>>>> Stashed changes ======= "id": 119285, >>>>>>> Stashed changes @@ -25945,8 +34321,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13270:98:147", +======= + "src": "12266:98:163", +>>>>>>> Stashed changes ======= "src": "12266:98:163", >>>>>>> Stashed changes @@ -25956,10 +34336,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87524, "nodeType": "EmitStatement", "src": "13265:103:147" +======= + "id": 119286, + "nodeType": "EmitStatement", + "src": "12261:103:163" +>>>>>>> Stashed changes ======= "id": 119286, "nodeType": "EmitStatement", @@ -25969,10 +34355,16 @@ ] }, "documentation": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87506, "nodeType": "StructuredDocumentation", "src": "13024:103:147", +======= + "id": 119268, + "nodeType": "StructuredDocumentation", + "src": "12020:103:163", +>>>>>>> Stashed changes ======= "id": 119268, "nodeType": "StructuredDocumentation", @@ -25984,10 +34376,16 @@ "kind": "function", "modifiers": [], "name": "_setDomainPriceScaleRule", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "13139:24:147", "parameters": { "id": 87510, +======= + "nameLocation": "12135:24:163", + "parameters": { + "id": 119272, +>>>>>>> Stashed changes ======= "nameLocation": "12135:24:163", "parameters": { @@ -25997,6 +34395,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87509, "mutability": "mutable", @@ -26028,6 +34427,38 @@ "src": "13164:12:147", "typeDescriptions": { "typeIdentifier": "t_struct$_PeriodScaler_$93662_storage_ptr", +======= + "id": 119271, + "mutability": "mutable", + "name": "domainPriceScaleRule", + "nameLocation": "12182:20:163", + "nodeType": "VariableDeclaration", + "scope": 119288, + "src": "12160:42:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_calldata_ptr", + "typeString": "struct PeriodScaler" + }, + "typeName": { + "id": 119270, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119269, + "name": "PeriodScaler", + "nameLocations": [ + "12160:12:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125607, + "src": "12160:12:163" + }, + "referencedDeclaration": 125607, + "src": "12160:12:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage_ptr", +>>>>>>> Stashed changes ======= "id": 119271, "mutability": "mutable", @@ -26066,6 +34497,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13163:44:147" }, @@ -26076,6 +34508,17 @@ "src": "13217:0:147" }, "scope": 87685, +======= + "src": "12159:44:163" + }, + "returnParameters": { + "id": 119273, + "nodeType": "ParameterList", + "parameters": [], + "src": "12213:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "12159:44:163" }, @@ -26092,6 +34535,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87610, "nodeType": "FunctionDefinition", @@ -26101,6 +34545,16 @@ "id": 87609, "nodeType": "Block", "src": "13607:677:147", +======= + "id": 119372, + "nodeType": "FunctionDefinition", + "src": "12526:754:163", + "nodes": [], + "body": { + "id": 119371, + "nodeType": "Block", + "src": "12603:677:163", +>>>>>>> Stashed changes ======= "id": 119372, "nodeType": "FunctionDefinition", @@ -26115,8 +34569,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 87535 +======= + 119297 +>>>>>>> Stashed changes ======= 119297 >>>>>>> Stashed changes @@ -26124,6 +34582,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87535, "mutability": "mutable", @@ -26132,6 +34591,15 @@ "nodeType": "VariableDeclaration", "scope": 87609, "src": "13613:16:147", +======= + "id": 119297, + "mutability": "mutable", + "name": "operator", + "nameLocation": "12617:8:163", + "nodeType": "VariableDeclaration", + "scope": 119371, + "src": "12609:16:163", +>>>>>>> Stashed changes ======= "id": 119297, "mutability": "mutable", @@ -26148,11 +34616,18 @@ "typeString": "address" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87534, "name": "address", "nodeType": "ElementaryTypeName", "src": "13613:7:147", +======= + "id": 119296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12609:7:163", +>>>>>>> Stashed changes ======= "id": 119296, "name": "address", @@ -26168,8 +34643,12 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87538, +======= + "id": 119300, +>>>>>>> Stashed changes ======= "id": 119300, >>>>>>> Stashed changes @@ -26177,6 +34656,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87536, "name": "_msgSender", @@ -26184,6 +34664,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 72664, "src": "13632:10:147", +======= + "id": 119298, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "12628:10:163", +>>>>>>> Stashed changes ======= "id": 119298, "name": "_msgSender", @@ -26197,8 +34685,12 @@ "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87537, +======= + "id": 119299, +>>>>>>> Stashed changes ======= "id": 119299, >>>>>>> Stashed changes @@ -26210,8 +34702,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13632:12:147", +======= + "src": "12628:12:163", +>>>>>>> Stashed changes ======= "src": "12628:12:163", >>>>>>> Stashed changes @@ -26222,12 +34718,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13613:31:147" }, { "assignments": [ 87541 +======= + "src": "12609:31:163" + }, + { + "assignments": [ + 119303 +>>>>>>> Stashed changes ======= "src": "12609:31:163" }, @@ -26239,6 +34743,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87541, "mutability": "mutable", @@ -26270,6 +34775,38 @@ "src": "13650:10:147", "typeDescriptions": { "typeIdentifier": "t_struct$_RenewalFee_$91376_storage_ptr", +======= + "id": 119303, + "mutability": "mutable", + "name": "renewalFee", + "nameLocation": "12664:10:163", + "nodeType": "VariableDeclaration", + "scope": 119371, + "src": "12646:28:163", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" + }, + "typeName": { + "id": 119302, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119301, + "name": "RenewalFee", + "nameLocations": [ + "12646:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123317, + "src": "12646:10:163" + }, + "referencedDeclaration": 123317, + "src": "12646:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", +>>>>>>> Stashed changes ======= "id": 119303, "mutability": "mutable", @@ -26308,6 +34845,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87542, "nodeType": "VariableDeclarationStatement", @@ -26316,6 +34854,15 @@ { "assignments": [ 87544 +======= + "id": 119304, + "nodeType": "VariableDeclarationStatement", + "src": "12646:28:163" + }, + { + "assignments": [ + 119306 +>>>>>>> Stashed changes ======= "id": 119304, "nodeType": "VariableDeclarationStatement", @@ -26329,6 +34876,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87544, "mutability": "mutable", @@ -26337,6 +34885,15 @@ "nodeType": "VariableDeclaration", "scope": 87609, "src": "13684:14:147", +======= + "id": 119306, + "mutability": "mutable", + "name": "length", + "nameLocation": "12688:6:163", + "nodeType": "VariableDeclaration", + "scope": 119371, + "src": "12680:14:163", +>>>>>>> Stashed changes ======= "id": 119306, "mutability": "mutable", @@ -26353,11 +34910,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87543, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13684:7:147", +======= + "id": 119305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12680:7:163", +>>>>>>> Stashed changes ======= "id": 119305, "name": "uint256", @@ -26372,6 +34936,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87547, "initialValue": { @@ -26388,6 +34953,23 @@ } }, "id": 87546, +======= + "id": 119309, + "initialValue": { + "expression": { + "id": 119307, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119293, + "src": "12697:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" + } + }, + "id": 119308, +>>>>>>> Stashed changes ======= "id": 119309, "initialValue": { @@ -26409,11 +34991,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "13713:6:147", "memberName": "length", "nodeType": "MemberAccess", "src": "13701:18:147", +======= + "memberLocation": "12709:6:163", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12697:18:163", +>>>>>>> Stashed changes ======= "memberLocation": "12709:6:163", "memberName": "length", @@ -26426,12 +35015,20 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13684:35:147" }, { "assignments": [ 87549 +======= + "src": "12680:35:163" + }, + { + "assignments": [ + 119311 +>>>>>>> Stashed changes ======= "src": "12680:35:163" }, @@ -26443,6 +35040,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87549, "mutability": "mutable", @@ -26451,6 +35049,15 @@ "nodeType": "VariableDeclaration", "scope": 87609, "src": "13725:27:147", +======= + "id": 119311, + "mutability": "mutable", + "name": "maxRenewalFeeLength", + "nameLocation": "12729:19:163", + "nodeType": "VariableDeclaration", + "scope": 119371, + "src": "12721:27:163", +>>>>>>> Stashed changes ======= "id": 119311, "mutability": "mutable", @@ -26467,11 +35074,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87548, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13725:7:147", +======= + "id": 119310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12721:7:163", +>>>>>>> Stashed changes ======= "id": 119310, "name": "uint256", @@ -26486,6 +35100,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87551, "initialValue": { @@ -26495,6 +35110,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 86399, "src": "13755:13:147", +======= + "id": 119313, + "initialValue": { + "id": 119312, + "name": "_rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118314, + "src": "12751:13:163", +>>>>>>> Stashed changes ======= "id": 119313, "initialValue": { @@ -26511,6 +35136,7 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13725:43:147" }, @@ -26523,6 +35149,19 @@ { "expression": { "id": 87562, +======= + "src": "12721:43:163" + }, + { + "body": { + "id": 119355, + "nodeType": "Block", + "src": "12800:308:163", + "statements": [ + { + "expression": { + "id": 119324, +>>>>>>> Stashed changes ======= "src": "12721:43:163" }, @@ -26541,6 +35180,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87558, "name": "renewalFee", @@ -26550,6 +35190,16 @@ "src": "13812:10:147", "typeDescriptions": { "typeIdentifier": "t_struct$_RenewalFee_$91376_memory_ptr", +======= + "id": 119320, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "12808:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", +>>>>>>> Stashed changes ======= "id": 119320, "name": "renewalFee", @@ -26567,6 +35217,7 @@ "operator": "=", "rightHandSide": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87559, "name": "renewalFees", @@ -26587,6 +35238,27 @@ "overloadedDeclarations": [], "referencedDeclaration": 87553, "src": "13837:1:147", +======= + "id": 119321, + "name": "renewalFees", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119293, + "src": "12821:11:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata[] calldata" + } + }, + "id": 119323, + "indexExpression": { + "id": 119322, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119315, + "src": "12833:1:163", +>>>>>>> Stashed changes ======= "id": 119321, "name": "renewalFees", @@ -26618,6 +35290,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13825:14:147", "typeDescriptions": { @@ -26638,6 +35311,27 @@ { "expression": { "id": 87571, +======= + "src": "12821:14:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_calldata_ptr", + "typeString": "struct INSDomainPrice.RenewalFee calldata" + } + }, + "src": "12808:27:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119325, + "nodeType": "ExpressionStatement", + "src": "12808:27:163" + }, + { + "expression": { + "id": 119333, +>>>>>>> Stashed changes ======= "src": "12821:14:163", "typeDescriptions": { @@ -26664,6 +35358,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87564, "name": "maxRenewalFeeLength", @@ -26671,6 +35366,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87549, "src": "13847:19:147", +======= + "id": 119326, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "12843:19:163", +>>>>>>> Stashed changes ======= "id": 119326, "name": "maxRenewalFeeLength", @@ -26689,6 +35392,7 @@ "rightHandSide": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87567, "name": "maxRenewalFeeLength", @@ -26696,6 +35400,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87549, "src": "13878:19:147", +======= + "id": 119329, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "12874:19:163", +>>>>>>> Stashed changes ======= "id": 119329, "name": "maxRenewalFeeLength", @@ -26711,6 +35423,7 @@ }, { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87568, "name": "renewalFee", @@ -26724,6 +35437,20 @@ } }, "id": 87569, +======= + "id": 119330, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "12895:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119331, +>>>>>>> Stashed changes ======= "id": 119330, "name": "renewalFee", @@ -26742,12 +35469,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "13910:11:147", "memberName": "labelLength", "nodeType": "MemberAccess", "referencedDeclaration": 91373, "src": "13899:22:147", +======= + "memberLocation": "12906:11:163", + "memberName": "labelLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 123314, + "src": "12895:22:163", +>>>>>>> Stashed changes ======= "memberLocation": "12906:11:163", "memberName": "labelLength", @@ -26773,6 +35508,7 @@ } ], "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87565, "name": "Math", @@ -26786,6 +35522,20 @@ } }, "id": 87566, +======= + "id": 119327, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104833, + "src": "12865:4:163", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$104833_$", + "typeString": "type(library Math)" + } + }, + "id": 119328, +>>>>>>> Stashed changes ======= "id": 119327, "name": "Math", @@ -26804,12 +35554,20 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "13874:3:147", "memberName": "max", "nodeType": "MemberAccess", "referencedDeclaration": 73074, "src": "13869:8:147", +======= + "memberLocation": "12870:3:163", + "memberName": "max", + "nodeType": "MemberAccess", + "referencedDeclaration": 103992, + "src": "12865:8:163", +>>>>>>> Stashed changes ======= "memberLocation": "12870:3:163", "memberName": "max", @@ -26822,8 +35580,12 @@ "typeString": "function (uint256,uint256) pure returns (uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87570, +======= + "id": 119332, +>>>>>>> Stashed changes ======= "id": 119332, >>>>>>> Stashed changes @@ -26835,8 +35597,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13869:53:147", +======= + "src": "12865:53:163", +>>>>>>> Stashed changes ======= "src": "12865:53:163", >>>>>>> Stashed changes @@ -26846,8 +35612,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13847:75:147", +======= + "src": "12843:75:163", +>>>>>>> Stashed changes ======= "src": "12843:75:163", >>>>>>> Stashed changes @@ -26856,6 +35626,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87572, "nodeType": "ExpressionStatement", @@ -26864,6 +35635,15 @@ { "expression": { "id": 87579, +======= + "id": 119334, + "nodeType": "ExpressionStatement", + "src": "12843:75:163" + }, + { + "expression": { + "id": 119341, +>>>>>>> Stashed changes ======= "id": 119334, "nodeType": "ExpressionStatement", @@ -26879,6 +35659,7 @@ "lValueRequested": false, "leftHandSide": { "baseExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87573, "name": "_rnFee", @@ -26886,6 +35667,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86414, "src": "13930:6:147", +======= + "id": 119335, + "name": "_rnFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118329, + "src": "12926:6:163", +>>>>>>> Stashed changes ======= "id": 119335, "name": "_rnFee", @@ -26899,6 +35688,7 @@ "typeString": "mapping(uint256 => uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87576, "indexExpression": { @@ -26915,6 +35705,23 @@ } }, "id": 87575, +======= + "id": 119338, + "indexExpression": { + "expression": { + "id": 119336, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "12933:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119337, +>>>>>>> Stashed changes ======= "id": 119338, "indexExpression": { @@ -26936,12 +35743,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "13948:11:147", "memberName": "labelLength", "nodeType": "MemberAccess", "referencedDeclaration": 91373, "src": "13937:22:147", +======= + "memberLocation": "12944:11:163", + "memberName": "labelLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 123314, + "src": "12933:22:163", +>>>>>>> Stashed changes ======= "memberLocation": "12944:11:163", "memberName": "labelLength", @@ -26959,8 +35774,12 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13930:30:147", +======= + "src": "12926:30:163", +>>>>>>> Stashed changes ======= "src": "12926:30:163", >>>>>>> Stashed changes @@ -26973,6 +35792,7 @@ "operator": "=", "rightHandSide": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87577, "name": "renewalFee", @@ -26986,6 +35806,20 @@ } }, "id": 87578, +======= + "id": 119339, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "12959:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119340, +>>>>>>> Stashed changes ======= "id": 119339, "name": "renewalFee", @@ -27004,12 +35838,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "13974:3:147", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 91375, "src": "13963:14:147", +======= + "memberLocation": "12970:3:163", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 123316, + "src": "12959:14:163", +>>>>>>> Stashed changes ======= "memberLocation": "12970:3:163", "memberName": "fee", @@ -27022,8 +35864,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13930:47:147", +======= + "src": "12926:47:163", +>>>>>>> Stashed changes ======= "src": "12926:47:163", >>>>>>> Stashed changes @@ -27032,10 +35878,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87580, "nodeType": "ExpressionStatement", "src": "13930:47:147" +======= + "id": 119342, + "nodeType": "ExpressionStatement", + "src": "12926:47:163" +>>>>>>> Stashed changes ======= "id": 119342, "nodeType": "ExpressionStatement", @@ -27046,6 +35898,7 @@ "eventCall": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87582, "name": "operator", @@ -27053,6 +35906,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87535, "src": "14016:8:147", +======= + "id": 119344, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119297, + "src": "13012:8:163", +>>>>>>> Stashed changes ======= "id": 119344, "name": "operator", @@ -27068,6 +35929,7 @@ }, { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87583, "name": "renewalFee", @@ -27081,6 +35943,20 @@ } }, "id": 87584, +======= + "id": 119345, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "13022:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119346, +>>>>>>> Stashed changes ======= "id": 119345, "name": "renewalFee", @@ -27099,12 +35975,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "14037:11:147", "memberName": "labelLength", "nodeType": "MemberAccess", "referencedDeclaration": 91373, "src": "14026:22:147", +======= + "memberLocation": "13033:11:163", + "memberName": "labelLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 123314, + "src": "13022:22:163", +>>>>>>> Stashed changes ======= "memberLocation": "13033:11:163", "memberName": "labelLength", @@ -27119,6 +36003,7 @@ }, { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87585, "name": "renewalFee", @@ -27132,6 +36017,20 @@ } }, "id": 87586, +======= + "id": 119347, + "name": "renewalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119303, + "src": "13046:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_memory_ptr", + "typeString": "struct INSDomainPrice.RenewalFee memory" + } + }, + "id": 119348, +>>>>>>> Stashed changes ======= "id": 119347, "name": "renewalFee", @@ -27150,12 +36049,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "14061:3:147", "memberName": "fee", "nodeType": "MemberAccess", "referencedDeclaration": 91375, "src": "14050:14:147", +======= + "memberLocation": "13057:3:163", + "memberName": "fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 123316, + "src": "13046:14:163", +>>>>>>> Stashed changes ======= "memberLocation": "13057:3:163", "memberName": "fee", @@ -27184,6 +36091,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87581, "name": "RenewalFeeByLengthUpdated", @@ -27191,6 +36099,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91404, "src": "13990:25:147", +======= + "id": 119343, + "name": "RenewalFeeByLengthUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123345, + "src": "12986:25:163", +>>>>>>> Stashed changes ======= "id": 119343, "name": "RenewalFeeByLengthUpdated", @@ -27204,8 +36120,12 @@ "typeString": "function (address,uint256,uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87587, +======= + "id": 119349, +>>>>>>> Stashed changes ======= "id": 119349, >>>>>>> Stashed changes @@ -27217,8 +36137,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13990:75:147", +======= + "src": "12986:75:163", +>>>>>>> Stashed changes ======= "src": "12986:75:163", >>>>>>> Stashed changes @@ -27228,6 +36152,7 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87588, "nodeType": "EmitStatement", @@ -27241,6 +36166,20 @@ { "expression": { "id": 87590, +======= + "id": 119350, + "nodeType": "EmitStatement", + "src": "12981:80:163" + }, + { + "id": 119354, + "nodeType": "UncheckedBlock", + "src": "13070:32:163", + "statements": [ + { + "expression": { + "id": 119352, +>>>>>>> Stashed changes ======= "id": 119350, "nodeType": "EmitStatement", @@ -27262,6 +36201,7 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14094:3:147", "subExpression": { @@ -27271,6 +36211,16 @@ "overloadedDeclarations": [], "referencedDeclaration": 87553, "src": "14096:1:147", +======= + "src": "13090:3:163", + "subExpression": { + "id": 119351, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119315, + "src": "13092:1:163", +>>>>>>> Stashed changes ======= "src": "13090:3:163", "subExpression": { @@ -27291,10 +36241,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87591, "nodeType": "ExpressionStatement", "src": "14094:3:147" +======= + "id": 119353, + "nodeType": "ExpressionStatement", + "src": "13090:3:163" +>>>>>>> Stashed changes ======= "id": 119353, "nodeType": "ExpressionStatement", @@ -27310,8 +36266,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87557, +======= + "id": 119319, +>>>>>>> Stashed changes ======= "id": 119319, >>>>>>> Stashed changes @@ -27320,6 +36280,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87555, "name": "i", @@ -27327,6 +36288,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87553, "src": "13791:1:147", +======= + "id": 119317, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119315, + "src": "12787:1:163", +>>>>>>> Stashed changes ======= "id": 119317, "name": "i", @@ -27343,6 +36312,7 @@ "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87556, "name": "length", @@ -27350,6 +36320,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87544, "src": "13795:6:147", +======= + "id": 119318, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119306, + "src": "12791:6:163", +>>>>>>> Stashed changes ======= "id": 119318, "name": "length", @@ -27363,8 +36341,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13791:10:147", +======= + "src": "12787:10:163", +>>>>>>> Stashed changes ======= "src": "12787:10:163", >>>>>>> Stashed changes @@ -27373,11 +36355,18 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87594, "initializationExpression": { "assignments": [ 87553 +======= + "id": 119356, + "initializationExpression": { + "assignments": [ + 119315 +>>>>>>> Stashed changes ======= "id": 119356, "initializationExpression": { @@ -27388,6 +36377,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87553, "mutability": "mutable", @@ -27396,6 +36386,15 @@ "nodeType": "VariableDeclaration", "scope": 87594, "src": "13780:9:147", +======= + "id": 119315, + "mutability": "mutable", + "name": "i", + "nameLocation": "12784:1:163", + "nodeType": "VariableDeclaration", + "scope": 119356, + "src": "12776:9:163", +>>>>>>> Stashed changes ======= "id": 119315, "mutability": "mutable", @@ -27412,11 +36411,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87552, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "13780:7:147", +======= + "id": 119314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12776:7:163", +>>>>>>> Stashed changes ======= "id": 119314, "name": "uint256", @@ -27431,6 +36437,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87554, "nodeType": "VariableDeclarationStatement", @@ -27438,6 +36445,14 @@ }, "nodeType": "ForStatement", "src": "13775:337:147" +======= + "id": 119316, + "nodeType": "VariableDeclarationStatement", + "src": "12776:9:163" + }, + "nodeType": "ForStatement", + "src": "12771:337:163" +>>>>>>> Stashed changes ======= "id": 119316, "nodeType": "VariableDeclarationStatement", @@ -27453,8 +36468,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87597, +======= + "id": 119359, +>>>>>>> Stashed changes ======= "id": 119359, >>>>>>> Stashed changes @@ -27463,6 +36482,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87595, "name": "maxRenewalFeeLength", @@ -27470,6 +36490,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87549, "src": "14122:19:147", +======= + "id": 119357, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "13118:19:163", +>>>>>>> Stashed changes ======= "id": 119357, "name": "maxRenewalFeeLength", @@ -27486,6 +36514,7 @@ "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87596, "name": "_rnfMaxLength", @@ -27493,6 +36522,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86399, "src": "14145:13:147", +======= + "id": 119358, + "name": "_rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118314, + "src": "13141:13:163", +>>>>>>> Stashed changes ======= "id": 119358, "name": "_rnfMaxLength", @@ -27506,8 +36543,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14122:36:147", +======= + "src": "13118:36:163", +>>>>>>> Stashed changes ======= "src": "13118:36:163", >>>>>>> Stashed changes @@ -27516,6 +36557,7 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87608, "nodeType": "IfStatement", @@ -27528,6 +36570,19 @@ { "expression": { "id": 87600, +======= + "id": 119370, + "nodeType": "IfStatement", + "src": "13114:162:163", + "trueBody": { + "id": 119369, + "nodeType": "Block", + "src": "13156:120:163", + "statements": [ + { + "expression": { + "id": 119362, +>>>>>>> Stashed changes ======= "id": 119370, "nodeType": "IfStatement", @@ -27546,6 +36601,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87598, "name": "_rnfMaxLength", @@ -27553,6 +36609,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86399, "src": "14168:13:147", +======= + "id": 119360, + "name": "_rnfMaxLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118314, + "src": "13164:13:163", +>>>>>>> Stashed changes ======= "id": 119360, "name": "_rnfMaxLength", @@ -27569,6 +36633,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87599, "name": "maxRenewalFeeLength", @@ -27576,6 +36641,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87549, "src": "14184:19:147", +======= + "id": 119361, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "13180:19:163", +>>>>>>> Stashed changes ======= "id": 119361, "name": "maxRenewalFeeLength", @@ -27589,8 +36662,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14168:35:147", +======= + "src": "13164:35:163", +>>>>>>> Stashed changes ======= "src": "13164:35:163", >>>>>>> Stashed changes @@ -27599,10 +36676,16 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87601, "nodeType": "ExpressionStatement", "src": "14168:35:147" +======= + "id": 119363, + "nodeType": "ExpressionStatement", + "src": "13164:35:163" +>>>>>>> Stashed changes ======= "id": 119363, "nodeType": "ExpressionStatement", @@ -27613,6 +36696,7 @@ "eventCall": { "arguments": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87603, "name": "operator", @@ -27620,6 +36704,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87535, "src": "14243:8:147", +======= + "id": 119365, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119297, + "src": "13239:8:163", +>>>>>>> Stashed changes ======= "id": 119365, "name": "operator", @@ -27634,6 +36726,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87604, "name": "maxRenewalFeeLength", @@ -27641,6 +36734,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87549, "src": "14253:19:147", +======= + "id": 119366, + "name": "maxRenewalFeeLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119311, + "src": "13249:19:163", +>>>>>>> Stashed changes ======= "id": 119366, "name": "maxRenewalFeeLength", @@ -27666,6 +36767,7 @@ "typeString": "uint256" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87602, "name": "MaxRenewalFeeLengthUpdated", @@ -27673,6 +36775,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 91395, "src": "14216:26:147", +======= + "id": 119364, + "name": "MaxRenewalFeeLengthUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123336, + "src": "13212:26:163", +>>>>>>> Stashed changes ======= "id": 119364, "name": "MaxRenewalFeeLengthUpdated", @@ -27686,8 +36796,12 @@ "typeString": "function (address,uint256)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87605, +======= + "id": 119367, +>>>>>>> Stashed changes ======= "id": 119367, >>>>>>> Stashed changes @@ -27699,8 +36813,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14216:57:147", +======= + "src": "13212:57:163", +>>>>>>> Stashed changes ======= "src": "13212:57:163", >>>>>>> Stashed changes @@ -27710,10 +36828,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87606, "nodeType": "EmitStatement", "src": "14211:62:147" +======= + "id": 119368, + "nodeType": "EmitStatement", + "src": "13207:62:163" +>>>>>>> Stashed changes ======= "id": 119368, "nodeType": "EmitStatement", @@ -27726,10 +36850,16 @@ ] }, "documentation": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87527, "nodeType": "StructuredDocumentation", "src": "13377:150:147", +======= + "id": 119289, + "nodeType": "StructuredDocumentation", + "src": "12373:150:163", +>>>>>>> Stashed changes ======= "id": 119289, "nodeType": "StructuredDocumentation", @@ -27741,10 +36871,16 @@ "kind": "function", "modifiers": [], "name": "_setRenewalFeeByLengths", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "13539:23:147", "parameters": { "id": 87532, +======= + "nameLocation": "12535:23:163", + "parameters": { + "id": 119294, +>>>>>>> Stashed changes ======= "nameLocation": "12535:23:163", "parameters": { @@ -27754,6 +36890,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87531, "mutability": "mutable", @@ -27766,6 +36903,19 @@ "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_calldata_ptr_$dyn_calldata_ptr", +======= + "id": 119293, + "mutability": "mutable", + "name": "renewalFees", + "nameLocation": "12581:11:163", + "nodeType": "VariableDeclaration", + "scope": 119372, + "src": "12559:33:163", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_calldata_ptr_$dyn_calldata_ptr", +>>>>>>> Stashed changes ======= "id": 119293, "mutability": "mutable", @@ -27783,6 +36933,7 @@ }, "typeName": { "baseType": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87529, "nodeType": "UserDefinedTypeName", @@ -27808,6 +36959,32 @@ "src": "13563:12:147", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_RenewalFee_$91376_storage_$dyn_storage_ptr", +======= + "id": 119291, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119290, + "name": "RenewalFee", + "nameLocations": [ + "12559:10:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123317, + "src": "12559:10:163" + }, + "referencedDeclaration": 123317, + "src": "12559:10:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RenewalFee_$123317_storage_ptr", + "typeString": "struct INSDomainPrice.RenewalFee" + } + }, + "id": 119292, + "nodeType": "ArrayTypeName", + "src": "12559:12:163", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_RenewalFee_$123317_storage_$dyn_storage_ptr", +>>>>>>> Stashed changes ======= "id": 119291, "nodeType": "UserDefinedTypeName", @@ -27840,6 +37017,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "13562:35:147" }, @@ -27850,6 +37028,17 @@ "src": "13607:0:147" }, "scope": 87685, +======= + "src": "12558:35:163" + }, + "returnParameters": { + "id": 119295, + "nodeType": "ParameterList", + "parameters": [], + "src": "12603:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "12558:35:163" }, @@ -27866,6 +37055,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87642, "nodeType": "FunctionDefinition", @@ -27875,6 +37065,16 @@ "id": 87641, "nodeType": "Block", "src": "14487:194:147", +======= + "id": 119404, + "nodeType": "FunctionDefinition", + "src": "13381:296:163", + "nodes": [], + "body": { + "id": 119403, + "nodeType": "Block", + "src": "13483:194:163", +>>>>>>> Stashed changes ======= "id": 119404, "nodeType": "FunctionDefinition", @@ -27889,8 +37089,12 @@ "statements": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87623, +======= + "id": 119385, +>>>>>>> Stashed changes ======= "id": 119385, >>>>>>> Stashed changes @@ -27899,6 +37103,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87621, "name": "_pyth", @@ -27908,6 +37113,16 @@ "src": "14493:5:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 119383, + "name": "_pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118304, + "src": "13489:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 119383, "name": "_pyth", @@ -27924,6 +37139,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87622, "name": "pyth", @@ -27949,6 +37165,32 @@ { "expression": { "id": 87627, +======= + "id": 119384, + "name": "pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119376, + "src": "13497:4:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + } + }, + "src": "13489:12:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + } + }, + "id": 119386, + "nodeType": "ExpressionStatement", + "src": "13489:12:163" + }, + { + "expression": { + "id": 119389, +>>>>>>> Stashed changes ======= "id": 119384, "name": "pyth", @@ -27980,6 +37222,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87625, "name": "_maxAcceptableAge", @@ -27987,6 +37230,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86402, "src": "14511:17:147", +======= + "id": 119387, + "name": "_maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118317, + "src": "13507:17:163", +>>>>>>> Stashed changes ======= "id": 119387, "name": "_maxAcceptableAge", @@ -28003,6 +37254,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87626, "name": "maxAcceptableAge", @@ -28010,6 +37262,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87616, "src": "14531:16:147", +======= + "id": 119388, + "name": "maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119378, + "src": "13527:16:163", +>>>>>>> Stashed changes ======= "id": 119388, "name": "maxAcceptableAge", @@ -28023,8 +37283,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14511:36:147", +======= + "src": "13507:36:163", +>>>>>>> Stashed changes ======= "src": "13507:36:163", >>>>>>> Stashed changes @@ -28033,6 +37297,7 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87628, "nodeType": "ExpressionStatement", @@ -28041,6 +37306,15 @@ { "expression": { "id": 87631, +======= + "id": 119390, + "nodeType": "ExpressionStatement", + "src": "13507:36:163" + }, + { + "expression": { + "id": 119393, +>>>>>>> Stashed changes ======= "id": 119390, "nodeType": "ExpressionStatement", @@ -28055,6 +37329,7 @@ "isPure": false, "lValueRequested": false, "leftHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87629, "name": "_pythIdForRONUSD", @@ -28062,6 +37337,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86405, "src": "14553:16:147", +======= + "id": 119391, + "name": "_pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118320, + "src": "13549:16:163", +>>>>>>> Stashed changes ======= "id": 119391, "name": "_pythIdForRONUSD", @@ -28078,6 +37361,7 @@ "nodeType": "Assignment", "operator": "=", "rightHandSide": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87630, "name": "pythIdForRONUSD", @@ -28085,6 +37369,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87618, "src": "14572:15:147", +======= + "id": 119392, + "name": "pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119380, + "src": "13568:15:163", +>>>>>>> Stashed changes ======= "id": 119392, "name": "pythIdForRONUSD", @@ -28098,8 +37390,12 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14553:34:147", +======= + "src": "13549:34:163", +>>>>>>> Stashed changes ======= "src": "13549:34:163", >>>>>>> Stashed changes @@ -28108,10 +37404,16 @@ "typeString": "bytes32" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87632, "nodeType": "ExpressionStatement", "src": "14553:34:147" +======= + "id": 119394, + "nodeType": "ExpressionStatement", + "src": "13549:34:163" +>>>>>>> Stashed changes ======= "id": 119394, "nodeType": "ExpressionStatement", @@ -28125,6 +37427,7 @@ "arguments": [], "expression": { "argumentTypes": [], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87634, "name": "_msgSender", @@ -28132,6 +37435,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 72664, "src": "14622:10:147", +======= + "id": 119396, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103582, + "src": "13618:10:163", +>>>>>>> Stashed changes ======= "id": 119396, "name": "_msgSender", @@ -28145,8 +37456,12 @@ "typeString": "function () view returns (address)" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87635, +======= + "id": 119397, +>>>>>>> Stashed changes ======= "id": 119397, >>>>>>> Stashed changes @@ -28158,8 +37473,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14622:12:147", +======= + "src": "13618:12:163", +>>>>>>> Stashed changes ======= "src": "13618:12:163", >>>>>>> Stashed changes @@ -28170,6 +37489,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87636, "name": "pyth", @@ -28179,6 +37499,16 @@ "src": "14636:4:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 119398, + "name": "pyth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119376, + "src": "13632:4:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 119398, "name": "pyth", @@ -28193,6 +37523,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87637, "name": "maxAcceptableAge", @@ -28200,6 +37531,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87616, "src": "14642:16:147", +======= + "id": 119399, + "name": "maxAcceptableAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119378, + "src": "13638:16:163", +>>>>>>> Stashed changes ======= "id": 119399, "name": "maxAcceptableAge", @@ -28214,6 +37553,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87638, "name": "pythIdForRONUSD", @@ -28221,6 +37561,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87618, "src": "14660:15:147", +======= + "id": 119400, + "name": "pythIdForRONUSD", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119380, + "src": "13656:15:163", +>>>>>>> Stashed changes ======= "id": 119400, "name": "pythIdForRONUSD", @@ -28242,8 +37590,12 @@ "typeString": "address" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "typeIdentifier": "t_contract$_IPyth_$106120", >>>>>>> Stashed changes @@ -28258,6 +37610,7 @@ "typeString": "bytes32" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87633, "name": "PythOracleConfigUpdated", @@ -28271,6 +37624,20 @@ } }, "id": 87639, +======= + "id": 119395, + "name": "PythOracleConfigUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123398, + "src": "13594:23:163", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IPyth_$106120_$_t_uint256_$_t_bytes32_$returns$__$", + "typeString": "function (address,contract IPyth,uint256,bytes32)" + } + }, + "id": 119401, +>>>>>>> Stashed changes ======= "id": 119395, "name": "PythOracleConfigUpdated", @@ -28293,8 +37660,12 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14598:78:147", +======= + "src": "13594:78:163", +>>>>>>> Stashed changes ======= "src": "13594:78:163", >>>>>>> Stashed changes @@ -28304,10 +37675,16 @@ "typeString": "tuple()" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87640, "nodeType": "EmitStatement", "src": "14593:83:147" +======= + "id": 119402, + "nodeType": "EmitStatement", + "src": "13589:83:163" +>>>>>>> Stashed changes ======= "id": 119402, "nodeType": "EmitStatement", @@ -28317,10 +37694,16 @@ ] }, "documentation": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87611, "nodeType": "StructuredDocumentation", "src": "14288:94:147", +======= + "id": 119373, + "nodeType": "StructuredDocumentation", + "src": "13284:94:163", +>>>>>>> Stashed changes ======= "id": 119373, "nodeType": "StructuredDocumentation", @@ -28332,10 +37715,16 @@ "kind": "function", "modifiers": [], "name": "_setPythOracleConfig", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "14394:20:147", "parameters": { "id": 87619, +======= + "nameLocation": "13390:20:163", + "parameters": { + "id": 119381, +>>>>>>> Stashed changes ======= "nameLocation": "13390:20:163", "parameters": { @@ -28345,6 +37734,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87614, "mutability": "mutable", @@ -28376,6 +37766,38 @@ "src": "14415:5:147", "typeDescriptions": { "typeIdentifier": "t_contract$_IPyth_$75202", +======= + "id": 119376, + "mutability": "mutable", + "name": "pyth", + "nameLocation": "13417:4:163", + "nodeType": "VariableDeclaration", + "scope": 119404, + "src": "13411:10:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", + "typeString": "contract IPyth" + }, + "typeName": { + "id": 119375, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119374, + "name": "IPyth", + "nameLocations": [ + "13411:5:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 106120, + "src": "13411:5:163" + }, + "referencedDeclaration": 106120, + "src": "13411:5:163", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPyth_$106120", +>>>>>>> Stashed changes ======= "id": 119376, "mutability": "mutable", @@ -28415,6 +37837,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87616, "mutability": "mutable", @@ -28423,6 +37846,15 @@ "nodeType": "VariableDeclaration", "scope": 87642, "src": "14427:24:147", +======= + "id": 119378, + "mutability": "mutable", + "name": "maxAcceptableAge", + "nameLocation": "13431:16:163", + "nodeType": "VariableDeclaration", + "scope": 119404, + "src": "13423:24:163", +>>>>>>> Stashed changes ======= "id": 119378, "mutability": "mutable", @@ -28439,11 +37871,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87615, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14427:7:147", +======= + "id": 119377, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13423:7:163", +>>>>>>> Stashed changes ======= "id": 119377, "name": "uint256", @@ -28459,6 +37898,7 @@ }, { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87618, "mutability": "mutable", @@ -28467,6 +37907,15 @@ "nodeType": "VariableDeclaration", "scope": 87642, "src": "14453:23:147", +======= + "id": 119380, + "mutability": "mutable", + "name": "pythIdForRONUSD", + "nameLocation": "13457:15:163", + "nodeType": "VariableDeclaration", + "scope": 119404, + "src": "13449:23:163", +>>>>>>> Stashed changes ======= "id": 119380, "mutability": "mutable", @@ -28483,11 +37932,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87617, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "14453:7:147", +======= + "id": 119379, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13449:7:163", +>>>>>>> Stashed changes ======= "id": 119379, "name": "bytes32", @@ -28502,6 +37958,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14414:63:147" }, @@ -28512,6 +37969,17 @@ "src": "14487:0:147" }, "scope": 87685, +======= + "src": "13410:63:163" + }, + "returnParameters": { + "id": 119382, + "nodeType": "ParameterList", + "parameters": [], + "src": "13483:0:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "13410:63:163" }, @@ -28528,6 +37996,7 @@ "visibility": "internal" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87684, "nodeType": "FunctionDefinition", @@ -28537,6 +38006,16 @@ "id": 87683, "nodeType": "Block", "src": "14867:288:147", +======= + "id": 119583, + "nodeType": "FunctionDefinition", + "src": "14186:1419:163", + "nodes": [], + "body": { + "id": 119582, + "nodeType": "Block", + "src": "14360:1245:163", +>>>>>>> Stashed changes ======= "id": 119583, "nodeType": "FunctionDefinition", @@ -28551,8 +38030,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 87652 +======= + 119421 +>>>>>>> Stashed changes ======= 119421 >>>>>>> Stashed changes @@ -28560,6 +38043,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87652, "mutability": "mutable", @@ -28614,12 +38098,36 @@ "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" +>>>>>>> Stashed changes +======= + "id": 119421, + "mutability": "mutable", + "name": "nameLen", + "nameLocation": "14374:7:163", + "nodeType": "VariableDeclaration", + "scope": 119582, + "src": "14366:15:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14366:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" >>>>>>> Stashed changes } }, "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87656, "initialValue": { @@ -28834,6 +38342,198 @@ "overloadedDeclarations": [], "referencedDeclaration": 119427, "src": "14492:6:163", +>>>>>>> Stashed changes +======= + "id": 119425, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 119422, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119407, + "src": "14384:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 119423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14390:6:163", + "memberName": "strlen", + "nodeType": "MemberAccess", + "referencedDeclaration": 125159, + "src": "14384:12:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory) pure returns (uint256)" + } + }, + "id": 119424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14384:14:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14366:32:163" + }, + { + "assignments": [ + 119427 + ], + "declarations": [ + { + "constant": false, + "id": 119427, + "mutability": "mutable", + "name": "lbHash", + "nameLocation": "14412:6:163", + "nodeType": "VariableDeclaration", + "scope": 119582, + "src": "14404:14:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 119426, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14404:7:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 119431, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 119428, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119407, + "src": "14421:5:163", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 119429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14427:9:163", + "memberName": "hashLabel", + "nodeType": "MemberAccess", + "referencedDeclaration": 125041, + "src": "14421:15:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$attached_to$_t_string_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes32)" + } + }, + "id": 119430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14421:17:163", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14404:34:163" + }, + { + "assignments": [ + 119433 + ], + "declarations": [ + { + "constant": false, + "id": 119433, + "mutability": "mutable", + "name": "overriddenRenewalFee", + "nameLocation": "14452:20:163", + "nodeType": "VariableDeclaration", + "scope": 119582, + "src": "14444:28:163", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14444:7:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 119437, + "initialValue": { + "baseExpression": { + "id": 119434, + "name": "_rnFeeOverriding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118340, + "src": "14475:16:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 119436, + "indexExpression": { + "id": 119435, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119427, + "src": "14492:6:163", >>>>>>> Stashed changes "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -28845,6 +38545,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14903:11:147", "typeDescriptions": { @@ -28854,6 +38555,16 @@ }, "nodeType": "VariableDeclarationStatement", "src": "14873:41:147" +======= + "src": "14475:24:163", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14444:55:163" +>>>>>>> Stashed changes ======= "src": "14475:24:163", "typeDescriptions": { @@ -30966,8 +40677,12 @@ "statements": [ { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 87658 +======= + 119593 +>>>>>>> Stashed changes ======= 119593 >>>>>>> Stashed changes @@ -30975,6 +40690,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87658, "mutability": "mutable", @@ -30983,6 +40699,99 @@ "nodeType": "VariableDeclaration", "scope": 87683, "src": "14920:20:147", +======= + "id": 119593, + "mutability": "mutable", + "name": "dp", + "nameLocation": "15822:2:163", + "nodeType": "VariableDeclaration", + "scope": 119624, + "src": "15797:27:163", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper" + }, + "typeName": { + "id": 119592, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 119591, + "name": "TimestampWrapper", + "nameLocations": [ + "15797:16:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 125530, + "src": "15797:16:163" + }, + "referencedDeclaration": 125530, + "src": "15797:16:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper" + } + }, + "visibility": "internal" + } + ], + "id": 119597, + "initialValue": { + "baseExpression": { + "id": 119594, + "name": "_dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118335, + "src": "15827:3:163", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_TimestampWrapper_$125530_storage_$", + "typeString": "mapping(bytes32 => struct TimestampWrapper storage ref)" + } + }, + "id": 119596, + "indexExpression": { + "id": 119595, + "name": "lbHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119586, + "src": "15831:6:163", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15827:11:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage", + "typeString": "struct TimestampWrapper storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15797:41:163" + }, + { + "assignments": [ + 119599 + ], + "declarations": [ + { + "constant": false, + "id": 119599, + "mutability": "mutable", + "name": "lastSyncedAt", + "nameLocation": "15852:12:163", + "nodeType": "VariableDeclaration", + "scope": 119624, + "src": "15844:20:163", +>>>>>>> Stashed changes ======= "id": 119593, "mutability": "mutable", @@ -31083,11 +40892,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14920:7:147", +======= + "id": 119598, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15844:7:163", +>>>>>>> Stashed changes ======= "id": 119598, "name": "uint256", @@ -31102,6 +40918,7 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87661, "initialValue": { @@ -31118,6 +40935,23 @@ } }, "id": 87660, +======= + "id": 119602, + "initialValue": { + "expression": { + "id": 119600, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119593, + "src": "15867:2:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" + } + }, + "id": 119601, +>>>>>>> Stashed changes ======= "id": 119602, "initialValue": { @@ -31139,12 +40973,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "14946:9:147", "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 93584, "src": "14943:12:147", +======= + "memberLocation": "15870:9:163", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 125529, + "src": "15867:12:163", +>>>>>>> Stashed changes ======= "memberLocation": "15870:9:163", "memberName": "timestamp", @@ -31158,8 +41000,12 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14920:35:147" +======= + "src": "15844:35:163" +>>>>>>> Stashed changes ======= "src": "15844:35:163" >>>>>>> Stashed changes @@ -31170,8 +41016,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87664, +======= + "id": 119605, +>>>>>>> Stashed changes ======= "id": 119605, >>>>>>> Stashed changes @@ -31180,6 +41030,7 @@ "isPure": false, "lValueRequested": false, "leftExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87662, "name": "lastSyncedAt", @@ -31187,6 +41038,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87658, "src": "14965:12:147", +======= + "id": 119603, + "name": "lastSyncedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119599, + "src": "15889:12:163", +>>>>>>> Stashed changes ======= "id": 119603, "name": "lastSyncedAt", @@ -31204,8 +41063,12 @@ "operator": "==", "rightExpression": { "hexValue": "30", +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87663, +======= + "id": 119604, +>>>>>>> Stashed changes ======= "id": 119604, >>>>>>> Stashed changes @@ -31215,8 +41078,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14981:1:147", +======= + "src": "15905:1:163", +>>>>>>> Stashed changes ======= "src": "15905:1:163", >>>>>>> Stashed changes @@ -31226,8 +41093,12 @@ }, "value": "0" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14965:17:147", +======= + "src": "15889:17:163", +>>>>>>> Stashed changes ======= "src": "15889:17:163", >>>>>>> Stashed changes @@ -31236,6 +41107,7 @@ "typeString": "bool" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87667, "nodeType": "IfStatement", @@ -31244,6 +41116,15 @@ "expression": { "hexValue": "30", "id": 87665, +======= + "id": 119608, + "nodeType": "IfStatement", + "src": "15885:31:163", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 119606, +>>>>>>> Stashed changes ======= "id": 119608, "nodeType": "IfStatement", @@ -31259,8 +41140,12 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14991:1:147", +======= + "src": "15915:1:163", +>>>>>>> Stashed changes ======= "src": "15915:1:163", >>>>>>> Stashed changes @@ -31270,11 +41155,18 @@ }, "value": "0" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "functionReturnParameters": 87649, "id": 87666, "nodeType": "Return", "src": "14984:8:147" +======= + "functionReturnParameters": 119590, + "id": 119607, + "nodeType": "Return", + "src": "15908:8:163" +>>>>>>> Stashed changes ======= "functionReturnParameters": 119590, "id": 119607, @@ -31285,8 +41177,12 @@ }, { "assignments": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 87669 +======= + 119610 +>>>>>>> Stashed changes ======= 119610 >>>>>>> Stashed changes @@ -31294,6 +41190,7 @@ "declarations": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87669, "mutability": "mutable", @@ -31302,6 +41199,15 @@ "nodeType": "VariableDeclaration", "scope": 87683, "src": "14999:22:147", +======= + "id": 119610, + "mutability": "mutable", + "name": "passedDuration", + "nameLocation": "15931:14:163", + "nodeType": "VariableDeclaration", + "scope": 119624, + "src": "15923:22:163", +>>>>>>> Stashed changes ======= "id": 119610, "mutability": "mutable", @@ -31318,11 +41224,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87668, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14999:7:147", +======= + "id": 119609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15923:7:163", +>>>>>>> Stashed changes ======= "id": 119609, "name": "uint256", @@ -31337,8 +41250,12 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87674, +======= + "id": 119615, +>>>>>>> Stashed changes ======= "id": 119615, >>>>>>> Stashed changes @@ -31347,8 +41264,12 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87673, +======= + "id": 119614, +>>>>>>> Stashed changes ======= "id": 119614, >>>>>>> Stashed changes @@ -31358,8 +41279,12 @@ "lValueRequested": false, "leftExpression": { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87670, +======= + "id": 119611, +>>>>>>> Stashed changes ======= "id": 119611, >>>>>>> Stashed changes @@ -31367,8 +41292,12 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "15024:5:147", +======= + "src": "15948:5:163", +>>>>>>> Stashed changes ======= "src": "15948:5:163", >>>>>>> Stashed changes @@ -31377,8 +41306,12 @@ "typeString": "block" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87671, +======= + "id": 119612, +>>>>>>> Stashed changes ======= "id": 119612, >>>>>>> Stashed changes @@ -31386,11 +41319,18 @@ "isLValue": false, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "15030:9:147", "memberName": "timestamp", "nodeType": "MemberAccess", "src": "15024:15:147", +======= + "memberLocation": "15954:9:163", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "15948:15:163", +>>>>>>> Stashed changes ======= "memberLocation": "15954:9:163", "memberName": "timestamp", @@ -31405,6 +41345,7 @@ "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87672, "name": "lastSyncedAt", @@ -31412,6 +41353,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87658, "src": "15042:12:147", +======= + "id": 119613, + "name": "lastSyncedAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119599, + "src": "15966:12:163", +>>>>>>> Stashed changes ======= "id": 119613, "name": "lastSyncedAt", @@ -31425,8 +41374,12 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "15024:30:147", +======= + "src": "15948:30:163", +>>>>>>> Stashed changes ======= "src": "15948:30:163", >>>>>>> Stashed changes @@ -31436,8 +41389,12 @@ } }, "nodeType": "VariableDeclarationStatement", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14999:55:147" +======= + "src": "15923:55:163" +>>>>>>> Stashed changes ======= "src": "15923:55:163" >>>>>>> Stashed changes @@ -31447,6 +41404,7 @@ "arguments": [ { "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87677, "name": "dp", @@ -31460,6 +41418,20 @@ } }, "id": 87678, +======= + "id": 119618, + "name": "dp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119593, + "src": "16020:2:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TimestampWrapper_$125530_storage_ptr", + "typeString": "struct TimestampWrapper storage pointer" + } + }, + "id": 119619, +>>>>>>> Stashed changes ======= "id": 119618, "name": "dp", @@ -31478,12 +41450,20 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "15099:5:147", "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 93582, "src": "15096:8:147", +======= + "memberLocation": "16023:5:163", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 125527, + "src": "16020:8:163", +>>>>>>> Stashed changes ======= "memberLocation": "16023:5:163", "memberName": "value", @@ -31497,6 +41477,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87679, "name": "MAX_PERCENTAGE", @@ -31504,6 +41485,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 86368, "src": "15112:14:147", +======= + "id": 119620, + "name": "MAX_PERCENTAGE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118283, + "src": "16036:14:163", +>>>>>>> Stashed changes ======= "id": 119620, "name": "MAX_PERCENTAGE", @@ -31518,6 +41507,7 @@ } }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87680, "name": "passedDuration", @@ -31525,6 +41515,14 @@ "overloadedDeclarations": [], "referencedDeclaration": 87669, "src": "15133:14:147", +======= + "id": 119621, + "name": "passedDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119610, + "src": "16057:14:163", +>>>>>>> Stashed changes ======= "id": 119621, "name": "passedDuration", @@ -31555,6 +41553,7 @@ } ], "expression": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87675, "name": "_dpDownScaler", @@ -31568,6 +41567,20 @@ } }, "id": 87676, +======= + "id": 119616, + "name": "_dpDownScaler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118324, + "src": "15991:13:163", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PeriodScaler_$125607_storage", + "typeString": "struct PeriodScaler storage ref" + } + }, + "id": 119617, +>>>>>>> Stashed changes ======= "id": 119616, "name": "_dpDownScaler", @@ -31586,6 +41599,7 @@ "isLValue": true, "isPure": false, "lValueRequested": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "memberLocation": "15081:9:147", "memberName": "scaleDown", @@ -31598,6 +41612,19 @@ } }, "id": 87681, +======= + "memberLocation": "16005:9:163", + "memberName": "scaleDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 125697, + "src": "15991:23:163", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PeriodScaler_$125607_memory_ptr_$_t_uint256_$_t_uint64_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_PeriodScaler_$125607_memory_ptr_$", + "typeString": "function (struct PeriodScaler memory,uint256,uint64,uint256) pure returns (uint256)" + } + }, + "id": 119622, +>>>>>>> Stashed changes ======= "memberLocation": "16005:9:163", "memberName": "scaleDown", @@ -31617,10 +41644,16 @@ "kind": "functionCall", "lValueRequested": false, "nameLocations": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream "15093:1:147", "15106:4:147", "15128:3:147" +======= + "16017:1:163", + "16030:4:163", + "16052:3:163" +>>>>>>> Stashed changes ======= "16017:1:163", "16030:4:163", @@ -31633,8 +41666,12 @@ "dur" ], "nodeType": "FunctionCall", +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "15067:83:147", +======= + "src": "15991:83:163", +>>>>>>> Stashed changes ======= "src": "15991:83:163", >>>>>>> Stashed changes @@ -31644,11 +41681,18 @@ "typeString": "uint256" } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "functionReturnParameters": 87649, "id": 87682, "nodeType": "Return", "src": "15060:90:147" +======= + "functionReturnParameters": 119590, + "id": 119623, + "nodeType": "Return", + "src": "15984:90:163" +>>>>>>> Stashed changes ======= "functionReturnParameters": 119590, "id": 119623, @@ -31659,10 +41703,16 @@ ] }, "documentation": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87643, "nodeType": "StructuredDocumentation", "src": "14685:106:147", +======= + "id": 119584, + "nodeType": "StructuredDocumentation", + "src": "15609:106:163", +>>>>>>> Stashed changes ======= "id": 119584, "nodeType": "StructuredDocumentation", @@ -31674,10 +41724,16 @@ "kind": "function", "modifiers": [], "name": "_getDomainPrice", +<<<<<<< Updated upstream <<<<<<< Updated upstream "nameLocation": "14803:15:147", "parameters": { "id": 87646, +======= + "nameLocation": "15727:15:163", + "parameters": { + "id": 119587, +>>>>>>> Stashed changes ======= "nameLocation": "15727:15:163", "parameters": { @@ -31687,6 +41743,7 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87645, "mutability": "mutable", @@ -31695,6 +41752,15 @@ "nodeType": "VariableDeclaration", "scope": 87684, "src": "14819:14:147", +======= + "id": 119586, + "mutability": "mutable", + "name": "lbHash", + "nameLocation": "15751:6:163", + "nodeType": "VariableDeclaration", + "scope": 119625, + "src": "15743:14:163", +>>>>>>> Stashed changes ======= "id": 119586, "mutability": "mutable", @@ -31711,11 +41777,18 @@ "typeString": "bytes32" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87644, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "14819:7:147", +======= + "id": 119585, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "15743:7:163", +>>>>>>> Stashed changes ======= "id": 119585, "name": "bytes32", @@ -31730,11 +41803,18 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14818:16:147" }, "returnParameters": { "id": 87649, +======= + "src": "15742:16:163" + }, + "returnParameters": { + "id": 119590, +>>>>>>> Stashed changes ======= "src": "15742:16:163" }, @@ -31745,8 +41825,12 @@ "parameters": [ { "constant": false, +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87648, +======= + "id": 119589, +>>>>>>> Stashed changes ======= "id": 119589, >>>>>>> Stashed changes @@ -31754,9 +41838,14 @@ "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", +<<<<<<< Updated upstream <<<<<<< Updated upstream "scope": 87684, "src": "14858:7:147", +======= + "scope": 119625, + "src": "15782:7:163", +>>>>>>> Stashed changes ======= "scope": 119625, "src": "15782:7:163", @@ -31768,11 +41857,18 @@ "typeString": "uint256" }, "typeName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 87647, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "14858:7:147", +======= + "id": 119588, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15782:7:163", +>>>>>>> Stashed changes ======= "id": 119588, "name": "uint256", @@ -31787,10 +41883,16 @@ "visibility": "internal" } ], +<<<<<<< Updated upstream <<<<<<< Updated upstream "src": "14857:9:147" }, "scope": 87685, +======= + "src": "15781:9:163" + }, + "scope": 119626, +>>>>>>> Stashed changes ======= "src": "15781:9:163" }, @@ -31805,6 +41907,7 @@ "baseContracts": [ { "baseName": { +<<<<<<< Updated upstream <<<<<<< Updated upstream "id": 86334, "name": "Initializable", @@ -31848,6 +41951,50 @@ "id": 86339, "nodeType": "InheritanceSpecifier", "src": "1045:14:147" +======= + "id": 118249, + "name": "Initializable", + "nameLocations": [ + "1005:13:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 101524, + "src": "1005:13:163" + }, + "id": 118250, + "nodeType": "InheritanceSpecifier", + "src": "1005:13:163" + }, + { + "baseName": { + "id": 118251, + "name": "AccessControlEnumerable", + "nameLocations": [ + "1020:23:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 100251, + "src": "1020:23:163" + }, + "id": 118252, + "nodeType": "InheritanceSpecifier", + "src": "1020:23:163" + }, + { + "baseName": { + "id": 118253, + "name": "INSDomainPrice", + "nameLocations": [ + "1045:14:163" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 123609, + "src": "1045:14:163" + }, + "id": 118254, + "nodeType": "InheritanceSpecifier", + "src": "1045:14:163" +>>>>>>> Stashed changes ======= "id": 118249, "name": "Initializable", @@ -31899,6 +42046,7 @@ "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ +<<<<<<< Updated upstream <<<<<<< Updated upstream 87685, 91664, @@ -31961,6 +42109,32 @@ 126237 ], "usedEvents": [ +======= + 119626, + 123609, + 100251, + 100126, + 103955, + 103967, + 100349, + 100324, + 103592, + 101524 + ], + "name": "RNSDomainPrice", + "nameLocation": "987:14:163", + "scope": 119627, + "usedErrors": [ + 123300, + 123302, + 123304, + 123306, + 125614, + 126229, + 126237 + ], + "usedEvents": [ +>>>>>>> Stashed changes 100263, 100272, 100281, @@ -31973,18 +42147,29 @@ 123377, 123386, 123398 +<<<<<<< Updated upstream +>>>>>>> Stashed changes +======= >>>>>>> Stashed changes ] } ], "license": "MIT" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "blockNumber": 24931477, "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6133f880620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063700213c81161011a578063cff8372f116100ad578063dfef64da1161007c578063dfef64da146104e7578063e229a670146104fa578063f4651f491461050d578063f5b541a61461052e578063fe303ebf1461055557600080fd5b8063cff8372f1461049b578063d40ed58c146104ae578063d547741f146104c1578063dd28776d146104d457600080fd5b80639010d07c116100e95780639010d07c1461044257806391d148541461046d578063a217fddf14610480578063ca15c8731461048857600080fd5b8063700213c8146103df578063713a69a7146103f45780637174026e1461041c5780637e32146a1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf90914610391578063599eaabf146103b15780635c68c830146103c45780635ef32e2c146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046125de565b610568565b60405190151581526020015b60405180910390f35b61023b610236366004612608565b610593565b60405190815260200161021f565b610251610625565b60405161021f9190612621565b61023b61026c366004612608565b6000908152600160208190526040909120015490565b610295610290366004612698565b610702565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d33660046126cd565b61071e565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612741565b610749565b6102956103133660046126cd565b61075e565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f3660046127c6565b6107e1565b60405161021f9190612889565b6102956103bf3660046127c6565b61091a565b61023b6103d23660046128cf565b6109d8565b60375461023b565b61023b6000805160206133a383398151915281565b610407610402366004612a6f565b610a56565b6040805192835260208301919091520161021f565b61023b61042a366004612608565b610a82565b61023b61043d3660046128cf565b610b15565b610455610450366004612aa3565b610b8c565b6040516001600160a01b03909116815260200161021f565b61021361047b3660046126cd565b610bab565b61023b600081565b61023b610496366004612608565b610bd6565b6102956104a9366004612ac5565b610bed565b6102956104bc366004612b48565b610ced565b6102956104cf3660046126cd565b610eb5565b6102956104e2366004612ac5565b610edb565b61023b6104f5366004612a6f565b610fdc565b610295610508366004612c21565b6110c8565b61052061051b366004612c3d565b6110dc565b60405161021f929190612c81565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b610295610563366004612608565b611492565b60006001600160e01b03198216635a05180f60e01b148061058d575061058d826114a6565b92915050565b603554603a5460395460405163052571af60e51b815260009361058d93869360129384936001600160a01b03169263a4ae35e0926105dc92600401918252602082015260400190565b608060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d9190612cbc565b9291906114db565b603854606090806001600160401b0381111561064357610643612940565b60405190808252806020026020018201604052801561068857816020015b60408051808201909152600080825260208201528152602001906001900390816106615790505b5091506000805b828110156106fc57806001019150818482815181106106b0576106b0612d29565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106e6576106e6612d29565b602090810291909101810151015260010161068f565b50505090565b600061070d8161151c565b610718848484611529565b50505050565b6000828152600160208190526040909120015461073a8161151c565b610744838361159b565b505050565b60006107548161151c565b61074483836115bd565b6001600160a01b03811633146107d35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107dd82826116d6565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961080d8161151c565b600061081f8b8b8b8b8b8b8b8b6116f8565b905033816001600160401b0381111561083a5761083a612940565b604051908082528060200260200182016040528015610863578160200160208202803683370190505b50935060005b8281101561090a576108e0828e8e8481811061088757610887612d29565b905060200201358d8d858181106108a0576108a0612d29565b905060200201358c8c868181106108b9576108b9612d29565b905060200201358b8b878181106108d2576108d2612d29565b905060200201356000611746565b8582815181106108f2576108f2612d29565b91151560209283029190910190910152600101610869565b5050505098975050505050505050565b6000805160206133a38339815191526109328161151c565b60006109448a8a8a8a8a8a8a8a6116f8565b90503360005b828110156109ca576109c1828d8d8481811061096857610968612d29565b905060200201358c8c8581811061098157610981612d29565b905060200201358b8b8681811061099a5761099a612d29565b905060200201358a8a878181106109b3576109b3612d29565b905060200201356001611746565b5060010161094a565b505050505050505050505050565b6000603e6000610a1d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f57604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610a70610a6b84805160209091012090565b6117e0565b9150610a7b82610a82565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161058d918491601291829161061d91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0f9190612cbc565b9061185a565b6000603f6000610b5a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f5760405163b34afcf160e01b815260040160405180910390fd5b6000828152600260205260408120610ba490836119b4565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061058d906119c0565b6000805160206133a3833981519152610c058161151c565b83801580610c135750808314155b15610c3157604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610c5057610c50612d29565b9050602002013519925082603f60008b8b85818110610c7157610c71612d29565b9050602002013581526020019081526020016000208190555082898983818110610c9d57610c9d612d29565b90506020020135836001600160a01b03167f5b8d0f05b93072a3e070357b7d9701f1c089233e92359bcbcb2c4b4dd182a15060405160405180910390a4600101610c36565b505050505050505050565b600054610100900460ff1615808015610d0d5750600054600160ff909116105b80610d275750303b158015610d27575060005460ff166001145b610d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107ca565b6000805460ff191660011790558015610dad576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610e1257610e0a828f8f84818110610df057610df0612d29565b9050602002016020810190610e059190612d3f565b6119ca565b600101610dd2565b50603680546001600160a01b0319166001600160a01b038816179055610e3960008f6119ca565b610e438b8b6115bd565b610e4c896119d4565b610e5588611a09565b610e60878686611529565b505080156109ca576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610ed18161151c565b61074483836116d6565b6000805160206133a3833981519152610ef38161151c565b83801580610f015750808314155b15610f1f57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610f3e57610f3e612d29565b9050602002013519925082603e60008b8b85818110610f5f57610f5f612d29565b90506020020135815260200190815260200160002081905550888882818110610f8a57610f8a612d29565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf6621485604051610fcc91815260200190565b60405180910390a3600101610f24565b80516020808301919091206000818152603f9092526040822054801561100457199392505050565b6000828152603e60205260408120549081810361105657603c600061103361102b89611a85565b603854611b73565b8152602001908152602001600020546301e133806110519190612d72565b611065565b61106582196301e13380612d72565b905060006002611074866117e0565b61107e9190612d9f565b6110889083612db3565b9050680ad78ebc5ac62000008111156110a95760015b979650505050505050565b6802b5e3af16b18800008111156110c157600261109e565b600361109e565b60006110d38161151c565b6107dd82611a09565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061110f85611a85565b855160208701209091506000906000818152603e602052604090205490915080156111465761113f811987612d72565b8552611465565b6000603c600061115886603854611b73565b815260200190815260200160002054905080876111759190612d72565b865260006111b47fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888a6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190612dd6565b15611461576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d9190612df1565b90506000611328826001600160a01b03166303e9e609866040518263ffffffff1660e01b81526004016112c291815260200190565b600060405180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113079190810190612e98565b60200151604001516001600160401b03168c6001600160401b038016611b89565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113979190612f9f565b5060408101516060015190915080158015906114255750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611410919061303c565b6001600160401b03166114238285613059565b115b1561144357604051631bb03f9d60e01b815260040160405180910390fd5b61145a6037546114528b6117e0565b612710611bbf565b8b52505050505b5050505b835161147090610a82565b6020850152845161148090610a82565b60208601525092959194509092505050565b600061149d8161151c565b6107dd826119d4565b60006001600160e01b03198216637965db0b60e01b148061058d57506301ffc9a760e01b6001600160e01b031983161461058d565b600061151184611501876000015160070b8860400151866114fc919061306c565b611ca9565b61150c600187611ca9565b611bbf565b90505b949350505050565b6115268133611d03565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161158e91815260200190565b60405180910390a4505050565b6115a58282611d5c565b60008281526002602052604090206107449082611dc7565b60408051808201909152600080825260208201523390603854839060005b82811015611688578686828181106115f5576115f5612d29565b90506040020180360381019061160b9190613093565b935061161b828560000151611ddc565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161167891815260200190565b60405180910390a36001016115db565b5060385481146116ce57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6116e08282611deb565b60008281526002602052604090206107449082611e52565b868015806117065750858114155b806117115750838114155b8061171c5750818114155b1561173a57604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061175286610593565b6000888152603d60205260409020909150838061176f5750805482115b925082156117c957818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611804575060009392505050565b60006118108242613059565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611851919061271084611e67565b95945050505050565b6040805160808101825260008082526020820181905291810182905260608101919091526000611893600185604001516114fc906130c5565b90506001600160ff1b038111156118c9576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107ca565b60006118d960016114fc866130c5565b90506001600160ff1b0381111561190957604051633e87ca5d60e11b8152600385900b60048201526024016107ca565b845160009060070b61191b83856130e8565b6119259190613118565b9050677fffffffffffffff81131561197157604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107ca565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610ba48383611f32565b600061058d825490565b6107dd828261159b565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b611a16828261315b565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc64611a48602084018461319d565b611a5860408501602086016131ba565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b600080600080845190505b80831015611b6b576000858481518110611aac57611aac612d29565b01602001516001600160f81b0319169050600160ff1b811015611ad457600184019350611b5f565b600760fd1b6001600160f81b031982161015611af557600284019350611b5f565b600f60fc1b6001600160f81b031982161015611b1657600384019350611b5f565b601f60fb1b6001600160f81b031982161015611b3757600484019350611b5f565b603f60fa1b6001600160f81b031982161015611b5857600584019350611b5f565b6006840193505b50600190910190611a90565b509392505050565b6000818310611b825781610ba4565b5090919050565b600081841180611b9857508183115b15611ba4575080610ba4565b611bae8484611f5c565b905081811115610ba4575092915050565b6000808060001985870985870292508281108382030391505080600003611bf957838281611bef57611bef612d89565b0492505050610ba4565b808411611c405760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107ca565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808260030b1215611cdb57611cbf826130c5565b611cca90600a6132bb565b611cd49084612d9f565b905061058d565b60008260030b1315611cfc57611cf282600a6132bb565b611cd49084612d72565b508161058d565b611d0d8282610bab565b6107dd57611d1a81611f70565b611d25836020611f82565b604051602001611d369291906132cd565b60408051601f198184030181529082905262461bcd60e51b82526107ca91600401613342565b611d668282610bab565b6107dd5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610ba4836001600160a01b03841661211d565b6000818311611b825781610ba4565b611df58282610bab565b156107dd5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ba4836001600160a01b03841661216c565b60008085602001516001600160401b031683611e839190612d9f565b9050801580611e9a575085516001600160c01b0316155b15611ea85784915050611514565b85516001600160c01b03166001600160401b03851603611ecc576000915050611514565b61ffff811115611ef257604051637359f25f60e01b8152600481018290526024016107ca565b6000611f228760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611bbf565b905061109e86826127108561225f565b6000826000018281548110611f4957611f49612d29565b9060005260206000200154905092915050565b8181018281101561058d575060001961058d565b606061058d6001600160a01b03831660145b60606000611f91836002612d72565b611f9c906002612db3565b6001600160401b03811115611fb357611fb3612940565b6040519080825280601f01601f191660200182016040528015611fdd576020820181803683370190505b509050600360fc1b81600081518110611ff857611ff8612d29565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061202757612027612d29565b60200101906001600160f81b031916908160001a905350600061204b846002612d72565b612056906001612db3565b90505b60018111156120ce576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061208a5761208a612d29565b1a60f81b8282815181106120a0576120a0612d29565b60200101906001600160f81b031916908160001a90535060049490941c936120c781613375565b9050612059565b508315610ba45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ca565b60008181526001830160205260408120546121645750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561058d565b50600061058d565b60008181526001830160205260408120548015612255576000612190600183613059565b85549091506000906121a490600190613059565b90508181146122095760008660000182815481106121c4576121c4612d29565b90600052602060002001549050808760000184815481106121e7576121e7612d29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061221a5761221a61338c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061058d565b600091505061058d565b600082841480612271575061ffff8216155b1561227d575083611514565b5083600080808061229e61ffff87166122958a6123c2565b61ffff16611b73565b90505b61ffff8116156122f4576122bb8561ffff83168a0a612593565b909450925083156122d457829450808603955080820191505b6122ed600261ffff83160461ffff168761ffff16611b73565b90506122a1565b505b61ffff8516156123675761230a8488612593565b90935091508215612329576000199094019390925082906001016122f6565b61ffff81161561234e5785848161234257612342612d89565b049350600019016122f6565b612359848888611bbf565b6000199095019493506122f6565b6000612372876123c2565b90505b61ffff8216156123b65760006123938261ffff168461ffff16611b73565b90508061ffff16880a86816123aa576123aa612d89565b04955090910390612375565b50505050949350505050565b600060038210156123d5575060ff919050565b60048210156123e657506080919050565b60108210156123f757506040919050565b61010082101561240957506020919050565b611bdc82101561241b57506014919050565b612c7082101561242d57506013919050565b614aa982101561243f57506012919050565b61855482101561245157506011919050565b6201000082101561246457506010919050565b620218378210156124775750600f919050565b6204e04682101561248a5750600e919050565b620ced4c82101561249d5750600d919050565b622851468210156124b05750600c919050565b629aa2ad8210156124c35750600b919050565b6303080c018210156124d75750600a919050565b6315c5cbbd8210156124eb57506009919050565b64010000000082101561250057506008919050565b6417c6a1f29f82101561251557506007919050565b6506597fa94f5c82101561252b57506006919050565b66093088c35d733b82101561254257506005919050565b6801000000000000000082101561255b57506004919050565b6a285145f31ae515c447bb5782101561257657506003919050565b600160801b82101561258a57506002919050565b5060015b919050565b600080836000036125aa57506001905060006125d7565b838302838582816125bd576125bd612d89565b04146125d05760008092509250506125d7565b6001925090505b9250929050565b6000602082840312156125f057600080fd5b81356001600160e01b031981168114610ba457600080fd5b60006020828403121561261a57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561266b5761265b84835180518252602090810151910152565b928401929085019060010161263e565b5091979650505050505050565b6001600160a01b038116811461152657600080fd5b803561258e81612678565b6000806000606084860312156126ad57600080fd5b83356126b881612678565b95602085013595506040909401359392505050565b600080604083850312156126e057600080fd5b8235915060208301356126f281612678565b809150509250929050565b60008083601f84011261270f57600080fd5b5081356001600160401b0381111561272657600080fd5b6020830191508360208260061b85010111156125d757600080fd5b6000806020838503121561275457600080fd5b82356001600160401b0381111561276a57600080fd5b612776858286016126fd565b90969095509350505050565b60008083601f84011261279457600080fd5b5081356001600160401b038111156127ab57600080fd5b6020830191508360208260051b85010111156125d757600080fd5b6000806000806000806000806080898b0312156127e257600080fd5b88356001600160401b03808211156127f957600080fd5b6128058c838d01612782565b909a50985060208b013591508082111561281e57600080fd5b61282a8c838d01612782565b909850965060408b013591508082111561284357600080fd5b61284f8c838d01612782565b909650945060608b013591508082111561286857600080fd5b506128758b828c01612782565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156128c35783511515835292840192918401916001016128a5565b50909695505050505050565b600080602083850312156128e257600080fd5b82356001600160401b03808211156128f957600080fd5b818501915085601f83011261290d57600080fd5b81358181111561291c57600080fd5b86602082850101111561292e57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561297857612978612940565b60405290565b604080519081016001600160401b038111828210171561297857612978612940565b604051606081016001600160401b038111828210171561297857612978612940565b604051601f8201601f191681016001600160401b03811182821017156129ea576129ea612940565b604052919050565b60006001600160401b03821115612a0b57612a0b612940565b50601f01601f191660200190565b600082601f830112612a2a57600080fd5b8135612a3d612a38826129f2565b6129c2565b818152846020838601011115612a5257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612a8157600080fd5b81356001600160401b03811115612a9757600080fd5b61151484828501612a19565b60008060408385031215612ab657600080fd5b50508035926020909101359150565b60008060008060408587031215612adb57600080fd5b84356001600160401b0380821115612af257600080fd5b612afe88838901612782565b90965094506020870135915080821115612b1757600080fd5b50612b2487828801612782565b95989497509550505050565b600060408284031215612b4257600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612b6a57600080fd5b612b748c35612678565b8b359a506001600160401b038060208e01351115612b9157600080fd5b612ba18e60208f01358f01612782565b909b50995060408d0135811015612bb757600080fd5b50612bc88d60408e01358e016126fd565b909850965060608c01359550612be18d60808e01612b30565b945060c08c0135612bf181612678565b9350612bff60e08d0161268d565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612c3357600080fd5b610ba48383612b30565b60008060408385031215612c5057600080fd5b82356001600160401b03811115612c6657600080fd5b612c7285828601612a19565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610ba4565b6001600160401b038116811461152657600080fd5b600060808284031215612cce57600080fd5b612cd6612956565b82518060070b8114612ce757600080fd5b81526020830151612cf781612ca7565b60208201526040830151600381900b8114612d1157600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d5157600080fd5b8135610ba481612678565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761058d5761058d612d5c565b634e487b7160e01b600052601260045260246000fd5b600082612dae57612dae612d89565b500490565b8082018082111561058d5761058d612d5c565b8051801515811461258e57600080fd5b600060208284031215612de857600080fd5b610ba482612dc6565b600060208284031215612e0357600080fd5b8151610ba481612678565b60005b83811015612e29578181015183820152602001612e11565b50506000910152565b600060808284031215612e4457600080fd5b612e4c612956565b90508151612e5981612678565b81526020820151612e6981612678565b60208201526040820151612e7c81612ca7565b6040820152612e8d60608301612dc6565b606082015292915050565b60006020808385031215612eab57600080fd5b82516001600160401b0380821115612ec257600080fd5b9084019060a08287031215612ed657600080fd5b612ede61297e565b825182811115612eed57600080fd5b830160608189031215612eff57600080fd5b612f076129a0565b815160ff81168114612f1857600080fd5b81528186015186820152604082015184811115612f3457600080fd5b82019350601f84018913612f4757600080fd5b83519150612f57612a38836129f2565b8281528987848701011115612f6b57600080fd5b612f7a83888301898801612e0e565b6040820152825250612f8e87848601612e32565b848201528094505050505092915050565b60008082840360e0811215612fb357600080fd5b60c0811215612fc157600080fd5b612fc96129a0565b84518152602085015160208201526080603f1983011215612fe957600080fd5b612ff1612956565b9150604085015161300181612678565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b60006020828403121561304e57600080fd5b8151610ba481612ca7565b8181038181111561058d5761058d612d5c565b600381810b9083900b01637fffffff8113637fffffff198212171561058d5761058d612d5c565b6000604082840312156130a557600080fd5b6130ad61297e565b82358152602083013560208201528091505092915050565b60008160030b637fffffff1981036130df576130df612d5c565b60000392915050565b80820260008212600160ff1b8414161561310457613104612d5c565b818105831482151761058d5761058d612d5c565b60008261312757613127612d89565b600160ff1b82146000198414161561314157613141612d5c565b500590565b6001600160c01b038116811461152657600080fd5b813561316681613146565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561319381612ca7565b60c01b1617905550565b6000602082840312156131af57600080fd5b8135610ba481613146565b6000602082840312156131cc57600080fd5b8135610ba481612ca7565b600181815b808511156132125781600019048211156131f8576131f8612d5c565b8085161561320557918102915b93841c93908002906131dc565b509250929050565b6000826132295750600161058d565b816132365750600061058d565b816001811461324c576002811461325657613272565b600191505061058d565b60ff84111561326757613267612d5c565b50506001821b61058d565b5060208310610133831016604e8410600b8410161715613295575081810a61058d565b61329f83836131d7565b80600019048211156132b3576132b3612d5c565b029392505050565b6000610ba463ffffffff84168361321a565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613305816017850160208801612e0e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613336816028840160208801612e0e565b01602801949350505050565b6020815260008251806020840152613361816040850160208701612e0e565b601f01601f19169190910160400192915050565b60008161338457613384612d5c565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada2646970667358221220aa4555fbe062e1770c4b5761698a653314b019545fd8833721e1e457c7ea7bac64736f6c63430008150033", "chainId": 2021, "contractAbsolutePath": "RNSDomainPrice.sol", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063700213c81161011a578063cff8372f116100ad578063dfef64da1161007c578063dfef64da146104e7578063e229a670146104fa578063f4651f491461050d578063f5b541a61461052e578063fe303ebf1461055557600080fd5b8063cff8372f1461049b578063d40ed58c146104ae578063d547741f146104c1578063dd28776d146104d457600080fd5b80639010d07c116100e95780639010d07c1461044257806391d148541461046d578063a217fddf14610480578063ca15c8731461048857600080fd5b8063700213c8146103df578063713a69a7146103f45780637174026e1461041c5780637e32146a1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf90914610391578063599eaabf146103b15780635c68c830146103c45780635ef32e2c146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046125de565b610568565b60405190151581526020015b60405180910390f35b61023b610236366004612608565b610593565b60405190815260200161021f565b610251610625565b60405161021f9190612621565b61023b61026c366004612608565b6000908152600160208190526040909120015490565b610295610290366004612698565b610702565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d33660046126cd565b61071e565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612741565b610749565b6102956103133660046126cd565b61075e565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f3660046127c6565b6107e1565b60405161021f9190612889565b6102956103bf3660046127c6565b61091a565b61023b6103d23660046128cf565b6109d8565b60375461023b565b61023b6000805160206133a383398151915281565b610407610402366004612a6f565b610a56565b6040805192835260208301919091520161021f565b61023b61042a366004612608565b610a82565b61023b61043d3660046128cf565b610b15565b610455610450366004612aa3565b610b8c565b6040516001600160a01b03909116815260200161021f565b61021361047b3660046126cd565b610bab565b61023b600081565b61023b610496366004612608565b610bd6565b6102956104a9366004612ac5565b610bed565b6102956104bc366004612b48565b610ced565b6102956104cf3660046126cd565b610eb5565b6102956104e2366004612ac5565b610edb565b61023b6104f5366004612a6f565b610fdc565b610295610508366004612c21565b6110c8565b61052061051b366004612c3d565b6110dc565b60405161021f929190612c81565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b610295610563366004612608565b611492565b60006001600160e01b03198216635a05180f60e01b148061058d575061058d826114a6565b92915050565b603554603a5460395460405163052571af60e51b815260009361058d93869360129384936001600160a01b03169263a4ae35e0926105dc92600401918252602082015260400190565b608060405180830381865afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d9190612cbc565b9291906114db565b603854606090806001600160401b0381111561064357610643612940565b60405190808252806020026020018201604052801561068857816020015b60408051808201909152600080825260208201528152602001906001900390816106615790505b5091506000805b828110156106fc57806001019150818482815181106106b0576106b0612d29565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106e6576106e6612d29565b602090810291909101810151015260010161068f565b50505090565b600061070d8161151c565b610718848484611529565b50505050565b6000828152600160208190526040909120015461073a8161151c565b610744838361159b565b505050565b60006107548161151c565b61074483836115bd565b6001600160a01b03811633146107d35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107dd82826116d6565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961080d8161151c565b600061081f8b8b8b8b8b8b8b8b6116f8565b905033816001600160401b0381111561083a5761083a612940565b604051908082528060200260200182016040528015610863578160200160208202803683370190505b50935060005b8281101561090a576108e0828e8e8481811061088757610887612d29565b905060200201358d8d858181106108a0576108a0612d29565b905060200201358c8c868181106108b9576108b9612d29565b905060200201358b8b878181106108d2576108d2612d29565b905060200201356000611746565b8582815181106108f2576108f2612d29565b91151560209283029190910190910152600101610869565b5050505098975050505050505050565b6000805160206133a38339815191526109328161151c565b60006109448a8a8a8a8a8a8a8a6116f8565b90503360005b828110156109ca576109c1828d8d8481811061096857610968612d29565b905060200201358c8c8581811061098157610981612d29565b905060200201358b8b8681811061099a5761099a612d29565b905060200201358a8a878181106109b3576109b3612d29565b905060200201356001611746565b5060010161094a565b505050505050505050505050565b6000603e6000610a1d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f57604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610a70610a6b84805160209091012090565b6117e0565b9150610a7b82610a82565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161058d918491601291829161061d91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0f9190612cbc565b9061185a565b6000603f6000610b5a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117d592505050565b815260200190815260200160002054905080600003610a4f5760405163b34afcf160e01b815260040160405180910390fd5b6000828152600260205260408120610ba490836119b4565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061058d906119c0565b6000805160206133a3833981519152610c058161151c565b83801580610c135750808314155b15610c3157604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610c5057610c50612d29565b9050602002013519925082603f60008b8b85818110610c7157610c71612d29565b9050602002013581526020019081526020016000208190555082898983818110610c9d57610c9d612d29565b90506020020135836001600160a01b03167f5b8d0f05b93072a3e070357b7d9701f1c089233e92359bcbcb2c4b4dd182a15060405160405180910390a4600101610c36565b505050505050505050565b600054610100900460ff1615808015610d0d5750600054600160ff909116105b80610d275750303b158015610d27575060005460ff166001145b610d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107ca565b6000805460ff191660011790558015610dad576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610e1257610e0a828f8f84818110610df057610df0612d29565b9050602002016020810190610e059190612d3f565b6119ca565b600101610dd2565b50603680546001600160a01b0319166001600160a01b038816179055610e3960008f6119ca565b610e438b8b6115bd565b610e4c896119d4565b610e5588611a09565b610e60878686611529565b505080156109ca576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610ed18161151c565b61074483836116d6565b6000805160206133a3833981519152610ef38161151c565b83801580610f015750808314155b15610f1f57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610ce257868682818110610f3e57610f3e612d29565b9050602002013519925082603e60008b8b85818110610f5f57610f5f612d29565b90506020020135815260200190815260200160002081905550888882818110610f8a57610f8a612d29565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf6621485604051610fcc91815260200190565b60405180910390a3600101610f24565b80516020808301919091206000818152603f9092526040822054801561100457199392505050565b6000828152603e60205260408120549081810361105657603c600061103361102b89611a85565b603854611b73565b8152602001908152602001600020546301e133806110519190612d72565b611065565b61106582196301e13380612d72565b905060006002611074866117e0565b61107e9190612d9f565b6110889083612db3565b9050680ad78ebc5ac62000008111156110a95760015b979650505050505050565b6802b5e3af16b18800008111156110c157600261109e565b600361109e565b60006110d38161151c565b6107dd82611a09565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061110f85611a85565b855160208701209091506000906000818152603e602052604090205490915080156111465761113f811987612d72565b8552611465565b6000603c600061115886603854611b73565b815260200190815260200160002054905080876111759190612d72565b865260006111b47fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888a6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa158015611200573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112249190612dd6565b15611461576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d9190612df1565b90506000611328826001600160a01b03166303e9e609866040518263ffffffff1660e01b81526004016112c291815260200190565b600060405180830381865afa1580156112df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113079190810190612e98565b60200151604001516001600160401b03168c6001600160401b038016611b89565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113979190612f9f565b5060408101516060015190915080158015906114255750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611410919061303c565b6001600160401b03166114238285613059565b115b1561144357604051631bb03f9d60e01b815260040160405180910390fd5b61145a6037546114528b6117e0565b612710611bbf565b8b52505050505b5050505b835161147090610a82565b6020850152845161148090610a82565b60208601525092959194509092505050565b600061149d8161151c565b6107dd826119d4565b60006001600160e01b03198216637965db0b60e01b148061058d57506301ffc9a760e01b6001600160e01b031983161461058d565b600061151184611501876000015160070b8860400151866114fc919061306c565b611ca9565b61150c600187611ca9565b611bbf565b90505b949350505050565b6115268133611d03565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161158e91815260200190565b60405180910390a4505050565b6115a58282611d5c565b60008281526002602052604090206107449082611dc7565b60408051808201909152600080825260208201523390603854839060005b82811015611688578686828181106115f5576115f5612d29565b90506040020180360381019061160b9190613093565b935061161b828560000151611ddc565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161167891815260200190565b60405180910390a36001016115db565b5060385481146116ce57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6116e08282611deb565b60008281526002602052604090206107449082611e52565b868015806117065750858114155b806117115750838114155b8061171c5750818114155b1561173a57604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061175286610593565b6000888152603d60205260409020909150838061176f5750805482115b925082156117c957818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611804575060009392505050565b60006118108242613059565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611851919061271084611e67565b95945050505050565b6040805160808101825260008082526020820181905291810182905260608101919091526000611893600185604001516114fc906130c5565b90506001600160ff1b038111156118c9576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107ca565b60006118d960016114fc866130c5565b90506001600160ff1b0381111561190957604051633e87ca5d60e11b8152600385900b60048201526024016107ca565b845160009060070b61191b83856130e8565b6119259190613118565b9050677fffffffffffffff81131561197157604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107ca565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610ba48383611f32565b600061058d825490565b6107dd828261159b565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b611a16828261315b565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc64611a48602084018461319d565b611a5860408501602086016131ba565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b600080600080845190505b80831015611b6b576000858481518110611aac57611aac612d29565b01602001516001600160f81b0319169050600160ff1b811015611ad457600184019350611b5f565b600760fd1b6001600160f81b031982161015611af557600284019350611b5f565b600f60fc1b6001600160f81b031982161015611b1657600384019350611b5f565b601f60fb1b6001600160f81b031982161015611b3757600484019350611b5f565b603f60fa1b6001600160f81b031982161015611b5857600584019350611b5f565b6006840193505b50600190910190611a90565b509392505050565b6000818310611b825781610ba4565b5090919050565b600081841180611b9857508183115b15611ba4575080610ba4565b611bae8484611f5c565b905081811115610ba4575092915050565b6000808060001985870985870292508281108382030391505080600003611bf957838281611bef57611bef612d89565b0492505050610ba4565b808411611c405760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107ca565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808260030b1215611cdb57611cbf826130c5565b611cca90600a6132bb565b611cd49084612d9f565b905061058d565b60008260030b1315611cfc57611cf282600a6132bb565b611cd49084612d72565b508161058d565b611d0d8282610bab565b6107dd57611d1a81611f70565b611d25836020611f82565b604051602001611d369291906132cd565b60408051601f198184030181529082905262461bcd60e51b82526107ca91600401613342565b611d668282610bab565b6107dd5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610ba4836001600160a01b03841661211d565b6000818311611b825781610ba4565b611df58282610bab565b156107dd5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ba4836001600160a01b03841661216c565b60008085602001516001600160401b031683611e839190612d9f565b9050801580611e9a575085516001600160c01b0316155b15611ea85784915050611514565b85516001600160c01b03166001600160401b03851603611ecc576000915050611514565b61ffff811115611ef257604051637359f25f60e01b8152600481018290526024016107ca565b6000611f228760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611bbf565b905061109e86826127108561225f565b6000826000018281548110611f4957611f49612d29565b9060005260206000200154905092915050565b8181018281101561058d575060001961058d565b606061058d6001600160a01b03831660145b60606000611f91836002612d72565b611f9c906002612db3565b6001600160401b03811115611fb357611fb3612940565b6040519080825280601f01601f191660200182016040528015611fdd576020820181803683370190505b509050600360fc1b81600081518110611ff857611ff8612d29565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061202757612027612d29565b60200101906001600160f81b031916908160001a905350600061204b846002612d72565b612056906001612db3565b90505b60018111156120ce576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061208a5761208a612d29565b1a60f81b8282815181106120a0576120a0612d29565b60200101906001600160f81b031916908160001a90535060049490941c936120c781613375565b9050612059565b508315610ba45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ca565b60008181526001830160205260408120546121645750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561058d565b50600061058d565b60008181526001830160205260408120548015612255576000612190600183613059565b85549091506000906121a490600190613059565b90508181146122095760008660000182815481106121c4576121c4612d29565b90600052602060002001549050808760000184815481106121e7576121e7612d29565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061221a5761221a61338c565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061058d565b600091505061058d565b600082841480612271575061ffff8216155b1561227d575083611514565b5083600080808061229e61ffff87166122958a6123c2565b61ffff16611b73565b90505b61ffff8116156122f4576122bb8561ffff83168a0a612593565b909450925083156122d457829450808603955080820191505b6122ed600261ffff83160461ffff168761ffff16611b73565b90506122a1565b505b61ffff8516156123675761230a8488612593565b90935091508215612329576000199094019390925082906001016122f6565b61ffff81161561234e5785848161234257612342612d89565b049350600019016122f6565b612359848888611bbf565b6000199095019493506122f6565b6000612372876123c2565b90505b61ffff8216156123b65760006123938261ffff168461ffff16611b73565b90508061ffff16880a86816123aa576123aa612d89565b04955090910390612375565b50505050949350505050565b600060038210156123d5575060ff919050565b60048210156123e657506080919050565b60108210156123f757506040919050565b61010082101561240957506020919050565b611bdc82101561241b57506014919050565b612c7082101561242d57506013919050565b614aa982101561243f57506012919050565b61855482101561245157506011919050565b6201000082101561246457506010919050565b620218378210156124775750600f919050565b6204e04682101561248a5750600e919050565b620ced4c82101561249d5750600d919050565b622851468210156124b05750600c919050565b629aa2ad8210156124c35750600b919050565b6303080c018210156124d75750600a919050565b6315c5cbbd8210156124eb57506009919050565b64010000000082101561250057506008919050565b6417c6a1f29f82101561251557506007919050565b6506597fa94f5c82101561252b57506006919050565b66093088c35d733b82101561254257506005919050565b6801000000000000000082101561255b57506004919050565b6a285145f31ae515c447bb5782101561257657506003919050565b600160801b82101561258a57506002919050565b5060015b919050565b600080836000036125aa57506001905060006125d7565b838302838582816125bd576125bd612d89565b04146125d05760008092509250506125d7565b6001925090505b9250929050565b6000602082840312156125f057600080fd5b81356001600160e01b031981168114610ba457600080fd5b60006020828403121561261a57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561266b5761265b84835180518252602090810151910152565b928401929085019060010161263e565b5091979650505050505050565b6001600160a01b038116811461152657600080fd5b803561258e81612678565b6000806000606084860312156126ad57600080fd5b83356126b881612678565b95602085013595506040909401359392505050565b600080604083850312156126e057600080fd5b8235915060208301356126f281612678565b809150509250929050565b60008083601f84011261270f57600080fd5b5081356001600160401b0381111561272657600080fd5b6020830191508360208260061b85010111156125d757600080fd5b6000806020838503121561275457600080fd5b82356001600160401b0381111561276a57600080fd5b612776858286016126fd565b90969095509350505050565b60008083601f84011261279457600080fd5b5081356001600160401b038111156127ab57600080fd5b6020830191508360208260051b85010111156125d757600080fd5b6000806000806000806000806080898b0312156127e257600080fd5b88356001600160401b03808211156127f957600080fd5b6128058c838d01612782565b909a50985060208b013591508082111561281e57600080fd5b61282a8c838d01612782565b909850965060408b013591508082111561284357600080fd5b61284f8c838d01612782565b909650945060608b013591508082111561286857600080fd5b506128758b828c01612782565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b818110156128c35783511515835292840192918401916001016128a5565b50909695505050505050565b600080602083850312156128e257600080fd5b82356001600160401b03808211156128f957600080fd5b818501915085601f83011261290d57600080fd5b81358181111561291c57600080fd5b86602082850101111561292e57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171561297857612978612940565b60405290565b604080519081016001600160401b038111828210171561297857612978612940565b604051606081016001600160401b038111828210171561297857612978612940565b604051601f8201601f191681016001600160401b03811182821017156129ea576129ea612940565b604052919050565b60006001600160401b03821115612a0b57612a0b612940565b50601f01601f191660200190565b600082601f830112612a2a57600080fd5b8135612a3d612a38826129f2565b6129c2565b818152846020838601011115612a5257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612a8157600080fd5b81356001600160401b03811115612a9757600080fd5b61151484828501612a19565b60008060408385031215612ab657600080fd5b50508035926020909101359150565b60008060008060408587031215612adb57600080fd5b84356001600160401b0380821115612af257600080fd5b612afe88838901612782565b90965094506020870135915080821115612b1757600080fd5b50612b2487828801612782565b95989497509550505050565b600060408284031215612b4257600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612b6a57600080fd5b612b748c35612678565b8b359a506001600160401b038060208e01351115612b9157600080fd5b612ba18e60208f01358f01612782565b909b50995060408d0135811015612bb757600080fd5b50612bc88d60408e01358e016126fd565b909850965060608c01359550612be18d60808e01612b30565b945060c08c0135612bf181612678565b9350612bff60e08d0161268d565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612c3357600080fd5b610ba48383612b30565b60008060408385031215612c5057600080fd5b82356001600160401b03811115612c6657600080fd5b612c7285828601612a19565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610ba4565b6001600160401b038116811461152657600080fd5b600060808284031215612cce57600080fd5b612cd6612956565b82518060070b8114612ce757600080fd5b81526020830151612cf781612ca7565b60208201526040830151600381900b8114612d1157600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d5157600080fd5b8135610ba481612678565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761058d5761058d612d5c565b634e487b7160e01b600052601260045260246000fd5b600082612dae57612dae612d89565b500490565b8082018082111561058d5761058d612d5c565b8051801515811461258e57600080fd5b600060208284031215612de857600080fd5b610ba482612dc6565b600060208284031215612e0357600080fd5b8151610ba481612678565b60005b83811015612e29578181015183820152602001612e11565b50506000910152565b600060808284031215612e4457600080fd5b612e4c612956565b90508151612e5981612678565b81526020820151612e6981612678565b60208201526040820151612e7c81612ca7565b6040820152612e8d60608301612dc6565b606082015292915050565b60006020808385031215612eab57600080fd5b82516001600160401b0380821115612ec257600080fd5b9084019060a08287031215612ed657600080fd5b612ede61297e565b825182811115612eed57600080fd5b830160608189031215612eff57600080fd5b612f076129a0565b815160ff81168114612f1857600080fd5b81528186015186820152604082015184811115612f3457600080fd5b82019350601f84018913612f4757600080fd5b83519150612f57612a38836129f2565b8281528987848701011115612f6b57600080fd5b612f7a83888301898801612e0e565b6040820152825250612f8e87848601612e32565b848201528094505050505092915050565b60008082840360e0811215612fb357600080fd5b60c0811215612fc157600080fd5b612fc96129a0565b84518152602085015160208201526080603f1983011215612fe957600080fd5b612ff1612956565b9150604085015161300181612678565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b60006020828403121561304e57600080fd5b8151610ba481612ca7565b8181038181111561058d5761058d612d5c565b600381810b9083900b01637fffffff8113637fffffff198212171561058d5761058d612d5c565b6000604082840312156130a557600080fd5b6130ad61297e565b82358152602083013560208201528091505092915050565b60008160030b637fffffff1981036130df576130df612d5c565b60000392915050565b80820260008212600160ff1b8414161561310457613104612d5c565b818105831482151761058d5761058d612d5c565b60008261312757613127612d89565b600160ff1b82146000198414161561314157613141612d5c565b500590565b6001600160c01b038116811461152657600080fd5b813561316681613146565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561319381612ca7565b60c01b1617905550565b6000602082840312156131af57600080fd5b8135610ba481613146565b6000602082840312156131cc57600080fd5b8135610ba481612ca7565b600181815b808511156132125781600019048211156131f8576131f8612d5c565b8085161561320557918102915b93841c93908002906131dc565b509250929050565b6000826132295750600161058d565b816132365750600061058d565b816001811461324c576002811461325657613272565b600191505061058d565b60ff84111561326757613267612d5c565b50506001821b61058d565b5060208310610133831016604e8410600b8410161715613295575081810a61058d565b61329f83836131d7565b80600019048211156132b3576132b3612d5c565b029392505050565b6000610ba463ffffffff84168361321a565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613305816017850160208801612e0e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613336816028840160208801612e0e565b01602801949350505050565b6020815260008251806020840152613361816040850160208701612e0e565b601f01601f19169190910160400192915050565b60008161338457613384612d5c565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada2646970667358221220aa4555fbe062e1770c4b5761698a653314b019545fd8833721e1e457c7ea7bac64736f6c63430008150033", +======= + "blockNumber": 25510211, + "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", + "chainId": 2021, + "contractAbsolutePath": "RNSDomainPrice.sol", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", +>>>>>>> Stashed changes ======= "blockNumber": 25510211, "bytecode": "0x60806040526200000e62000014565b620000d5565b600054610100900460ff1615620000815760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000d3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61351380620000e56000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80635ef32e2c1161011a578063ca15c873116100ad578063dfef64da1161007c578063dfef64da146104f4578063e229a67014610507578063f4651f491461051a578063f5b541a61461053b578063fe303ebf1461056257600080fd5b8063ca15c873146104a8578063d40ed58c146104bb578063d547741f146104ce578063dd28776d146104e157600080fd5b80637e32146a116100e95780637e32146a146104425780639010d07c1461046257806391d148541461048d578063a217fddf146104a057600080fd5b80635ef32e2c146103ea578063700213c8146103f2578063713a69a7146104075780637174026e1461042f57600080fd5b806335feb7411161019257806353faf9091161016157806353faf9091461039157806359228107146103b1578063599eaabf146103c45780635c68c830146103d757600080fd5b806335feb741146102f257806336568abe1461030557806339e47da7146103185780634c255c971461037057600080fd5b806328dd3065116101ce57806328dd3065146102825780632be09ecc146102975780632f2ff15d146102c55780632f6ee695146102d857600080fd5b806301ffc9a714610200578063037f1769146102285780630a44f51f14610249578063248a9ca31461025e575b600080fd5b61021361020e3660046126a2565b610575565b60405190151581526020015b60405180910390f35b61023b6102363660046126cc565b6105a0565b60405190815260200161021f565b610251610632565b60405161021f91906126e5565b61023b61026c3660046126cc565b6000908152600160208190526040909120015490565b61029561029036600461275c565b61070f565b005b603554603954603a54604080516001600160a01b03909416845260208401929092529082015260600161021f565b6102956102d3366004612791565b61072b565b6102e0601281565b60405160ff909116815260200161021f565b610295610300366004612805565b610756565b610295610313366004612791565b61076b565b604080518082018252600080825260209182015281518083018352603b546001600160c01b0381168083526001600160401b03600160c01b90920482169284019283528451908152915116918101919091520161021f565b61037961271081565b6040516001600160401b03909116815260200161021f565b6103a461039f36600461288a565b6107ee565b60405161021f919061294d565b6102956103bf366004612993565b610927565b6102956103d236600461288a565b610a91565b61023b6103e53660046129fe565b610b4f565b60375461023b565b61023b6000805160206134be83398151915281565b61041a610415366004612b9e565b610bcd565b6040805192835260208301919091520161021f565b61023b61043d3660046126cc565b610bf9565b6104556104503660046129fe565b610c8c565b60405161021f9190612be8565b610475610470366004612c10565b610d28565b6040516001600160a01b03909116815260200161021f565b61021361049b366004612791565b610d47565b61023b600081565b61023b6104b63660046126cc565b610d72565b6102956104c9366004612c4a565b610d89565b6102956104dc366004612791565b610f51565b6102956104ef366004612993565b610f77565b610455610502366004612b9e565b611078565b610295610515366004612d23565b611130565b61052d610528366004612d3f565b611144565b60405161021f929190612d83565b61023b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6102956105703660046126cc565b6111a1565b60006001600160e01b03198216635a05180f60e01b148061059a575061059a826111b5565b92915050565b603554603a5460395460405163052571af60e51b815260009361059a93869360129384936001600160a01b03169263a4ae35e0926105e992600401918252602082015260400190565b608060405180830381865afa158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190612dbe565b9291906111ea565b603854606090806001600160401b0381111561065057610650612a6f565b60405190808252806020026020018201604052801561069557816020015b604080518082019091526000808252602082015281526020019060019003908161066e5790505b5091506000805b8281101561070957806001019150818482815181106106bd576106bd612e2b565b60200260200101516000018181525050603c6000838152602001908152602001600020548482815181106106f3576106f3612e2b565b602090810291909101810151015260010161069c565b50505090565b600061071a81611229565b610725848484611236565b50505050565b6000828152600160208190526040909120015461074781611229565b61075183836112a8565b505050565b600061076181611229565b61075183836112ca565b6001600160a01b03811633146107e05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107ea82826113e3565b5050565b60607f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961081a81611229565b600061082c8b8b8b8b8b8b8b8b611405565b905033816001600160401b0381111561084757610847612a6f565b604051908082528060200260200182016040528015610870578160200160208202803683370190505b50935060005b82811015610917576108ed828e8e8481811061089457610894612e2b565b905060200201358d8d858181106108ad576108ad612e2b565b905060200201358c8c868181106108c6576108c6612e2b565b905060200201358b8b878181106108df576108df612e2b565b905060200201356000611453565b8582815181106108ff576108ff612e2b565b91151560209283029190910190910152600101610876565b5050505098975050505050505050565b6000805160206134be83398151915261093f81611229565b8380158061094d5750808314155b1561096b57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a865786868281811061098a5761098a612e2b565b905060200201602081019061099f9190612e41565b60038111156109b0576109b0612bd2565b19925082603f60008b8b858181106109ca576109ca612e2b565b90506020020135815260200190815260200160002060006101000a81548160ff021916908360ff160217905550868682818110610a0957610a09612e2b565b9050602002016020810190610a1e9190612e41565b6003811115610a2f57610a2f612bd2565b898983818110610a4157610a41612e2b565b90506020020135836001600160a01b03167f3f340e5d69d5f452290191bb7d417287ccd8896c4e4852a95c3702a834993ab160405160405180910390a4600101610970565b505050505050505050565b6000805160206134be833981519152610aa981611229565b6000610abb8a8a8a8a8a8a8a8a611405565b90503360005b82811015610b4157610b38828d8d84818110610adf57610adf612e2b565b905060200201358c8c85818110610af857610af8612e2b565b905060200201358b8b86818110610b1157610b11612e2b565b905060200201358a8a87818110610b2a57610b2a612e2b565b905060200201356001611453565b50600101610ac1565b505050505050505050505050565b6000603e6000610b9485858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b815260200190815260200160002054905080600003610bc657604051635421761560e11b815260040160405180910390fd5b1992915050565b600080610be7610be284805160209091012090565b6114ed565b9150610bf282610bf9565b9050915091565b603554603a5460395460405163052571af60e51b81526004810192909252602482015260009161059a918491601291829161062a91601119916001600160a01b03169063a4ae35e090604401608060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612dbe565b9061155e565b600080603f6000610cd286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e292505050565b8152602081019190915260400160009081205460ff169150819003610d0a5760405163b34afcf160e01b815260040160405180910390fd5b801960ff166003811115610d2057610d20612bd2565b949350505050565b6000828152600260205260408120610d4090836116b8565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260026020526040812061059a906116c4565b600054610100900460ff1615808015610da95750600054600160ff909116105b80610dc35750303b158015610dc3575060005460ff166001145b610e265760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d7565b6000805460ff191660011790558015610e49576000805461ff0019166101001790555b897f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960005b82811015610eae57610ea6828f8f84818110610e8c57610e8c612e2b565b9050602002016020810190610ea19190612e62565b6116ce565b600101610e6e565b50603680546001600160a01b0319166001600160a01b038816179055610ed560008f6116ce565b610edf8b8b6112ca565b610ee8896116d8565b610ef18861170d565b610efc878686611236565b50508015610b41576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050505050565b60008281526001602081905260409091200154610f6d81611229565b61075183836113e3565b6000805160206134be833981519152610f8f81611229565b83801580610f9d5750808314155b15610fbb57604051634ec4810560e11b815260040160405180910390fd5b600033815b83811015610a8657868682818110610fda57610fda612e2b565b9050602002013519925082603e60008b8b85818110610ffb57610ffb612e2b565b9050602002013581526020019081526020016000208190555088888281811061102657611026612e2b565b90506020020135826001600160a01b03167fb52d278cb3ef3b003bdfb385ce2eb23a83eb6d713724abfba1acaa16ccf662148560405161106891815260200190565b60405180910390a3600101610fc0565b80516020808301919091206000818152603f909252604082205460ff1680156110b157801960ff166003811115610d2057610d20612bd2565b60006110c1856301e13380611789565b50509050600060026110d2856114ed565b6110dc9190612eab565b82516110e89190612ebf565b9050680ad78ebc5ac62000008111156111075750600195945050505050565b6802b5e3af16b18800008111156111245750600295945050505050565b50600395945050505050565b600061113b81611229565b6107ea8261170d565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260006111788585611789565b919450925090506001600160e01b0319811615611199578060005260046000fd5b509250929050565b60006111ac81611229565b6107ea826116d8565b60006001600160e01b03198216637965db0b60e01b148061059a57506301ffc9a760e01b6001600160e01b031983161461059a565b600061122084611210876000015160070b88604001518661120b9190612ed2565b611b3f565b61121b600187611b3f565b611b99565b95945050505050565b6112338133611c82565b50565b603580546001600160a01b0319166001600160a01b0385169081179091556039839055603a8290558190336001600160a01b03167f671083457675651266070f50f1438ef8190b7da64d38f16f5117246236b7dd5b8560405161129b91815260200190565b60405180910390a4505050565b6112b28282611cdb565b60008281526002602052604090206107519082611d46565b60408051808201909152600080825260208201523390603854839060005b828110156113955786868281811061130257611302612e2b565b9050604002018036038101906113189190612ef9565b9350611328828560000151611d5b565b6020808601805187516000908152603c90935260409283902055865190519151929450916001600160a01b038816917f85211e946be6d537cd1b22a183d04151d4e5d0818e1ce75d2e5ebaecba0a5a779161138591815260200190565b60405180910390a36001016112e8565b5060385481146113db57603881905560405181906001600160a01b038616907f7e7c3a4273ac1af351af63a82e91a8335bcb389ba681375a32dbe4455d0d474b90600090a35b505050505050565b6113ed8282611d71565b60008281526002602052604090206107519082611dd8565b868015806114135750858114155b8061141e5750838114155b806114295750818114155b1561144757604051634ec4810560e11b815260040160405180910390fd5b98975050505050505050565b60008061145f866105a0565b6000888152603d60205260409020909150838061147c5750805482115b925082156114d657818155426001820155604080518381526020810187905287918a916001600160a01b038d16917f60d5fd6d2284807447aae62f93c05517a647b8e8479c3af2c27ee1d1c85b540f910160405180910390a45b50509695505050505050565b805160209091012090565b6000818152603d602052604081206001810154808303611511575060009392505050565b600061151d8242612f2b565b835460408051808201909152603b546001600160c01b0381168252600160c01b90046001600160401b03166020820152919250611220919061271084611ded565b60408051608081018252600080825260208201819052918101829052606081019190915260006115976001856040015161120b90612f3e565b90506001600160ff1b038111156115cd576040808501519051633e87ca5d60e11b815260039190910b60048201526024016107d7565b60006115dd600161120b86612f3e565b90506001600160ff1b0381111561160d57604051633e87ca5d60e11b8152600385900b60048201526024016107d7565b845160009060070b61161f8385612f61565b6116299190612f91565b9050677fffffffffffffff81131561167557604086810151875191516329b2fb5560e11b8152600391820b60048201529087900b602482015260079190910b60448201526064016107d7565b60405180608001604052808260070b815260200187602001516001600160401b031681526020018660030b81526020018760600151815250935050505092915050565b6000610d408383611ec3565b600061059a825490565b6107ea82826112a8565b6037819055604051819033907f1e97e29c863545fad1ce79512b4deb3f0b7d30c3356bc7bbbd6588c9e68cf07390600090a350565b80603b61171a8282612fd4565b503390507fa7f38b74141f9a2ac1b02640ded2b98431ef77f8cf2e3ade85c71d6c8420dc6461174c6020840184613016565b61175c6040850160208601613033565b604080516001600160c01b0390931683526001600160401b0390911660208301520160405180910390a250565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000806117bd86611eed565b865160208801209091506000906000818152603e602052604090205490915080156117f4576117ed811988613050565b8652611b14565b6000603c600061180686603854611fdb565b815260200190815260200160002054905080886118239190613050565b875260006118627fba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d6888b6000918252805160209182012090526040902090565b6036546040516329fc8caf60e11b8152600481018390529192506001600160a01b03169081906353f9195e90602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190613077565b15611b10576000816001600160a01b0316638c8433146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190613092565b905060006119d6826001600160a01b03166303e9e609866040518263ffffffff1660e01b815260040161197091815260200190565b600060405180830381865afa15801561198d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119b59190810190613139565b60200151604001516001600160401b03168d6001600160401b038016611fea565b6040516378bd793560e01b8152600481018690529091506000906001600160a01b038516906378bd79359060240160e060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613240565b506040810151606001519091508015801590611ad35750846001600160a01b0316630afe1bb36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe91906132dd565b6001600160401b0316611ad18285612f2b565b115b15611af25750631bb03f9d60e01b9950611b3898505050505050505050565b611b09603754611b018b6114ed565b612710611b99565b8c52505050505b5050505b8451611b1f90610bf9565b60208601528551611b2f90610bf9565b60208701525050505b9250925092565b6000808260030b1215611b7157611b5582612f3e565b611b6090600a6133d6565b611b6a9084612eab565b905061059a565b60008260030b1315611b9257611b8882600a6133d6565b611b6a9084613050565b508161059a565b6000808060001985870985870292508281108382030391505080600003611bd357838281611bc957611bc9612e7f565b0492505050610d40565b808411611c1a5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016107d7565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b611c8c8282610d47565b6107ea57611c9981612020565b611ca4836020612032565b604051602001611cb59291906133e8565b60408051601f198184030181529082905262461bcd60e51b82526107d79160040161345d565b611ce58282610d47565b6107ea5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610d40836001600160a01b0384166121cd565b6000818311611d6a5781610d40565b5090919050565b611d7b8282610d47565b156107ea5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d40836001600160a01b03841661221c565b60008085602001516001600160401b031683611e099190612eab565b9050801580611e20575085516001600160c01b0316155b15611e2e5784915050610d20565b85516001600160c01b03166001600160401b03851603611e52576000915050610d20565b61ffff811115611e7857604051637359f25f60e01b8152600481018290526024016107d7565b6000611ea88760000151866001600160401b0316036001600160c01b0316612710876001600160401b0316611b99565b9050611eb886826127108561230f565b979650505050505050565b6000826000018281548110611eda57611eda612e2b565b9060005260206000200154905092915050565b600080600080845190505b80831015611fd3576000858481518110611f1457611f14612e2b565b01602001516001600160f81b0319169050600160ff1b811015611f3c57600184019350611fc7565b600760fd1b6001600160f81b031982161015611f5d57600284019350611fc7565b600f60fc1b6001600160f81b031982161015611f7e57600384019350611fc7565b601f60fb1b6001600160f81b031982161015611f9f57600484019350611fc7565b603f60fa1b6001600160f81b031982161015611fc057600584019350611fc7565b6006840193505b50600190910190611ef8565b509392505050565b6000818310611d6a5781610d40565b600081841180611ff957508183115b15612005575080610d40565b61200f8484612472565b905081811115610d40575080610d40565b606061059a6001600160a01b03831660145b60606000612041836002613050565b61204c906002612ebf565b6001600160401b0381111561206357612063612a6f565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b509050600360fc1b816000815181106120a8576120a8612e2b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106120d7576120d7612e2b565b60200101906001600160f81b031916908160001a90535060006120fb846002613050565b612106906001612ebf565b90505b600181111561217e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061213a5761213a612e2b565b1a60f81b82828151811061215057612150612e2b565b60200101906001600160f81b031916908160001a90535060049490941c9361217781613490565b9050612109565b508315610d405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d7565b60008181526001830160205260408120546122145750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561059a565b50600061059a565b60008181526001830160205260408120548015612305576000612240600183612f2b565b855490915060009061225490600190612f2b565b90508181146122b957600086600001828154811061227457612274612e2b565b906000526020600020015490508087600001848154811061229757612297612e2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806122ca576122ca6134a7565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061059a565b600091505061059a565b600082841480612321575061ffff8216155b1561232d575083610d20565b5083600080808061234e61ffff87166123458a612486565b61ffff16611fdb565b90505b61ffff8116156123a45761236b8561ffff83168a0a612657565b9094509250831561238457829450808603955080820191505b61239d600261ffff83160461ffff168761ffff16611fdb565b9050612351565b505b61ffff851615612417576123ba8488612657565b909350915082156123d9576000199094019390925082906001016123a6565b61ffff8116156123fe578584816123f2576123f2612e7f565b049350600019016123a6565b612409848888611b99565b6000199095019493506123a6565b600061242287612486565b90505b61ffff8216156124665760006124438261ffff168461ffff16611fdb565b90508061ffff16880a868161245a5761245a612e7f565b04955090910390612425565b50505050949350505050565b8181018281101561059a575060001961059a565b60006003821015612499575060ff919050565b60048210156124aa57506080919050565b60108210156124bb57506040919050565b6101008210156124cd57506020919050565b611bdc8210156124df57506014919050565b612c708210156124f157506013919050565b614aa982101561250357506012919050565b61855482101561251557506011919050565b6201000082101561252857506010919050565b6202183782101561253b5750600f919050565b6204e04682101561254e5750600e919050565b620ced4c8210156125615750600d919050565b622851468210156125745750600c919050565b629aa2ad8210156125875750600b919050565b6303080c0182101561259b5750600a919050565b6315c5cbbd8210156125af57506009919050565b6401000000008210156125c457506008919050565b6417c6a1f29f8210156125d957506007919050565b6506597fa94f5c8210156125ef57506006919050565b66093088c35d733b82101561260657506005919050565b6801000000000000000082101561261f57506004919050565b6a285145f31ae515c447bb5782101561263a57506003919050565b600160801b82101561264e57506002919050565b5060015b919050565b6000808360000361266e575060019050600061269b565b8383028385828161268157612681612e7f565b041461269457600080925092505061269b565b6001925090505b9250929050565b6000602082840312156126b457600080fd5b81356001600160e01b031981168114610d4057600080fd5b6000602082840312156126de57600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561272f5761271f84835180518252602090810151910152565b9284019290850190600101612702565b5091979650505050505050565b6001600160a01b038116811461123357600080fd5b80356126528161273c565b60008060006060848603121561277157600080fd5b833561277c8161273c565b95602085013595506040909401359392505050565b600080604083850312156127a457600080fd5b8235915060208301356127b68161273c565b809150509250929050565b60008083601f8401126127d357600080fd5b5081356001600160401b038111156127ea57600080fd5b6020830191508360208260061b850101111561269b57600080fd5b6000806020838503121561281857600080fd5b82356001600160401b0381111561282e57600080fd5b61283a858286016127c1565b90969095509350505050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b6020830191508360208260051b850101111561269b57600080fd5b6000806000806000806000806080898b0312156128a657600080fd5b88356001600160401b03808211156128bd57600080fd5b6128c98c838d01612846565b909a50985060208b01359150808211156128e257600080fd5b6128ee8c838d01612846565b909850965060408b013591508082111561290757600080fd5b6129138c838d01612846565b909650945060608b013591508082111561292c57600080fd5b506129398b828c01612846565b999c989b5096995094979396929594505050565b6020808252825182820181905260009190848201906040850190845b81811015612987578351151583529284019291840191600101612969565b50909695505050505050565b600080600080604085870312156129a957600080fd5b84356001600160401b03808211156129c057600080fd5b6129cc88838901612846565b909650945060208701359150808211156129e557600080fd5b506129f287828801612846565b95989497509550505050565b60008060208385031215612a1157600080fd5b82356001600160401b0380821115612a2857600080fd5b818501915085601f830112612a3c57600080fd5b813581811115612a4b57600080fd5b866020828501011115612a5d57600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612aa757612aa7612a6f565b60405290565b604080519081016001600160401b0381118282101715612aa757612aa7612a6f565b604051606081016001600160401b0381118282101715612aa757612aa7612a6f565b604051601f8201601f191681016001600160401b0381118282101715612b1957612b19612a6f565b604052919050565b60006001600160401b03821115612b3a57612b3a612a6f565b50601f01601f191660200190565b600082601f830112612b5957600080fd5b8135612b6c612b6782612b21565b612af1565b818152846020838601011115612b8157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612bb057600080fd5b81356001600160401b03811115612bc657600080fd5b610d2084828501612b48565b634e487b7160e01b600052602160045260246000fd5b6020810160048310612c0a57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215612c2357600080fd5b50508035926020909101359150565b600060408284031215612c4457600080fd5b50919050565b60008060008060008060008060008060006101408c8e031215612c6c57600080fd5b612c768c3561273c565b8b359a506001600160401b038060208e01351115612c9357600080fd5b612ca38e60208f01358f01612846565b909b50995060408d0135811015612cb957600080fd5b50612cca8d60408e01358e016127c1565b909850965060608c01359550612ce38d60808e01612c32565b945060c08c0135612cf38161273c565b9350612d0160e08d01612751565b92506101008c013591506101208c013590509295989b509295989b9093969950565b600060408284031215612d3557600080fd5b610d408383612c32565b60008060408385031215612d5257600080fd5b82356001600160401b03811115612d6857600080fd5b612d7485828601612b48565b95602094909401359450505050565b825181526020808401518183015282516040830152820151606082015260808101610d40565b6001600160401b038116811461123357600080fd5b600060808284031215612dd057600080fd5b612dd8612a85565b82518060070b8114612de957600080fd5b81526020830151612df981612da9565b60208201526040830151600381900b8114612e1357600080fd5b60408201526060928301519281019290925250919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612e5357600080fd5b813560048110610d4057600080fd5b600060208284031215612e7457600080fd5b8135610d408161273c565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082612eba57612eba612e7f565b500490565b8082018082111561059a5761059a612e95565b600381810b9083900b01637fffffff8113637fffffff198212171561059a5761059a612e95565b600060408284031215612f0b57600080fd5b612f13612aad565b82358152602083013560208201528091505092915050565b8181038181111561059a5761059a612e95565b60008160030b637fffffff198103612f5857612f58612e95565b60000392915050565b80820260008212600160ff1b84141615612f7d57612f7d612e95565b818105831482151761059a5761059a612e95565b600082612fa057612fa0612e7f565b600160ff1b821460001984141615612fba57612fba612e95565b500590565b6001600160c01b038116811461123357600080fd5b8135612fdf81612fbf565b81546001600160c01b03199081166001600160c01b03929092169182178355602084013561300c81612da9565b60c01b1617905550565b60006020828403121561302857600080fd5b8135610d4081612fbf565b60006020828403121561304557600080fd5b8135610d4081612da9565b808202811582820484141761059a5761059a612e95565b8051801515811461265257600080fd5b60006020828403121561308957600080fd5b610d4082613067565b6000602082840312156130a457600080fd5b8151610d408161273c565b60005b838110156130ca5781810151838201526020016130b2565b50506000910152565b6000608082840312156130e557600080fd5b6130ed612a85565b905081516130fa8161273c565b8152602082015161310a8161273c565b6020820152604082015161311d81612da9565b604082015261312e60608301613067565b606082015292915050565b6000602080838503121561314c57600080fd5b82516001600160401b038082111561316357600080fd5b9084019060a0828703121561317757600080fd5b61317f612aad565b82518281111561318e57600080fd5b8301606081890312156131a057600080fd5b6131a8612acf565b815160ff811681146131b957600080fd5b815281860151868201526040820151848111156131d557600080fd5b82019350601f840189136131e857600080fd5b835191506131f8612b6783612b21565b828152898784870101111561320c57600080fd5b61321b838883018988016130af565b604082015282525061322f878486016130d3565b848201528094505050505092915050565b60008082840360e081121561325457600080fd5b60c081121561326257600080fd5b61326a612acf565b84518152602085015160208201526080603f198301121561328a57600080fd5b613292612a85565b915060408501516132a28161273c565b80835250606085015160208301526080850151604083015260a08501516060830152816040820152809350505060c083015190509250929050565b6000602082840312156132ef57600080fd5b8151610d4081612da9565b600181815b8085111561119957816000190482111561331b5761331b612e95565b8085161561332857918102915b93841c93908002906132ff565b6000826133445750600161059a565b816133515750600061059a565b816001811461336757600281146133715761338d565b600191505061059a565b60ff84111561338257613382612e95565b50506001821b61059a565b5060208310610133831016604e8410600b84101617156133b0575081810a61059a565b6133ba83836132fa565b80600019048211156133ce576133ce612e95565b029392505050565b6000610d4063ffffffff841683613335565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516134208160178501602088016130af565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516134518160288401602088016130af565b01602801949350505050565b602081526000825180602084015261347c8160408501602087016130af565b601f01601f19169190910160400192915050565b60008161349f5761349f612e95565b506000190190565b634e487b7160e01b600052603160045260246000fdfe033a42b04fa8bdb42a28dc41fe890f4b8409d5af5d3ed16a96b5fb479b0d3fada264697066735822122074c77ffc438b3afa10feb9b23f689571e934dfbe3e548fb04b0995f86a5c7d8064736f6c63430008150033", @@ -32004,8 +42189,12 @@ "usdPrices": "Array of prices in USD. Leave 2^256 - 1 to remove overriding." } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "bulkOverrideTiers(bytes32[],uint256[])": { +======= + "bulkOverrideTiers(bytes32[],uint8[])": { +>>>>>>> Stashed changes ======= "bulkOverrideTiers(bytes32[],uint8[])": { >>>>>>> Stashed changes @@ -32150,8 +42339,12 @@ "TaxRatioUpdated(address,uint256)": { "details": "Emitted when the renewal reservation ratio is updated." }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "TierOverridingUpdated(address,bytes32,uint256)": { +======= + "TierOverridingUpdated(address,bytes32,uint8)": { +>>>>>>> Stashed changes ======= "TierOverridingUpdated(address,bytes32,uint8)": { >>>>>>> Stashed changes @@ -32160,9 +42353,14 @@ } }, "isFoundry": true, +<<<<<<< Updated upstream <<<<<<< Updated upstream "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tiers\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint256[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1\"},\"TIER_2_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1\\n uint256 private constant TIER_1_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2\\n uint256 private constant TIER_2_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint256 tier) _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (uint256 tier) {\\n tier = _tierOverriding[label.hashLabel()];\\n if (tier == 0) revert TierIsNotOverriden();\\n return ~tier;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, uint256[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~tiers[i];\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (uint256 tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return ~overriddenTier;\\n\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n uint256 yearlyRenewalFeeByLength = overriddenRenewalFee != 0\\n ? 365 days * ~overriddenRenewalFee\\n : 365 days * _rnFee[Math.min(label.strlen(), _rnfMaxLength)];\\n uint256 tierValue = yearlyRenewalFeeByLength + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_THRESHOLD) {\\n return uint256(Tier.Tier1);\\n } else if (tierValue > TIER_2_THRESHOLD) {\\n return uint256(Tier.Tier2);\\n } else {\\n return uint256(Tier.Tier3);\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n revert ExceedAuctionDomainExpiry();\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0xba0a37161cd0cf02d08e62eba722c25c748834ca08e0231fbc6c47a97098d6b5\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (uint256 tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (uint256 tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, uint256[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x7bb3e2ecc33f60ade262ad20fc621474ca1c5bcd247b980caa564be256afb59d\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", "nonce": 190743, +======= + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"enum INSDomainPrice.Tier[]\",\"name\":\"tiers\",\"type\":\"uint8[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint8)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint8[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1: > $200\"},\"TIER_2_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1: > $200\\n uint256 private constant TIER_1_FROM_EXCLUDED_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\\n uint256 private constant TIER_2_FROM_EXCLUDED_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint8 tier) internal _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (Tier tier) {\\n uint8 tierValue = _tierOverriding[label.hashLabel()];\\n if (tierValue == 0) revert TierIsNotOverriden();\\n return Tier(~tierValue);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint8 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~uint8(tiers[i]);\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], tiers[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (Tier tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint8 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return Tier(~overriddenTier);\\n\\n (UnitPrice memory yearlyRenewalFeeByLength,,) = _tryGetRenewalFee({ label: label, duration: 365 days });\\n uint256 tierValue = yearlyRenewalFeeByLength.usd + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier1;\\n } else if (tierValue > TIER_2_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier2;\\n } else {\\n return Tier.Tier3;\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n bytes4 revertReason;\\n (basePrice, tax, revertReason) = _tryGetRenewalFee(label, duration);\\n if (revertReason != bytes4(0x0)) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, revertReason)\\n revert(0x0, 0x04)\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Tries to get the renewal fee for a given domain label and duration.\\n * It returns the base price, tax, and a revert reason if applicable.\\n * @param label The domain label.\\n * @param duration The duration for which the domain is being renewed.\\n * @return basePrice The base price in USD for \\u02ddrenewing the domain.\\n * @return tax The tax amount in USD for renewing the domain.\\n * @return revertReason The revert reason if the renewal fee exceeds the auction domain expiry.\\n */\\n function _tryGetRenewalFee(string memory label, uint256 duration)\\n internal\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax, bytes4 revertReason)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n return (basePrice, tax, ExceedAuctionDomainExpiry.selector);\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0x0edacadce2173877441244247275ea91591f0b165874ff4a384583894f346827\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, Tier indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (Tier tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (Tier tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x8788fdbb62a27ad604ade2ca281a1b76001b929245d4ef9117544636ac8ec545\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 192559, +>>>>>>> Stashed changes ======= "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo1\",\"type\":\"int32\"},{\"internalType\":\"int32\",\"name\":\"expo2\",\"type\":\"int32\"},{\"internalType\":\"int64\",\"name\":\"price1\",\"type\":\"int64\"}],\"name\":\"ErrComputedPriceTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"expo\",\"type\":\"int32\"}],\"name\":\"ErrExponentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedAuctionDomainExpiry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"PeriodNumOverflowedUint16\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RenewalFeeIsNotOverriden\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TierIsNotOverriden\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"DomainPriceScaleRuleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proofHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"setType\",\"type\":\"uint256\"}],\"name\":\"DomainPriceUpdated\",\"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\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxLength\",\"type\":\"uint256\"}],\"name\":\"MaxRenewalFeeLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"PythOracleConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"renewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeByLengthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inverseRenewalFee\",\"type\":\"uint256\"}],\"name\":\"RenewalFeeOverridingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"TaxRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"labelHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"name\":\"TierOverridingUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PERCENTAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OVERRIDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD_DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"usdPrices\",\"type\":\"uint256[]\"}],\"name\":\"bulkOverrideRenewalFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"enum INSDomainPrice.Tier[]\",\"name\":\"tiers\",\"type\":\"uint8[]\"}],\"name\":\"bulkOverrideTiers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkSetDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"lbHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ronPrices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"setTypes\",\"type\":\"uint256[]\"}],\"name\":\"bulkTrySetDomainPrice\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"updated\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"name\":\"convertRONToUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"usdWei\",\"type\":\"uint256\"}],\"name\":\"convertUSDToRON\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ronWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getDomainPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ronPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenRenewalFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"usdFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getOverriddenTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPythOracleConfig\",\"outputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"getRenewalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"basePrice\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"usd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ron\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.UnitPrice\",\"name\":\"tax\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRenewalFeeByLengths\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScaleDownRuleForDomainPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTaxRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"}],\"name\":\"getTier\",\"outputs\":[{\"internalType\":\"enum INSDomainPrice.Tier\",\"name\":\"tier\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"taxRatio\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"domainPriceScaleRule\",\"type\":\"tuple\"},{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"contract INSAuction\",\"name\":\"auction\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPyth\",\"name\":\"pyth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxAcceptableAge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"pythIdForRONUSD\",\"type\":\"bytes32\"}],\"name\":\"setPythOracleConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"labelLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct INSDomainPrice.RenewalFee[]\",\"name\":\"renewalFees\",\"type\":\"tuple[]\"}],\"name\":\"setRenewalFeeByLengths\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint192\",\"name\":\"ratio\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"internalType\":\"struct PeriodScaler\",\"name\":\"scaleRule\",\"type\":\"tuple\"}],\"name\":\"setScaleDownRuleForDomainPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"}],\"name\":\"setTaxRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"DomainPriceScaleRuleUpdated(address,uint192,uint64)\":{\"details\":\"Emitted when the rule to rescale domain price is updated.\"},\"DomainPriceUpdated(address,bytes32,uint256,bytes32,uint256)\":{\"details\":\"Emitted when the domain price is updated.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MaxRenewalFeeLengthUpdated(address,uint256)\":{\"details\":\"Emitted when the maximum length of renewal fee is updated.\"},\"PythOracleConfigUpdated(address,address,uint256,bytes32)\":{\"details\":\"Emitted when the Pyth Oracle config is updated.\"},\"RenewalFeeByLengthUpdated(address,uint256,uint256)\":{\"details\":\"Emitted when the renew fee is updated.\"},\"RenewalFeeOverridingUpdated(address,bytes32,uint256)\":{\"details\":\"Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TaxRatioUpdated(address,uint256)\":{\"details\":\"Emitted when the renewal reservation ratio is updated.\"},\"TierOverridingUpdated(address,bytes32,uint8)\":{\"details\":\"Emitted when the tier of a domain is overridden.\"}},\"kind\":\"dev\",\"methods\":{\"bulkOverrideRenewalFees(bytes32[],uint256[])\":{\"details\":\"Bulk override renewal fees. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {RenewalFeeOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"usdPrices\":\"Array of prices in USD. Leave 2^256 - 1 to remove overriding.\"}},\"bulkOverrideTiers(bytes32[],uint8[])\":{\"details\":\"Bulk override tiers. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {TierOverridingUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"tiers\":\"Array of tiers. Leave 2^256 - 1 to remove overriding.\"}},\"bulkSetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk override domain prices. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. Emits events {DomainPriceUpdated}.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"bulkTrySetDomainPrice(bytes32[],uint256[],bytes32[],uint256[])\":{\"details\":\"Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding indexes if set or not. Requirements: - The method caller is operator. - The input array lengths must be larger than 0 and the same. - The price should be larger than current domain price or it will not be updated. Emits events {DomainPriceUpdated} optionally.\",\"params\":{\"lbHashes\":\"Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\",\"proofHashes\":\"Array of proof hashes.\",\"ronPrices\":\"Array of prices in (W)RON token.\",\"setTypes\":\"Array of update types from the operator service.\"}},\"convertRONToUSD(uint256)\":{\"details\":\"Returns the converted amount from RON to USD.\"},\"convertUSDToRON(uint256)\":{\"details\":\"Returns the converted amount from USD to RON.\"},\"getDomainPrice(string)\":{\"details\":\"Return the domain price.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getOverriddenRenewalFee(string)\":{\"details\":\"Returns the renewal fee of a label. Reverts if not overridden.\"},\"getOverriddenTier(string)\":{\"details\":\"Returns the tier of a label. Reverts if not overridden.\"},\"getPythOracleConfig()\":{\"details\":\"Returns the Pyth oracle config.\"},\"getRenewalFee(string,uint256)\":{\"details\":\"Returns the renewal fee in USD and RON.\",\"params\":{\"duration\":\"Amount of second(s).\",\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"}},\"getRenewalFeeByLengths()\":{\"details\":\"Returns the renewal fee by lengths.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getScaleDownRuleForDomainPrice()\":{\"details\":\"Returns the percentage to scale from domain price each period.\"},\"getTaxRatio()\":{\"details\":\"Returns tax ratio.\"},\"getTier(string)\":{\"details\":\"Returns the tier of a label.\",\"params\":{\"label\":\"The domain label to register (Eg, 'foo' for 'foo.ron').\"},\"returns\":{\"tier\":\"The tier of the label.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setPythOracleConfig(address,uint256,bytes32)\":{\"details\":\"Sets the Pyth oracle config. Requirements: - The method caller is admin. Emits events {PythOracleConfigUpdated}.\"},\"setRenewalFeeByLengths((uint256,uint256)[])\":{\"details\":\"Sets the renewal fee by lengths Requirements: - The method caller is admin. Emits events {RenewalFeeByLengthUpdated}. Emits an event {MaxRenewalFeeLengthUpdated} optionally.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"details\":\"Sets the percentage to scale from domain price each period. Requirements: - The method caller is admin. Emits events {DomainPriceScaleRuleUpdated}.\"},\"setTaxRatio(uint256)\":{\"details\":\"Sets renewal reservation ratio. Requirements: - The method caller is admin. Emits an event {TaxRatioUpdated}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"stateVariables\":{\"MAX_PERCENTAGE\":{\"details\":\"Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\"},\"OPERATOR_ROLE\":{\"details\":\"Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\"},\"OVERRIDER_ROLE\":{\"details\":\"Returns the overrider role.\"},\"TIER_1_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 1: > $200\"},\"TIER_2_FROM_EXCLUDED_THRESHOLD\":{\"details\":\"The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\"},\"USD_DECIMALS\":{\"details\":\"Decimal for USD.\"},\"____gap\":{\"details\":\"Gap for upgradeability.\"},\"_auction\":{\"details\":\"RNSAuction contract\"},\"_dp\":{\"details\":\"Mapping from name => domain price in USD\"},\"_dpDownScaler\":{\"details\":\"The percentage scale from domain price each period\"},\"_maxAcceptableAge\":{\"details\":\"Max acceptable age of the price oracle request\"},\"_pyth\":{\"details\":\"Pyth oracle contract\"},\"_pythIdForRONUSD\":{\"details\":\"Price feed ID on Pyth for RON/USD\"},\"_rnFee\":{\"details\":\"Mapping from domain length => renewal fee in USD\"},\"_rnFeeOverriding\":{\"details\":\"Mapping from name => inverse bitwise of renewal fee overriding.\"},\"_rnfMaxLength\":{\"details\":\"Max length of the renewal fee\"},\"_taxRatio\":{\"details\":\"Extra fee for renewals based on the current domain price.\"},\"_tierOverriding\":{\"details\":\"Mapping from label hash to overriden tier\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOverriddenRenewalFee(string)\":{\"notice\":\"This method is to help developers check the domain renewal fee overriding. Consider using method {getRenewalFee} instead for full handling of renewal fees.\"},\"getOverriddenTier(string)\":{\"notice\":\"This method is to help developers check the domain tier overriding. Consider using method {getTier} instead for full handling of tiers.\"},\"setScaleDownRuleForDomainPrice((uint192,uint64))\":{\"notice\":\"Applies for the business rule: -x% each y seconds.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/RNSDomainPrice.sol\":\"RNSDomainPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-libs/=lib/contract-libs/src/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```solidity\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```solidity\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\\n * to enforce additional security measures for this role.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role);\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\\n * Overriding this function changes the behavior of the {onlyRole} modifier.\\n *\\n * Format of the revert message is described in {_checkRole}.\\n *\\n * _Available since v4.6._\\n */\\n function _checkRole(bytes32 role) internal view virtual {\\n _checkRole(role, _msgSender());\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view virtual {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n Strings.toHexString(account),\\n \\\" is missing role \\\",\\n Strings.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * May emit a {RoleGranted} event.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n *\\n * NOTE: This function is deprecated in favor of {_grantRole}.\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n bytes32 previousAdminRole = getRoleAdmin(role);\\n _roles[role].adminRole = adminRole;\\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleGranted} event.\\n */\\n function _grantRole(bytes32 role, address account) internal virtual {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * Internal function without access restriction.\\n *\\n * May emit a {RoleRevoked} event.\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n}\\n\",\"keccak256\":\"0x0dd6e52cb394d7f5abe5dca2d4908a6be40417914720932de757de34a99ab87f\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControlEnumerable.sol\\\";\\nimport \\\"./AccessControl.sol\\\";\\nimport \\\"../utils/structs/EnumerableSet.sol\\\";\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {\\n using EnumerableSet for EnumerableSet.AddressSet;\\n\\n mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view virtual override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view virtual override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {_grantRole} to track enumerable memberships\\n */\\n function _grantRole(bytes32 role, address account) internal virtual override {\\n super._grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {_revokeRole} to track enumerable memberships\\n */\\n function _revokeRole(bytes32 role, address account) internal virtual override {\\n super._revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n}\\n\",\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```solidity\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n *\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized != type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n uint256 c = a + b;\\n if (c < a) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b > a) return (false, 0);\\n return (true, a - b);\\n }\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) return (true, 0);\\n uint256 c = a * b;\\n if (c / a != b) return (false, 0);\\n return (true, c);\\n }\\n }\\n\\n /**\\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a / b);\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n *\\n * _Available since v3.4._\\n */\\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n unchecked {\\n if (b == 0) return (false, 0);\\n return (true, a % b);\\n }\\n }\\n\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n *\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a + b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a - b;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n *\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a * b;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator.\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a / b;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a % b;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {trySub}.\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n *\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b <= a, errorMessage);\\n return a - b;\\n }\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a / b;\\n }\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * reverting with custom message when dividing by zero.\\n *\\n * CAUTION: This function is deprecated because it requires allocating memory for the error\\n * message unnecessarily. For custom revert reasons use {tryMod}.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n *\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n unchecked {\\n require(b > 0, errorMessage);\\n return a % b;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x58b21219689909c4f8339af00813760337f7e2e7f169a97fe49e2896dcfb3b9a\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)\\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```solidity\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n *\\n * [WARNING]\\n * ====\\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\\n * unusable.\\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\\n *\\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\\n * array of EnumerableSet.\\n * ====\\n */\\nlibrary EnumerableSet {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastValue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastValue;\\n // Update the index for the moved value\\n set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function _values(Set storage set) private view returns (bytes32[] memory) {\\n return set._values;\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n bytes32[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(AddressSet storage set) internal view returns (address[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n address[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n\\n /**\\n * @dev Return the entire set in an array\\n *\\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\\n */\\n function values(UintSet storage set) internal view returns (uint256[] memory) {\\n bytes32[] memory store = _values(set._inner);\\n uint256[] memory result;\\n\\n /// @solidity memory-safe-assembly\\n assembly {\\n result := store\\n }\\n\\n return result;\\n }\\n}\\n\",\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\"},\"lib/pyth-sdk-solidity/IPyth.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\nimport \\\"./PythStructs.sol\\\";\\nimport \\\"./IPythEvents.sol\\\";\\n\\n/// @title Consume prices from the Pyth Network (https://pyth.network/).\\n/// @dev Please refer to the guidance at https://docs.pyth.network/consumers/best-practices for how to consume prices safely.\\n/// @author Pyth Data Association\\ninterface IPyth is IPythEvents {\\n /// @notice Returns the period (in seconds) that a price feed is considered valid since its publish time\\n function getValidTimePeriod() external view returns (uint validTimePeriod);\\n\\n /// @notice Returns the price and confidence interval.\\n /// @dev Reverts if the price has not been updated within the last `getValidTimePeriod()` seconds.\\n /// @param id The Pyth Price Feed ID of which to fetch the price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price and confidence interval.\\n /// @dev Reverts if the EMA price is not available.\\n /// @param id The Pyth Price Feed ID of which to fetch the EMA price and confidence interval.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPrice(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price of a price feed without any sanity checks.\\n /// @dev This function returns the most recent price update in this contract without any recency checks.\\n /// This function is unsafe as the returned price update may be arbitrarily far in the past.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getPrice` or `getPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the price that is no older than `age` seconds of the current time.\\n /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks.\\n /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available.\\n /// However, if the price is not recent this function returns the latest available price.\\n ///\\n /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that\\n /// the returned price is recent or useful for any particular application.\\n ///\\n /// Users of this function should check the `publishTime` in the price to ensure that the returned price is\\n /// sufficiently recent for their application. If you are considering using this function, it may be\\n /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceUnsafe(\\n bytes32 id\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds\\n /// of the current time.\\n /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in\\n /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently\\n /// recently.\\n /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely.\\n function getEmaPriceNoOlderThan(\\n bytes32 id,\\n uint age\\n ) external view returns (PythStructs.Price memory price);\\n\\n /// @notice Update price feeds with given update messages.\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n /// Prices will be updated if they are more recent than the current stored prices.\\n /// The call will succeed even if the update is not the most recent.\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n function updatePriceFeeds(bytes[] calldata updateData) external payable;\\n\\n /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is\\n /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the\\n /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime\\n /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have\\n /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas.\\n /// Otherwise, it calls updatePriceFeeds method to update the prices.\\n ///\\n /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]`\\n function updatePriceFeedsIfNecessary(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64[] calldata publishTimes\\n ) external payable;\\n\\n /// @notice Returns the required fee to update an array of price updates.\\n /// @param updateData Array of price update data.\\n /// @return feeAmount The required fee in Wei.\\n function getUpdateFee(\\n bytes[] calldata updateData\\n ) external view returns (uint feeAmount);\\n\\n /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published\\n /// within `minPublishTime` and `maxPublishTime`.\\n ///\\n /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price;\\n /// otherwise, please consider using `updatePriceFeeds`. This method does not store the price updates on-chain.\\n ///\\n /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling\\n /// `getUpdateFee` with the length of the `updateData` array.\\n ///\\n ///\\n /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is\\n /// no update for any of the given `priceIds` within the given time range.\\n /// @param updateData Array of price update data.\\n /// @param priceIds Array of price ids.\\n /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`.\\n /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`.\\n /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order).\\n function parsePriceFeedUpdates(\\n bytes[] calldata updateData,\\n bytes32[] calldata priceIds,\\n uint64 minPublishTime,\\n uint64 maxPublishTime\\n ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds);\\n}\\n\",\"keccak256\":\"0x949c65c65fea0578c09a6fc068e09ed1165adede2c835984cefcb25d76de1de2\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/IPythEvents.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\n/// @title IPythEvents contains the events that Pyth contract emits.\\n/// @dev This interface can be used for listening to the updates for off-chain and testing purposes.\\ninterface IPythEvents {\\n /// @dev Emitted when the price feed with `id` has received a fresh update.\\n /// @param id The Pyth Price Feed ID.\\n /// @param publishTime Publish time of the given price update.\\n /// @param price Price of the given price update.\\n /// @param conf Confidence interval of the given price update.\\n event PriceFeedUpdate(\\n bytes32 indexed id,\\n uint64 publishTime,\\n int64 price,\\n uint64 conf\\n );\\n\\n /// @dev Emitted when a batch price update is processed successfully.\\n /// @param chainId ID of the source chain that the batch price update comes from.\\n /// @param sequenceNumber Sequence number of the batch price update.\\n event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber);\\n}\\n\",\"keccak256\":\"0x048a35526c2e77d107d43ba336f1dcf31f64cef25ba429ae1f7a0fbc11c23320\",\"license\":\"Apache-2.0\"},\"lib/pyth-sdk-solidity/PythStructs.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\npragma solidity ^0.8.0;\\n\\ncontract PythStructs {\\n // A price with a degree of uncertainty, represented as a price +- a confidence interval.\\n //\\n // The confidence interval roughly corresponds to the standard error of a normal distribution.\\n // Both the price and confidence are stored in a fixed-point numeric representation,\\n // `x * (10^expo)`, where `expo` is the exponent.\\n //\\n // Please refer to the documentation at https://docs.pyth.network/consumers/best-practices for how\\n // to how this price safely.\\n struct Price {\\n // Price\\n int64 price;\\n // Confidence interval around the price\\n uint64 conf;\\n // Price exponent\\n int32 expo;\\n // Unix timestamp describing when the price was published\\n uint publishTime;\\n }\\n\\n // PriceFeed represents a current aggregate price from pyth publisher feeds.\\n struct PriceFeed {\\n // The price ID.\\n bytes32 id;\\n // Latest available price\\n Price price;\\n // Latest available exponentially-weighted moving average price\\n Price emaPrice;\\n }\\n}\\n\",\"keccak256\":\"0x95ff0a6d64517348ef604b8bcf246b561a9445d7e607b8f48491c617cfda9b65\",\"license\":\"Apache-2.0\"},\"src/RNSDomainPrice.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Initializable } from \\\"@openzeppelin/contracts/proxy/utils/Initializable.sol\\\";\\nimport { AccessControlEnumerable } from \\\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { IPyth, PythStructs } from \\\"@pythnetwork/IPyth.sol\\\";\\nimport { INSUnified } from \\\"./interfaces/INSUnified.sol\\\";\\nimport { INSAuction } from \\\"./interfaces/INSAuction.sol\\\";\\nimport { INSDomainPrice } from \\\"./interfaces/INSDomainPrice.sol\\\";\\nimport { PeriodScaler, LibPeriodScaler, Math } from \\\"./libraries/math/PeriodScalingUtils.sol\\\";\\nimport { TimestampWrapper } from \\\"./libraries/TimestampWrapperUtils.sol\\\";\\nimport { LibSafeRange } from \\\"./libraries/math/LibSafeRange.sol\\\";\\nimport { LibString } from \\\"./libraries/LibString.sol\\\";\\nimport { LibRNSDomain } from \\\"./libraries/LibRNSDomain.sol\\\";\\nimport { PythConverter } from \\\"./libraries/pyth/PythConverter.sol\\\";\\n\\ncontract RNSDomainPrice is Initializable, AccessControlEnumerable, INSDomainPrice {\\n using LibString for *;\\n using LibRNSDomain for string;\\n using LibPeriodScaler for PeriodScaler;\\n using PythConverter for PythStructs.Price;\\n\\n /// @dev The threshold tier value (in USD) for Tier 1: > $200\\n uint256 private constant TIER_1_FROM_EXCLUDED_THRESHOLD = 200e18;\\n /// @dev The threshold tier value (in USD) for Tier 2 in range of ($50; $200]\\n uint256 private constant TIER_2_FROM_EXCLUDED_THRESHOLD = 50e18;\\n /// @inheritdoc INSDomainPrice\\n uint8 public constant USD_DECIMALS = 18;\\n /// @inheritdoc INSDomainPrice\\n uint64 public constant MAX_PERCENTAGE = 100_00;\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OPERATOR_ROLE = keccak256(\\\"OPERATOR_ROLE\\\");\\n /// @inheritdoc INSDomainPrice\\n bytes32 public constant OVERRIDER_ROLE = keccak256(\\\"OVERRIDER_ROLE\\\");\\n\\n /// @dev Gap for upgradeability.\\n uint256[50] private ____gap;\\n\\n /// @dev Pyth oracle contract\\n IPyth internal _pyth;\\n /// @dev RNSAuction contract\\n INSAuction internal _auction;\\n /// @dev Extra fee for renewals based on the current domain price.\\n uint256 internal _taxRatio;\\n /// @dev Max length of the renewal fee\\n uint256 internal _rnfMaxLength;\\n /// @dev Max acceptable age of the price oracle request\\n uint256 internal _maxAcceptableAge;\\n /// @dev Price feed ID on Pyth for RON/USD\\n bytes32 internal _pythIdForRONUSD;\\n /// @dev The percentage scale from domain price each period\\n PeriodScaler internal _dpDownScaler;\\n\\n /// @dev Mapping from domain length => renewal fee in USD\\n mapping(uint256 length => uint256 usdPrice) internal _rnFee;\\n /// @dev Mapping from name => domain price in USD\\n mapping(bytes32 lbHash => TimestampWrapper usdPrice) internal _dp;\\n /// @dev Mapping from name => inverse bitwise of renewal fee overriding.\\n mapping(bytes32 lbHash => uint256 usdPrice) internal _rnFeeOverriding;\\n /// @dev Mapping from label hash to overriden tier\\n mapping(bytes32 lbHash => uint8 tier) internal _tierOverriding;\\n\\n constructor() payable {\\n _disableInitializers();\\n }\\n\\n function initialize(\\n address admin,\\n address[] calldata operators,\\n RenewalFee[] calldata renewalFees,\\n uint256 taxRatio,\\n PeriodScaler calldata domainPriceScaleRule,\\n IPyth pyth,\\n INSAuction auction,\\n uint256 maxAcceptableAge,\\n bytes32 pythIdForRONUSD\\n ) external initializer {\\n uint256 length = operators.length;\\n bytes32 operatorRole = OPERATOR_ROLE;\\n\\n for (uint256 i; i < length;) {\\n _setupRole(operatorRole, operators[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n _auction = auction;\\n _setupRole(DEFAULT_ADMIN_ROLE, admin);\\n _setRenewalFeeByLengths(renewalFees);\\n _setTaxRatio(taxRatio);\\n _setDomainPriceScaleRule(domainPriceScaleRule);\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) {\\n return (_pyth, _maxAcceptableAge, _pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD)\\n external\\n onlyRole(DEFAULT_ADMIN_ROLE)\\n {\\n _setPythOracleConfig(pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees) {\\n uint256 rnfMaxLength = _rnfMaxLength;\\n renewalFees = new RenewalFee[](rnfMaxLength);\\n uint256 len;\\n\\n for (uint256 i; i < rnfMaxLength;) {\\n unchecked {\\n len = i + 1;\\n renewalFees[i].labelLength = len;\\n renewalFees[i].fee = _rnFee[len];\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setRenewalFeeByLengths(renewalFees);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTaxRatio() external view returns (uint256 ratio) {\\n return _taxRatio;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setTaxRatio(uint256 ratio) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setTaxRatio(ratio);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory scaleRule) {\\n return _dpDownScaler;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external onlyRole(DEFAULT_ADMIN_ROLE) {\\n _setDomainPriceScaleRule(scaleRule);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenRenewalFee(string calldata label) external view returns (uint256 usdFee) {\\n usdFee = _rnFeeOverriding[label.hashLabel()];\\n if (usdFee == 0) revert RenewalFeeIsNotOverriden();\\n return ~usdFee;\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getOverriddenTier(string calldata label) external view returns (Tier tier) {\\n uint8 tierValue = _tierOverriding[label.hashLabel()];\\n if (tierValue == 0) revert TierIsNotOverriden();\\n return Tier(~tierValue);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices)\\n external\\n onlyRole(OVERRIDER_ROLE)\\n {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != usdPrices.length) revert InvalidArrayLength();\\n uint256 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~usdPrices[i];\\n _rnFeeOverriding[lbHashes[i]] = inverseBitwise;\\n emit RenewalFeeOverridingUpdated(operator, lbHashes[i], inverseBitwise);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = lbHashes.length;\\n if (length == 0 || length != tiers.length) revert InvalidArrayLength();\\n uint8 inverseBitwise;\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n inverseBitwise = ~uint8(tiers[i]);\\n _tierOverriding[lbHashes[i]] = inverseBitwise;\\n emit TierOverridingUpdated(operator, lbHashes[i], tiers[i]);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OPERATOR_ROLE) returns (bool[] memory updated) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n updated = new bool[](length);\\n\\n for (uint256 i; i < length;) {\\n updated[i] = _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], false);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external onlyRole(OVERRIDER_ROLE) {\\n uint256 length = _requireBulkSetDomainPriceArgumentsValid(lbHashes, ronPrices, proofHashes, setTypes);\\n address operator = _msgSender();\\n\\n for (uint256 i; i < length;) {\\n _setDomainPrice(operator, lbHashes[i], ronPrices[i], proofHashes[i], setTypes[i], true);\\n unchecked {\\n ++i;\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getDomainPrice(string memory label) public view returns (uint256 usdPrice, uint256 ronPrice) {\\n usdPrice = _getDomainPrice(label.hashLabel());\\n ronPrice = convertUSDToRON(usdPrice);\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getTier(string memory label) public view returns (Tier tier) {\\n bytes32 lbHash = label.hashLabel();\\n uint8 overriddenTier = _tierOverriding[lbHash];\\n\\n if (overriddenTier != 0) return Tier(~overriddenTier);\\n\\n (UnitPrice memory yearlyRenewalFeeByLength,,) = _tryGetRenewalFee({ label: label, duration: 365 days });\\n uint256 tierValue = yearlyRenewalFeeByLength.usd + _getDomainPrice(lbHash) / 2;\\n\\n if (tierValue > TIER_1_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier1;\\n } else if (tierValue > TIER_2_FROM_EXCLUDED_THRESHOLD) {\\n return Tier.Tier2;\\n } else {\\n return Tier.Tier3;\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function getRenewalFee(string memory label, uint256 duration)\\n public\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax)\\n {\\n bytes4 revertReason;\\n (basePrice, tax, revertReason) = _tryGetRenewalFee(label, duration);\\n if (revertReason != bytes4(0x0)) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, revertReason)\\n revert(0x0, 0x04)\\n }\\n }\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertUSDToRON(uint256 usdWei) public view returns (uint256 ronWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).inverse({ expo: -18 }).mul({\\n inpWei: usdWei,\\n inpDecimals: int32(uint32(USD_DECIMALS)),\\n outDecimals: 18\\n });\\n }\\n\\n /**\\n * @inheritdoc INSDomainPrice\\n */\\n function convertRONToUSD(uint256 ronWei) public view returns (uint256 usdWei) {\\n return _pyth.getPriceNoOlderThan(_pythIdForRONUSD, _maxAcceptableAge).mul({\\n inpWei: ronWei,\\n inpDecimals: 18,\\n outDecimals: int32(uint32(USD_DECIMALS))\\n });\\n }\\n\\n /**\\n * @dev Reverts if the arguments of the method {bulkSetDomainPrice} is invalid.\\n */\\n function _requireBulkSetDomainPriceArgumentsValid(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) internal pure returns (uint256 length) {\\n length = lbHashes.length;\\n if (length == 0 || ronPrices.length != length || proofHashes.length != length || setTypes.length != length) {\\n revert InvalidArrayLength();\\n }\\n }\\n\\n /**\\n * @dev Helper method to set domain price.\\n *\\n * Emits an event {DomainPriceUpdated} optionally.\\n */\\n function _setDomainPrice(\\n address operator,\\n bytes32 lbHash,\\n uint256 ronPrice,\\n bytes32 proofHash,\\n uint256 setType,\\n bool forced\\n ) internal returns (bool updated) {\\n uint256 usdPrice = convertRONToUSD(ronPrice);\\n TimestampWrapper storage dp = _dp[lbHash];\\n updated = forced || dp.value < usdPrice;\\n\\n if (updated) {\\n dp.value = usdPrice;\\n dp.timestamp = block.timestamp;\\n emit DomainPriceUpdated(operator, lbHash, usdPrice, proofHash, setType);\\n }\\n }\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function _setTaxRatio(uint256 ratio) internal {\\n _taxRatio = ratio;\\n emit TaxRatioUpdated(_msgSender(), ratio);\\n }\\n\\n /**\\n * @dev Sets domain price scale rule.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n */\\n function _setDomainPriceScaleRule(PeriodScaler calldata domainPriceScaleRule) internal {\\n _dpDownScaler = domainPriceScaleRule;\\n emit DomainPriceScaleRuleUpdated(_msgSender(), domainPriceScaleRule.ratio, domainPriceScaleRule.period);\\n }\\n\\n /**\\n * @dev Sets renewal fee.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function _setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) internal {\\n address operator = _msgSender();\\n RenewalFee memory renewalFee;\\n uint256 length = renewalFees.length;\\n uint256 maxRenewalFeeLength = _rnfMaxLength;\\n\\n for (uint256 i; i < length;) {\\n renewalFee = renewalFees[i];\\n maxRenewalFeeLength = Math.max(maxRenewalFeeLength, renewalFee.labelLength);\\n _rnFee[renewalFee.labelLength] = renewalFee.fee;\\n emit RenewalFeeByLengthUpdated(operator, renewalFee.labelLength, renewalFee.fee);\\n\\n unchecked {\\n ++i;\\n }\\n }\\n\\n if (maxRenewalFeeLength != _rnfMaxLength) {\\n _rnfMaxLength = maxRenewalFeeLength;\\n emit MaxRenewalFeeLengthUpdated(operator, maxRenewalFeeLength);\\n }\\n }\\n\\n /**\\n * @dev Sets Pyth Oracle config.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function _setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) internal {\\n _pyth = pyth;\\n _maxAcceptableAge = maxAcceptableAge;\\n _pythIdForRONUSD = pythIdForRONUSD;\\n emit PythOracleConfigUpdated(_msgSender(), pyth, maxAcceptableAge, pythIdForRONUSD);\\n }\\n\\n /**\\n * @dev Tries to get the renewal fee for a given domain label and duration.\\n * It returns the base price, tax, and a revert reason if applicable.\\n * @param label The domain label.\\n * @param duration The duration for which the domain is being renewed.\\n * @return basePrice The base price in USD for \\u02ddrenewing the domain.\\n * @return tax The tax amount in USD for renewing the domain.\\n * @return revertReason The revert reason if the renewal fee exceeds the auction domain expiry.\\n */\\n function _tryGetRenewalFee(string memory label, uint256 duration)\\n internal\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax, bytes4 revertReason)\\n {\\n uint256 nameLen = label.strlen();\\n bytes32 lbHash = label.hashLabel();\\n uint256 overriddenRenewalFee = _rnFeeOverriding[lbHash];\\n\\n if (overriddenRenewalFee != 0) {\\n basePrice.usd = duration * ~overriddenRenewalFee;\\n } else {\\n uint256 renewalFeeByLength = _rnFee[Math.min(nameLen, _rnfMaxLength)];\\n basePrice.usd = duration * renewalFeeByLength;\\n uint256 id = LibRNSDomain.toId(LibRNSDomain.RON_ID, label);\\n INSAuction auction = _auction;\\n if (auction.reserved(id)) {\\n INSUnified rns = auction.getRNSUnified();\\n uint256 expiry = LibSafeRange.addWithUpperbound(rns.getRecord(id).mut.expiry, duration, type(uint64).max);\\n (INSAuction.DomainAuction memory domainAuction,) = auction.getAuction(id);\\n uint256 claimedAt = domainAuction.bid.claimedAt;\\n if (claimedAt != 0 && expiry - claimedAt > auction.MAX_AUCTION_DOMAIN_EXPIRY()) {\\n return (basePrice, tax, ExceedAuctionDomainExpiry.selector);\\n }\\n // Tax is added to the name reserved for the auction\\n tax.usd = Math.mulDiv(_taxRatio, _getDomainPrice(lbHash), MAX_PERCENTAGE);\\n }\\n }\\n\\n tax.ron = convertUSDToRON(tax.usd);\\n basePrice.ron = convertUSDToRON(basePrice.usd);\\n }\\n\\n /**\\n * @dev Returns the current domain price applied the business rule: deduced x% each y seconds.\\n */\\n function _getDomainPrice(bytes32 lbHash) internal view returns (uint256) {\\n TimestampWrapper storage dp = _dp[lbHash];\\n uint256 lastSyncedAt = dp.timestamp;\\n if (lastSyncedAt == 0) return 0;\\n\\n uint256 passedDuration = block.timestamp - lastSyncedAt;\\n return _dpDownScaler.scaleDown({ v: dp.value, maxR: MAX_PERCENTAGE, dur: passedDuration });\\n }\\n}\\n\",\"keccak256\":\"0x0edacadce2173877441244247275ea91591f0b165874ff4a384583894f346827\",\"license\":\"MIT\"},\"src/interfaces/INSAuction.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { INSUnified } from \\\"./INSUnified.sol\\\";\\nimport { EventRange } from \\\"../libraries/LibEventRange.sol\\\";\\n\\ninterface INSAuction {\\n error NotYetEnded();\\n error NoOneBidded();\\n error NullAssignment();\\n error AlreadyBidding(uint256 id);\\n error RatioIsTooLarge();\\n error NameNotReserved();\\n error InvalidEventRange();\\n error QueryIsNotInPeriod();\\n error InsufficientAmount();\\n error InvalidArrayLength();\\n error ContractBidderIsForbidden();\\n error EventIsNotCreatedOrAlreadyStarted();\\n\\n struct Bid {\\n address payable bidder;\\n uint256 price;\\n uint256 timestamp;\\n uint256 claimedAt;\\n }\\n\\n struct DomainAuction {\\n bytes32 auctionId;\\n uint256 startingPrice;\\n Bid bid;\\n }\\n\\n /// @dev Emitted when an auction is set.\\n event AuctionEventSet(bytes32 indexed auctionId, EventRange range);\\n /// @dev Emitted when the labels are listed for auction.\\n event LabelsListed(bytes32 indexed auctionId, uint256[] ids, uint256[] startingPrices);\\n /// @dev Emitted when a bid is placed for a name.\\n event BidPlaced(\\n bytes32 indexed auctionId,\\n uint256 indexed id,\\n uint256 price,\\n address payable bidder,\\n uint256 previousPrice,\\n address previousBidder\\n );\\n /// @dev Emitted when the treasury is updated.\\n event TreasuryUpdated(address indexed addr);\\n /// @dev Emitted when bid gap ratio is updated.\\n event BidGapRatioUpdated(uint256 ratio);\\n\\n /**\\n * @dev The maximum expiry duration\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev The maximum expiry duration of a domain after transferring to bidder.\\n */\\n function MAX_AUCTION_DOMAIN_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the operator role.\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint256);\\n\\n /**\\n * @dev The expiry duration of a domain after transferring to bidder.\\n */\\n function DOMAIN_EXPIRY_DURATION() external pure returns (uint64);\\n\\n /**\\n * @dev Claims domain names for auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param labels The domain names. Eg, ['foo'] for 'foo.ron'\\n * @return ids The id corresponding for namehash of domain names.\\n */\\n function bulkRegister(string[] calldata labels) external returns (uint256[] memory ids);\\n\\n /**\\n * @dev Checks whether a domain name is currently reserved for auction or not.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function reserved(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Claim unbidded names and transfer them to the specified addresses.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n *\\n * @param tos The array of addresses to transfer domain names to.\\n * @param ids The id corresponding for namehash of domain names.\\n * @param allowFailure Flag to indicate whether to allow failure if a domain is already being bid on.\\n * @return claimeds An array indicating whether each domain name was successfully claimed.\\n */\\n function bulkClaimUnbiddedNames(address[] calldata tos, uint256[] calldata ids, bool allowFailure)\\n external\\n returns (bool[] memory claimeds);\\n\\n /**\\n * @dev Creates a new auction to sale with a specific time period.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n *\\n * @return auctionId The auction id\\n * @notice Please use the method `setAuctionNames` to list all the reserved names.\\n */\\n function createAuctionEvent(EventRange calldata range) external returns (bytes32 auctionId);\\n\\n /**\\n * @dev Updates the auction details.\\n *\\n * Requirements:\\n * - The method caller must be admin.\\n *\\n * Emits an event {AuctionEventSet}.\\n */\\n function setAuctionEvent(bytes32 auctionId, EventRange calldata range) external;\\n\\n /**\\n * @dev Returns the event range of an auction.\\n */\\n function getAuctionEvent(bytes32 auctionId) external view returns (EventRange memory);\\n\\n /**\\n * @dev Lists reserved names to sale in a specified auction.\\n *\\n * Requirements:\\n * - The method caller must be contract operator.\\n * - Array length are matched and larger than 0.\\n * - Only allow to set when the domain is:\\n * + Not in any auction.\\n * + Or, in the current auction.\\n * + Or, this name is not bided.\\n *\\n * Emits an event {LabelsListed}.\\n *\\n * Note: If the name is already listed, this method replaces with a new input value.\\n *\\n * @param ids The namehashes id of domain names. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function listNamesForAuction(bytes32 auctionId, uint256[] calldata ids, uint256[] calldata startingPrices) external;\\n\\n /**\\n * @dev Places a bid for a domain name.\\n *\\n * Requirements:\\n * - The name is listed, or the auction is happening.\\n * - The msg.value is larger than the current bid price or the auction starting price.\\n *\\n * Emits an event {BidPlaced}.\\n *\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function placeBid(uint256 id) external payable;\\n\\n /**\\n * @dev Returns the highest bid and address of the bidder.\\n * @param id The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function getAuction(uint256 id) external view returns (DomainAuction memory, uint256 beatPrice);\\n\\n /**\\n * @dev Bulk claims the bid name.\\n *\\n * Requirements:\\n * - Must be called after ended time.\\n * - The method caller can be anyone.\\n *\\n * @param ids The namehash id of domain name. Eg, namehash('foo.ron') for 'foo.ron'\\n */\\n function bulkClaimBidNames(uint256[] calldata ids) external returns (uint256[] memory claimedAts);\\n\\n /**\\n * @dev Returns the treasury.\\n */\\n function getTreasury() external view returns (address);\\n\\n /**\\n * @dev Returns the gap ratio between 2 bids with the starting price. Value in range [0;100_00] is 0%-100%.\\n */\\n function getBidGapRatio() external view returns (uint256);\\n\\n /**\\n * @dev Sets the treasury.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {TreasuryUpdated}.\\n */\\n function setTreasury(address payable) external;\\n\\n /**\\n * @dev Sets commission ratio. Value in range [0;100_00] is 0%-100%.\\n *\\n * Requirements:\\n * - The method caller must be admin\\n *\\n * Emits an event {BidGapRatioUpdated}.\\n */\\n function setBidGapRatio(uint256) external;\\n\\n /**\\n * @dev Returns RNSUnified contract.\\n */\\n function getRNSUnified() external view returns (INSUnified);\\n}\\n\",\"keccak256\":\"0x406d5d682af4652b6c9c26948a4d4e31b6b88c056177973bb5f7d32141ae658c\",\"license\":\"MIT\"},\"src/interfaces/INSDomainPrice.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { PeriodScaler } from \\\"../libraries/math/PeriodScalingUtils.sol\\\";\\nimport { IPyth } from \\\"@pythnetwork/IPyth.sol\\\";\\n\\ninterface INSDomainPrice {\\n error InvalidArrayLength();\\n error RenewalFeeIsNotOverriden();\\n error TierIsNotOverriden();\\n error ExceedAuctionDomainExpiry();\\n\\n /// @dev The tier of a domain.\\n enum Tier {\\n Unknown,\\n Tier1,\\n Tier2,\\n Tier3\\n }\\n\\n struct RenewalFee {\\n uint256 labelLength;\\n uint256 fee;\\n }\\n\\n struct UnitPrice {\\n uint256 usd;\\n uint256 ron;\\n }\\n\\n /// @dev Emitted when the renewal reservation ratio is updated.\\n event TaxRatioUpdated(address indexed operator, uint256 indexed ratio);\\n /// @dev Emitted when the maximum length of renewal fee is updated.\\n event MaxRenewalFeeLengthUpdated(address indexed operator, uint256 indexed maxLength);\\n /// @dev Emitted when the renew fee is updated.\\n event RenewalFeeByLengthUpdated(address indexed operator, uint256 indexed labelLength, uint256 renewalFee);\\n /// @dev Emitted when the renew fee of a domain is overridden. Value of `inverseRenewalFee` is 0 when not overridden.\\n event RenewalFeeOverridingUpdated(address indexed operator, bytes32 indexed labelHash, uint256 inverseRenewalFee);\\n /// @dev Emitted when the tier of a domain is overridden.\\n event TierOverridingUpdated(address indexed operator, bytes32 indexed labelHash, Tier indexed tier);\\n\\n /// @dev Emitted when the domain price is updated.\\n event DomainPriceUpdated(\\n address indexed operator, bytes32 indexed labelHash, uint256 price, bytes32 indexed proofHash, uint256 setType\\n );\\n /// @dev Emitted when the rule to rescale domain price is updated.\\n event DomainPriceScaleRuleUpdated(address indexed operator, uint192 ratio, uint64 period);\\n\\n /// @dev Emitted when the Pyth Oracle config is updated.\\n event PythOracleConfigUpdated(\\n address indexed operator, IPyth indexed pyth, uint256 maxAcceptableAge, bytes32 indexed pythIdForRONUSD\\n );\\n\\n /**\\n * @dev Returns the Pyth oracle config.\\n */\\n function getPythOracleConfig() external view returns (IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD);\\n\\n /**\\n * @dev Sets the Pyth oracle config.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {PythOracleConfigUpdated}.\\n */\\n function setPythOracleConfig(IPyth pyth, uint256 maxAcceptableAge, bytes32 pythIdForRONUSD) external;\\n\\n /**\\n * @dev Returns the percentage to scale from domain price each period.\\n */\\n function getScaleDownRuleForDomainPrice() external view returns (PeriodScaler memory dpScaleRule);\\n\\n /**\\n * @dev Sets the percentage to scale from domain price each period.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {DomainPriceScaleRuleUpdated}.\\n *\\n * @notice Applies for the business rule: -x% each y seconds.\\n */\\n function setScaleDownRuleForDomainPrice(PeriodScaler calldata scaleRule) external;\\n\\n /**\\n * @dev Returns the renewal fee by lengths.\\n */\\n function getRenewalFeeByLengths() external view returns (RenewalFee[] memory renewalFees);\\n\\n /**\\n * @dev Sets the renewal fee by lengths\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits events {RenewalFeeByLengthUpdated}.\\n * Emits an event {MaxRenewalFeeLengthUpdated} optionally.\\n */\\n function setRenewalFeeByLengths(RenewalFee[] calldata renewalFees) external;\\n\\n /**\\n * @dev Returns tax ratio.\\n */\\n function getTaxRatio() external view returns (uint256 taxRatio);\\n\\n /**\\n * @dev Sets renewal reservation ratio.\\n *\\n * Requirements:\\n * - The method caller is admin.\\n *\\n * Emits an event {TaxRatioUpdated}.\\n */\\n function setTaxRatio(uint256 ratio) external;\\n\\n /**\\n * @dev Return the domain price.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n */\\n function getDomainPrice(string memory label) external view returns (uint256 usdPrice, uint256 ronPrice);\\n\\n /**\\n * @dev Returns the renewal fee in USD and RON.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @param duration Amount of second(s).\\n */\\n function getRenewalFee(string calldata label, uint256 duration)\\n external\\n view\\n returns (UnitPrice memory basePrice, UnitPrice memory tax);\\n\\n /**\\n * @dev Returns the tier of a label.\\n * @param label The domain label to register (Eg, 'foo' for 'foo.ron').\\n * @return tier The tier of the label.\\n */\\n function getTier(string calldata label) external view returns (Tier tier);\\n\\n /**\\n * @dev Returns the renewal fee of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain renewal fee overriding. Consider using method\\n * {getRenewalFee} instead for full handling of renewal fees.\\n */\\n function getOverriddenRenewalFee(string memory label) external view returns (uint256 usdFee);\\n\\n /**\\n * @dev Returns the tier of a label. Reverts if not overridden.\\n * @notice This method is to help developers check the domain tier overriding. Consider using method {getTier} instead\\n * for full handling of tiers.\\n */\\n function getOverriddenTier(string memory label) external view returns (Tier tier);\\n\\n /**\\n * @dev Bulk override renewal fees.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {RenewalFeeOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param usdPrices Array of prices in USD. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideRenewalFees(bytes32[] calldata lbHashes, uint256[] calldata usdPrices) external;\\n\\n /**\\n * @dev Bulk override tiers.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {TierOverridingUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param tiers Array of tiers. Leave 2^256 - 1 to remove overriding.\\n */\\n function bulkOverrideTiers(bytes32[] calldata lbHashes, Tier[] calldata tiers) external;\\n\\n /**\\n * @dev Bulk try to set domain prices. Returns a boolean array indicating whether domain prices at the corresponding\\n * indexes if set or not.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n * - The price should be larger than current domain price or it will not be updated.\\n *\\n * Emits events {DomainPriceUpdated} optionally.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkTrySetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external returns (bool[] memory updated);\\n\\n /**\\n * @dev Bulk override domain prices.\\n *\\n * Requirements:\\n * - The method caller is operator.\\n * - The input array lengths must be larger than 0 and the same.\\n *\\n * Emits events {DomainPriceUpdated}.\\n *\\n * @param lbHashes Array of label hashes. (Eg, ['foo'].map(keccak256) for 'foo.ron')\\n * @param ronPrices Array of prices in (W)RON token.\\n * @param proofHashes Array of proof hashes.\\n * @param setTypes Array of update types from the operator service.\\n */\\n function bulkSetDomainPrice(\\n bytes32[] calldata lbHashes,\\n uint256[] calldata ronPrices,\\n bytes32[] calldata proofHashes,\\n uint256[] calldata setTypes\\n ) external;\\n\\n /**\\n * @dev Returns the converted amount from USD to RON.\\n */\\n function convertUSDToRON(uint256 usdAmount) external view returns (uint256 ronAmount);\\n\\n /**\\n * @dev Returns the converted amount from RON to USD.\\n */\\n function convertRONToUSD(uint256 ronAmount) external view returns (uint256 usdAmount);\\n\\n /**\\n * @dev Value equals to keccak256(\\\"OPERATOR_ROLE\\\").\\n */\\n function OPERATOR_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the overrider role.\\n */\\n function OVERRIDER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Max percentage 100%. Values [0; 100_00] reflexes [0; 100%]\\n */\\n function MAX_PERCENTAGE() external pure returns (uint64);\\n\\n /**\\n * @dev Decimal for USD.\\n */\\n function USD_DECIMALS() external pure returns (uint8);\\n}\\n\",\"keccak256\":\"0x8788fdbb62a27ad604ade2ca281a1b76001b929245d4ef9117544636ac8ec545\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/LibEventRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct EventRange {\\n uint256 startedAt;\\n uint256 endedAt;\\n}\\n\\nlibrary LibEventRange {\\n /**\\n * @dev Checks whether the event range is valid.\\n */\\n function valid(EventRange calldata range) internal pure returns (bool) {\\n return range.startedAt <= range.endedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is not yet started.\\n */\\n function isNotYetStarted(EventRange memory range) internal view returns (bool) {\\n return block.timestamp < range.startedAt;\\n }\\n\\n /**\\n * @dev Returns whether the current range is ended or not.\\n */\\n function isEnded(EventRange memory range) internal view returns (bool) {\\n return range.endedAt <= block.timestamp;\\n }\\n\\n /**\\n * @dev Returns whether the current block is in period.\\n */\\n function isInPeriod(EventRange memory range) internal view returns (bool) {\\n return range.startedAt <= block.timestamp && block.timestamp < range.endedAt;\\n }\\n}\\n\",\"keccak256\":\"0x95bf015c4245919cbcbcd810dd597fdb23eb4e58b62df8ef74b1c8c60a969bea\",\"license\":\"MIT\"},\"src/libraries/LibRNSDomain.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nlibrary LibRNSDomain {\\n /// @dev Value equals to namehash('ron')\\n uint256 internal constant RON_ID = 0xba69923fa107dbf5a25a073a10b7c9216ae39fbadc95dc891d460d9ae315d688;\\n /// @dev Value equals to namehash('addr.reverse')\\n uint256 internal constant ADDR_REVERSE_ID = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\\n\\n /**\\n * @dev Calculate the corresponding id given parentId and label.\\n */\\n function toId(uint256 parentId, string memory label) internal pure returns (uint256 id) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(0x0, parentId)\\n mstore(0x20, keccak256(add(label, 32), mload(label)))\\n id := keccak256(0x0, 64)\\n }\\n }\\n\\n /**\\n * @dev Calculates the hash of the label.\\n */\\n function hashLabel(string memory label) internal pure returns (bytes32 hashed) {\\n assembly (\\\"memory-safe\\\") {\\n hashed := keccak256(add(label, 32), mload(label))\\n }\\n }\\n\\n /**\\n * @dev Calculate the RNS namehash of a str.\\n */\\n function namehash(string memory str) internal pure returns (bytes32 hashed) {\\n // notice: this method is case-sensitive, ensure the string is lowercased before calling this method\\n assembly (\\\"memory-safe\\\") {\\n // load str length\\n let len := mload(str)\\n // returns bytes32(0x0) if length is zero\\n if iszero(iszero(len)) {\\n let hashedLen\\n // compute pointer to str[0]\\n let head := add(str, 32)\\n // compute pointer to str[length - 1]\\n let tail := add(head, sub(len, 1))\\n // cleanup dirty bytes if contains any\\n mstore(0x0, 0)\\n // loop backwards from `tail` to `head`\\n for { let i := tail } iszero(lt(i, head)) { i := sub(i, 1) } {\\n // check if `i` is `head`\\n let isHead := eq(i, head)\\n // check if `str[i-1]` is \\\".\\\"\\n // `0x2e` == bytes1(\\\".\\\")\\n let isDotNext := eq(shr(248, mload(sub(i, 1))), 0x2e)\\n if or(isHead, isDotNext) {\\n // size = distance(length, i) - hashedLength + 1\\n let size := add(sub(sub(tail, i), hashedLen), 1)\\n mstore(0x20, keccak256(i, size))\\n mstore(0x0, keccak256(0x0, 64))\\n // skip \\\".\\\" thereby + 1\\n hashedLen := add(hashedLen, add(size, 1))\\n }\\n }\\n }\\n hashed := mload(0x0)\\n }\\n }\\n}\\n\",\"keccak256\":\"0x715029b2b420c6ec00bc1f939b837acf45d247fde8426089575b0e7b5e84518b\",\"license\":\"MIT\"},\"src/libraries/LibString.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibString {\\n error InvalidStringLength();\\n error InvalidCharacter(bytes1 char);\\n\\n /// @dev Lookup constant for method. See more detail at https://eips.ethereum.org/EIPS/eip-181\\n bytes32 private constant LOOKUP = 0x3031323334353637383961626364656600000000000000000000000000000000;\\n\\n /**\\n * @dev Returns the length of a given string\\n *\\n * @param s The string to measure the length of\\n * @return The length of the input string\\n */\\n function strlen(string memory s) internal pure returns (uint256) {\\n unchecked {\\n uint256 i;\\n uint256 len;\\n uint256 bytelength = bytes(s).length;\\n for (len; i < bytelength; len++) {\\n bytes1 b = bytes(s)[i];\\n if (b < 0x80) {\\n i += 1;\\n } else if (b < 0xE0) {\\n i += 2;\\n } else if (b < 0xF0) {\\n i += 3;\\n } else if (b < 0xF8) {\\n i += 4;\\n } else if (b < 0xFC) {\\n i += 5;\\n } else {\\n i += 6;\\n }\\n }\\n return len;\\n }\\n }\\n\\n /**\\n * @dev Converts an address to string.\\n */\\n function toString(address addr) internal pure returns (string memory stringifiedAddr) {\\n assembly (\\\"memory-safe\\\") {\\n mstore(stringifiedAddr, 40)\\n let ptr := add(stringifiedAddr, 0x20)\\n for { let i := 40 } gt(i, 0) { } {\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n\\n i := sub(i, 1)\\n mstore8(add(i, ptr), byte(and(addr, 0xf), LOOKUP))\\n addr := div(addr, 0x10)\\n }\\n }\\n }\\n\\n /**\\n * @dev Converts string to address.\\n * Reverts if the string length is not equal to 40.\\n */\\n function parseAddr(string memory stringifiedAddr) internal pure returns (address) {\\n unchecked {\\n if (bytes(stringifiedAddr).length != 40) revert InvalidStringLength();\\n uint160 addr;\\n for (uint256 i = 0; i < 40; i += 2) {\\n addr *= 0x100;\\n addr += uint160(hexCharToDec(bytes(stringifiedAddr)[i])) * 0x10;\\n addr += hexCharToDec(bytes(stringifiedAddr)[i + 1]);\\n }\\n return address(addr);\\n }\\n }\\n\\n /**\\n * @dev Converts a hex char (0-9, a-f, A-F) to decimal number.\\n * Reverts if the char is invalid.\\n */\\n function hexCharToDec(bytes1 c) private pure returns (uint8 r) {\\n unchecked {\\n if ((bytes1(\\\"a\\\") <= c) && (c <= bytes1(\\\"f\\\"))) r = uint8(c) - 87;\\n else if ((bytes1(\\\"A\\\") <= c) && (c <= bytes1(\\\"F\\\"))) r = uint8(c) - 55;\\n else if ((bytes1(\\\"0\\\") <= c) && (c <= bytes1(\\\"9\\\"))) r = uint8(c) - 48;\\n else revert InvalidCharacter(c);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x9d456b294f0e44ccaabded43a3d96db6270761a167535155a762fe41e968b905\",\"license\":\"MIT\"},\"src/libraries/TimestampWrapperUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nstruct TimestampWrapper {\\n uint256 value;\\n uint256 timestamp;\\n}\\n\",\"keccak256\":\"0x18488d153ebc8579907a85cb7e0be828d0de7c571c9f3368a6d200574b012018\",\"license\":\"MIT\"},\"src/libraries/math/LibSafeRange.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary LibSafeRange {\\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {\\n unchecked {\\n c = a + b;\\n if (c < a) return type(uint256).max;\\n }\\n }\\n\\n /**\\n * @dev Returns value of a + b; in case result is larger than upperbound, upperbound is returned.\\n */\\n function addWithUpperbound(uint256 a, uint256 b, uint256 ceil) internal pure returns (uint256 c) {\\n if (a > ceil || b > ceil) return ceil;\\n c = add(a, b);\\n if (c > ceil) return ceil;\\n }\\n}\\n\",\"keccak256\":\"0x12cf5f592a2d80b9c1b0ea11b8fe2b3ed42fc6d62303ba667edc56464baa8810\",\"license\":\"MIT\"},\"src/libraries/math/PeriodScalingUtils.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PowMath } from \\\"./PowMath.sol\\\";\\n\\nstruct PeriodScaler {\\n uint192 ratio;\\n uint64 period;\\n}\\n\\nlibrary LibPeriodScaler {\\n using PowMath for uint256;\\n\\n error PeriodNumOverflowedUint16(uint256 n);\\n\\n /// @dev The precision number of calculation is 2\\n uint256 public constant MAX_PERCENTAGE = 100_00;\\n\\n /**\\n * @dev Scales down the input value `v` for a percentage of `self.ratio` each period `self.period`.\\n * Reverts if the passed period is larger than 2^16 - 1.\\n *\\n * @param self The period scaler with specific period and ratio\\n * @param v The original value to scale based on the rule `self`\\n * @param maxR The maximum value of 100%. Eg, if the `self.ratio` in range of [0;100_00] reflexes 0-100%, this param\\n * must be 100_00\\n * @param dur The passed duration in the same uint with `self.period`\\n */\\n function scaleDown(PeriodScaler memory self, uint256 v, uint64 maxR, uint256 dur) internal pure returns (uint256 rs) {\\n uint256 n = dur / uint256(self.period);\\n if (n == 0 || self.ratio == 0) return v;\\n if (maxR == self.ratio) return 0;\\n if (n > type(uint16).max) revert PeriodNumOverflowedUint16(n);\\n\\n unchecked {\\n // Normalizes the input ratios to be in range of [0;MAX_PERCENTAGE]\\n uint256 p = Math.mulDiv(maxR - self.ratio, MAX_PERCENTAGE, maxR);\\n return v.mulDiv({ y: p, d: MAX_PERCENTAGE, n: uint16(n) });\\n }\\n }\\n}\\n\",\"keccak256\":\"0x502d004fbd130a99f3f1e6685aebff9f47300565fbc5a65b4912824ea5eb5b78\",\"license\":\"MIT\"},\"src/libraries/math/PowMath.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { SafeMath } from \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\n\\nlibrary PowMath {\\n using Math for uint256;\\n using SafeMath for uint256;\\n\\n /**\\n * @dev Negative exponent n for x*10^n.\\n */\\n function exp10(uint256 x, int32 n) internal pure returns (uint256) {\\n if (n < 0) {\\n return x / 10 ** uint32(-n);\\n } else if (n > 0) {\\n return x * 10 ** uint32(n);\\n } else {\\n return x;\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with full precision.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256 r) {\\n unchecked {\\n if (y == d || n == 0) return x;\\n r = x;\\n\\n bool ok;\\n uint256 r_;\\n uint16 nd_;\\n\\n {\\n uint16 ye = uint16(Math.min(n, findMaxExponent(y)));\\n while (ye > 0) {\\n (ok, r_) = r.tryMul(y ** ye);\\n if (ok) {\\n r = r_;\\n n -= ye;\\n nd_ += ye;\\n }\\n ye = uint16(Math.min(ye / 2, n));\\n }\\n }\\n\\n while (n > 0) {\\n (ok, r_) = r.tryMul(y);\\n if (ok) {\\n r = r_;\\n n--;\\n nd_++;\\n } else if (nd_ > 0) {\\n r /= d;\\n nd_--;\\n } else {\\n r = r.mulDiv(y, d);\\n n--;\\n }\\n }\\n\\n uint16 de = findMaxExponent(d);\\n while (nd_ > 0) {\\n uint16 e = uint16(Math.min(de, nd_));\\n r /= d ** e;\\n nd_ -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Calculates floor(x * (y / d)**n) with low precision.\\n */\\n function mulDivLowPrecision(uint256 x, uint256 y, uint256 d, uint16 n) internal pure returns (uint256) {\\n return uncheckedMulDiv(x, y, d, n, findMaxExponent(Math.max(y, d)));\\n }\\n\\n /**\\n * @dev Aggregated calculate multiplications.\\n * ```\\n * r = x*(y/d)^k\\n * = \\\\prod(x*(y/d)^{k_i}) \\\\ where \\\\ sum(k_i) = k\\n * ```\\n */\\n function uncheckedMulDiv(uint256 x, uint256 y, uint256 d, uint16 n, uint16 maxE) internal pure returns (uint256 r) {\\n unchecked {\\n r = x;\\n uint16 e;\\n while (n > 0) {\\n e = uint16(Math.min(n, maxE));\\n r = r.mulDiv(y ** e, d ** e);\\n n -= e;\\n }\\n }\\n }\\n\\n /**\\n * @dev Returns the largest exponent `k` where, x^k <= 2^256-1\\n * Note: n = Surd[2^256-1,k]\\n * = 10^( log2(2^256-1) / k * log10(2) )\\n */\\n function findMaxExponent(uint256 x) internal pure returns (uint16 k) {\\n if (x < 3) k = 255;\\n else if (x < 4) k = 128;\\n else if (x < 16) k = 64;\\n else if (x < 256) k = 32;\\n else if (x < 7132) k = 20;\\n else if (x < 11376) k = 19;\\n else if (x < 19113) k = 18;\\n else if (x < 34132) k = 17;\\n else if (x < 65536) k = 16;\\n else if (x < 137271) k = 15;\\n else if (x < 319558) k = 14;\\n else if (x < 847180) k = 13;\\n else if (x < 2642246) k = 12;\\n else if (x < 10134189) k = 11;\\n else if (x < 50859009) k = 10;\\n else if (x < 365284285) k = 9;\\n else if (x < 4294967296) k = 8;\\n else if (x < 102116749983) k = 7;\\n else if (x < 6981463658332) k = 6;\\n else if (x < 2586638741762875) k = 5;\\n else if (x < 18446744073709551616) k = 4;\\n else if (x < 48740834812604276470692695) k = 3;\\n else if (x < 340282366920938463463374607431768211456) k = 2;\\n else k = 1;\\n }\\n}\\n\",\"keccak256\":\"0x29f943cf7c61149bc9a624244901720fc3a349adb418555db1db2a045fcdfb70\",\"license\":\"MIT\"},\"src/libraries/pyth/PythConverter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport { Math } from \\\"@openzeppelin/contracts/utils/math/Math.sol\\\";\\nimport { PythStructs } from \\\"@pythnetwork/PythStructs.sol\\\";\\nimport { PowMath } from \\\"../math/PowMath.sol\\\";\\n\\nlibrary PythConverter {\\n error ErrExponentTooLarge(int32 expo);\\n error ErrComputedPriceTooLarge(int32 expo1, int32 expo2, int64 price1);\\n\\n /**\\n * @dev Multiples and converts the price into token wei with decimals `outDecimals`.\\n */\\n function mul(PythStructs.Price memory self, uint256 inpWei, int32 inpDecimals, int32 outDecimals)\\n internal\\n pure\\n returns (uint256 outWei)\\n {\\n return Math.mulDiv(\\n inpWei, PowMath.exp10(uint256(int256(self.price)), outDecimals + self.expo), PowMath.exp10(1, inpDecimals)\\n );\\n }\\n\\n /**\\n * @dev Inverses token price of tokenA/tokenB to tokenB/tokenA.\\n */\\n function inverse(PythStructs.Price memory self, int32 expo) internal pure returns (PythStructs.Price memory outPrice) {\\n uint256 exp10p1 = PowMath.exp10(1, -self.expo);\\n if (exp10p1 > uint256(type(int256).max)) revert ErrExponentTooLarge(self.expo);\\n uint256 exp10p2 = PowMath.exp10(1, -expo);\\n if (exp10p2 > uint256(type(int256).max)) revert ErrExponentTooLarge(expo);\\n int256 price = (int256(exp10p1) * int256(exp10p2)) / self.price;\\n if (price > type(int64).max) revert ErrComputedPriceTooLarge(self.expo, expo, self.price);\\n\\n return PythStructs.Price({ price: int64(price), conf: self.conf, expo: expo, publishTime: self.publishTime });\\n }\\n}\\n\",\"keccak256\":\"0x87ade16f6e931f6a3ead7706b0e550ee2c2cdee0be2f218488df93588e787f06\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"}},\"version\":1}", "nonce": 192559, @@ -32171,8 +42369,12 @@ "storageLayout": { "storage": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 70444, +======= + "astId": 101362, +>>>>>>> Stashed changes ======= "astId": 101362, >>>>>>> Stashed changes @@ -32183,8 +42385,12 @@ "type": "t_uint8" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 70447, +======= + "astId": 101365, +>>>>>>> Stashed changes ======= "astId": 101365, >>>>>>> Stashed changes @@ -32195,8 +42401,12 @@ "type": "t_bool" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 68917, +======= + "astId": 99835, +>>>>>>> Stashed changes ======= "astId": 99835, >>>>>>> Stashed changes @@ -32204,11 +42414,18 @@ "label": "_roles", "offset": 0, "slot": "1", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_mapping(t_bytes32,t_struct(RoleData)68912_storage)" }, { "astId": 69227, +======= + "type": "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)" + }, + { + "astId": 100145, +>>>>>>> Stashed changes ======= "type": "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)" }, @@ -32219,11 +42436,18 @@ "label": "_roleMembers", "offset": 0, "slot": "2", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_mapping(t_bytes32,t_struct(AddressSet)74796_storage)" }, { "astId": 86385, +======= + "type": "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)" + }, + { + "astId": 118300, +>>>>>>> Stashed changes ======= "type": "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)" }, @@ -32237,8 +42461,12 @@ "type": "t_array(t_uint256)50_storage" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 86389, +======= + "astId": 118304, +>>>>>>> Stashed changes ======= "astId": 118304, >>>>>>> Stashed changes @@ -32246,11 +42474,18 @@ "label": "_pyth", "offset": 0, "slot": "53", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_contract(IPyth)75202" }, { "astId": 86393, +======= + "type": "t_contract(IPyth)106120" + }, + { + "astId": 118308, +>>>>>>> Stashed changes ======= "type": "t_contract(IPyth)106120" }, @@ -32261,11 +42496,18 @@ "label": "_auction", "offset": 0, "slot": "54", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_contract(INSAuction)91351" }, { "astId": 86396, +======= + "type": "t_contract(INSAuction)123292" + }, + { + "astId": 118311, +>>>>>>> Stashed changes ======= "type": "t_contract(INSAuction)123292" }, @@ -32279,8 +42521,12 @@ "type": "t_uint256" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 86399, +======= + "astId": 118314, +>>>>>>> Stashed changes ======= "astId": 118314, >>>>>>> Stashed changes @@ -32291,8 +42537,12 @@ "type": "t_uint256" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 86402, +======= + "astId": 118317, +>>>>>>> Stashed changes ======= "astId": 118317, >>>>>>> Stashed changes @@ -32303,8 +42553,12 @@ "type": "t_uint256" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 86405, +======= + "astId": 118320, +>>>>>>> Stashed changes ======= "astId": 118320, >>>>>>> Stashed changes @@ -32315,8 +42569,12 @@ "type": "t_bytes32" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 86409, +======= + "astId": 118324, +>>>>>>> Stashed changes ======= "astId": 118324, >>>>>>> Stashed changes @@ -32324,11 +42582,18 @@ "label": "_dpDownScaler", "offset": 0, "slot": "59", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_struct(PeriodScaler)93662_storage" }, { "astId": 86414, +======= + "type": "t_struct(PeriodScaler)125607_storage" + }, + { + "astId": 118329, +>>>>>>> Stashed changes ======= "type": "t_struct(PeriodScaler)125607_storage" }, @@ -32342,8 +42607,12 @@ "type": "t_mapping(t_uint256,t_uint256)" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 86420, +======= + "astId": 118335, +>>>>>>> Stashed changes ======= "astId": 118335, >>>>>>> Stashed changes @@ -32351,11 +42620,18 @@ "label": "_dp", "offset": 0, "slot": "61", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)93585_storage)" }, { "astId": 86425, +======= + "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)" + }, + { + "astId": 118340, +>>>>>>> Stashed changes ======= "type": "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)" }, @@ -32369,8 +42645,12 @@ "type": "t_mapping(t_bytes32,t_uint256)" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 86430, +======= + "astId": 118345, +>>>>>>> Stashed changes ======= "astId": 118345, >>>>>>> Stashed changes @@ -32378,8 +42658,12 @@ "label": "_tierOverriding", "offset": 0, "slot": "63", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_mapping(t_bytes32,t_uint256)" +======= + "type": "t_mapping(t_bytes32,t_uint8)" +>>>>>>> Stashed changes ======= "type": "t_mapping(t_bytes32,t_uint8)" >>>>>>> Stashed changes @@ -32413,8 +42697,12 @@ "label": "bytes32", "numberOfBytes": "32" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "t_contract(INSAuction)91351": { +======= + "t_contract(INSAuction)123292": { +>>>>>>> Stashed changes ======= "t_contract(INSAuction)123292": { >>>>>>> Stashed changes @@ -32422,8 +42710,12 @@ "label": "contract INSAuction", "numberOfBytes": "20" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "t_contract(IPyth)75202": { +======= + "t_contract(IPyth)106120": { +>>>>>>> Stashed changes ======= "t_contract(IPyth)106120": { >>>>>>> Stashed changes @@ -32438,8 +42730,12 @@ "numberOfBytes": "32", "value": "t_bool" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "t_mapping(t_bytes32,t_struct(AddressSet)74796_storage)": { +======= + "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)": { +>>>>>>> Stashed changes ======= "t_mapping(t_bytes32,t_struct(AddressSet)105714_storage)": { >>>>>>> Stashed changes @@ -32447,10 +42743,16 @@ "key": "t_bytes32", "label": "mapping(bytes32 => struct EnumerableSet.AddressSet)", "numberOfBytes": "32", +<<<<<<< Updated upstream <<<<<<< Updated upstream "value": "t_struct(AddressSet)74796_storage" }, "t_mapping(t_bytes32,t_struct(RoleData)68912_storage)": { +======= + "value": "t_struct(AddressSet)105714_storage" + }, + "t_mapping(t_bytes32,t_struct(RoleData)99830_storage)": { +>>>>>>> Stashed changes ======= "value": "t_struct(AddressSet)105714_storage" }, @@ -32460,10 +42762,16 @@ "key": "t_bytes32", "label": "mapping(bytes32 => struct AccessControl.RoleData)", "numberOfBytes": "32", +<<<<<<< Updated upstream <<<<<<< Updated upstream "value": "t_struct(RoleData)68912_storage" }, "t_mapping(t_bytes32,t_struct(TimestampWrapper)93585_storage)": { +======= + "value": "t_struct(RoleData)99830_storage" + }, + "t_mapping(t_bytes32,t_struct(TimestampWrapper)125530_storage)": { +>>>>>>> Stashed changes ======= "value": "t_struct(RoleData)99830_storage" }, @@ -32473,8 +42781,12 @@ "key": "t_bytes32", "label": "mapping(bytes32 => struct TimestampWrapper)", "numberOfBytes": "32", +<<<<<<< Updated upstream <<<<<<< Updated upstream "value": "t_struct(TimestampWrapper)93585_storage" +======= + "value": "t_struct(TimestampWrapper)125530_storage" +>>>>>>> Stashed changes ======= "value": "t_struct(TimestampWrapper)125530_storage" >>>>>>> Stashed changes @@ -32500,8 +42812,12 @@ "numberOfBytes": "32", "value": "t_uint256" }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "t_struct(AddressSet)74796_storage": { +======= + "t_struct(AddressSet)105714_storage": { +>>>>>>> Stashed changes ======= "t_struct(AddressSet)105714_storage": { >>>>>>> Stashed changes @@ -32510,8 +42826,12 @@ "numberOfBytes": "64", "members": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 74795, +======= + "astId": 105713, +>>>>>>> Stashed changes ======= "astId": 105713, >>>>>>> Stashed changes @@ -32519,12 +42839,20 @@ "label": "_inner", "offset": 0, "slot": "0", +<<<<<<< Updated upstream <<<<<<< Updated upstream "type": "t_struct(Set)74481_storage" } ] }, "t_struct(PeriodScaler)93662_storage": { +======= + "type": "t_struct(Set)105399_storage" + } + ] + }, + "t_struct(PeriodScaler)125607_storage": { +>>>>>>> Stashed changes ======= "type": "t_struct(Set)105399_storage" } @@ -32537,8 +42865,12 @@ "numberOfBytes": "32", "members": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 93659, +======= + "astId": 125604, +>>>>>>> Stashed changes ======= "astId": 125604, >>>>>>> Stashed changes @@ -32549,8 +42881,12 @@ "type": "t_uint192" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 93661, +======= + "astId": 125606, +>>>>>>> Stashed changes ======= "astId": 125606, >>>>>>> Stashed changes @@ -32562,8 +42898,12 @@ } ] }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "t_struct(RoleData)68912_storage": { +======= + "t_struct(RoleData)99830_storage": { +>>>>>>> Stashed changes ======= "t_struct(RoleData)99830_storage": { >>>>>>> Stashed changes @@ -32572,8 +42912,12 @@ "numberOfBytes": "64", "members": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 68909, +======= + "astId": 99827, +>>>>>>> Stashed changes ======= "astId": 99827, >>>>>>> Stashed changes @@ -32584,8 +42928,12 @@ "type": "t_mapping(t_address,t_bool)" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 68911, +======= + "astId": 99829, +>>>>>>> Stashed changes ======= "astId": 99829, >>>>>>> Stashed changes @@ -32597,8 +42945,12 @@ } ] }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "t_struct(Set)74481_storage": { +======= + "t_struct(Set)105399_storage": { +>>>>>>> Stashed changes ======= "t_struct(Set)105399_storage": { >>>>>>> Stashed changes @@ -32607,8 +42959,12 @@ "numberOfBytes": "64", "members": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 74476, +======= + "astId": 105394, +>>>>>>> Stashed changes ======= "astId": 105394, >>>>>>> Stashed changes @@ -32619,8 +42975,12 @@ "type": "t_array(t_bytes32)dyn_storage" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 74480, +======= + "astId": 105398, +>>>>>>> Stashed changes ======= "astId": 105398, >>>>>>> Stashed changes @@ -32632,8 +42992,12 @@ } ] }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "t_struct(TimestampWrapper)93585_storage": { +======= + "t_struct(TimestampWrapper)125530_storage": { +>>>>>>> Stashed changes ======= "t_struct(TimestampWrapper)125530_storage": { >>>>>>> Stashed changes @@ -32642,8 +43006,12 @@ "numberOfBytes": "64", "members": [ { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 93582, +======= + "astId": 125527, +>>>>>>> Stashed changes ======= "astId": 125527, >>>>>>> Stashed changes @@ -32654,8 +43022,12 @@ "type": "t_uint256" }, { +<<<<<<< Updated upstream <<<<<<< Updated upstream "astId": 93584, +======= + "astId": 125529, +>>>>>>> Stashed changes ======= "astId": 125529, >>>>>>> Stashed changes @@ -32689,8 +43061,12 @@ } } }, +<<<<<<< Updated upstream <<<<<<< Updated upstream "timestamp": 1708497365, +======= + "timestamp": 1710234885, +>>>>>>> Stashed changes ======= "timestamp": 1710234885, >>>>>>> Stashed changes