From 03a887148135a1995e9b49aceebec80f1c76ed62 Mon Sep 17 00:00:00 2001 From: dappsar Date: Sat, 25 Nov 2023 20:32:35 -0300 Subject: [PATCH 1/8] removed code quality in push to main --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 001fe894..11eef44b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -13,7 +13,7 @@ name: "CodeQL" on: push: - branches: [ "main", "develop" ] + branches: [ "develop" ] pull_request: # The branches below must be a subset of the branches above branches: [ "main" ] From 4065647f96d5098e4b1b2e2b92e3d84663efeac3 Mon Sep 17 00:00:00 2001 From: dappsar Date: Sun, 26 Nov 2023 23:14:24 -0300 Subject: [PATCH 2/8] added uuid to generate offerId --- package-lock.json | 53 ++++++++++++++++++++++++++++++++++++++++++++--- package.json | 1 + 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a8cec7d9..9144c894 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,6 +47,7 @@ "swr": "^2.0.3", "url-loader": "^4.1.1", "use-local-storage": "^2.3.6", + "uuid": "^9.0.1", "wagmi": "^0.9.2", "web3modal": "^1.9.9" }, @@ -7339,6 +7340,15 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "peer": true }, + "node_modules/@wagmi/connectors/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@wagmi/core": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-1.4.5.tgz", @@ -8481,6 +8491,14 @@ "url": "https://opencollective.com/preact" } }, + "node_modules/@web3-onboard/coinbase/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@web3-onboard/common": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@web3-onboard/common/-/common-2.3.3.tgz", @@ -15547,6 +15565,15 @@ "node": ">=4" } }, + "node_modules/hardhat/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -16566,6 +16593,14 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, + "node_modules/jayson/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -20832,6 +20867,14 @@ "utf-8-validate": "^5.0.2" } }, + "node_modules/rpc-websockets/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/rpc-websockets/node_modules/ws": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", @@ -23411,9 +23454,13 @@ } }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } diff --git a/package.json b/package.json index 67654864..74286f1d 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "swr": "^2.0.3", "url-loader": "^4.1.1", "use-local-storage": "^2.3.6", + "uuid": "^9.0.1", "wagmi": "^0.9.2", "web3modal": "^1.9.9" }, From d2eae93d6dc1812d576ef8b8f6bd47aec3176345 Mon Sep 17 00:00:00 2001 From: dappsar Date: Sun, 26 Nov 2023 23:15:18 -0300 Subject: [PATCH 3/8] updated abi offers contract --- src/context/Web3Context.js | 2 +- src/context/Web3ContextNew.js | 3 +- .../GammaOffers.v1.sol/NofGammaOffersV1.json | 792 ---------------- .../IGammaCardsContract.json | 2 +- .../GammaOffers.v3.sol/NofGammaOffersV3.json | 895 ++++++++++++++++++ 5 files changed, 898 insertions(+), 796 deletions(-) delete mode 100644 src/context/abis/GammaOffers.v1.sol/NofGammaOffersV1.json rename src/context/abis/{GammaOffers.v1.sol => GammaOffers.v3.sol}/IGammaCardsContract.json (97%) create mode 100644 src/context/abis/GammaOffers.v3.sol/NofGammaOffersV3.json diff --git a/src/context/Web3Context.js b/src/context/Web3Context.js index 3ff7870c..dc403ef8 100644 --- a/src/context/Web3Context.js +++ b/src/context/Web3Context.js @@ -7,7 +7,7 @@ import daiAbi from './abis/TestDAI.v2.sol/NofTestDAIV2.json' import alphaAbi from './abis/Alpha.v2.sol/NofAlphaV2.json' import gammaPacksAbi from './abis/GammaPacks.v2.sol/NofGammaPacksV2.json' import gammaCardsAbi from './abis/GammaCards.v4.sol/NofGammaCardsV4.json' -import gammaOffersAbi from './abis/GammaOffers.v1.sol/NofGammaOffersV1.json' +import gammaOffersAbi from './abis/GammaOffers.v3.sol/NofGammaOffersV3.json' import { CONTRACTS, NETWORK } from '../config' const initialState = { diff --git a/src/context/Web3ContextNew.js b/src/context/Web3ContextNew.js index e3aae1ec..407dd83c 100644 --- a/src/context/Web3ContextNew.js +++ b/src/context/Web3ContextNew.js @@ -13,13 +13,12 @@ import daiAbi from './abis/TestDAI.v2.sol/NofTestDAIV2.json' import alphaAbi from './abis/Alpha.v2.sol/NofAlphaV2.json' import gammaPacksAbi from './abis/GammaPacks.v2.sol/NofGammaPacksV2.json' import gammaCardsAbi from './abis/GammaCards.v4.sol/NofGammaCardsV4.json' -import gammaOffersAbi from './abis/GammaOffers.v1.sol/NofGammaOffersV1.json' +import gammaOffersAbi from './abis/GammaOffers.v3.sol/NofGammaOffersV3.json' import { CONTRACTS, NETWORK, WalletConnectProjectId } from '../config' import brLocales from '../../public/locales/br/web3_onboard.json' import enLocales from '../../public/locales/en/web3_onboard.json' import esLocales from '../../public/locales/es/web3_onboard.json' -// import { useSettingsContext } from '../hooks' //---------------------------------------------------------- diff --git a/src/context/abis/GammaOffers.v1.sol/NofGammaOffersV1.json b/src/context/abis/GammaOffers.v1.sol/NofGammaOffersV1.json deleted file mode 100644 index ccfac431..00000000 --- a/src/context/abis/GammaOffers.v1.sol/NofGammaOffersV1.json +++ /dev/null @@ -1,792 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NofGammaOffersV1", - "sourceName": "contracts/gamma/GammaOffers.v1.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_cardsContract", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newGammaCardsContract", - "type": "address" - } - ], - "name": "NewGammaCardsContract", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - } - ], - "name": "NewOfferCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "NewOwnerAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "OfferRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "OwnerRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "RemovedAllOffers", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "_value", - "type": "bool" - } - ], - "name": "changeRemoveCardinInventoryWhenOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumberWanted", - "type": "uint8" - }, - { - "internalType": "address", - "name": "offerWallet", - "type": "address" - }, - { - "internalType": "uint8", - "name": "offerCardNumber", - "type": "uint8" - } - ], - "name": "confirmOfferExchange", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - } - ], - "name": "createOffer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - } - ], - "name": "createOfferWithoUser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "deleteAllOffers", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "gammaCardsContract", - "outputs": [ - { - "internalType": "contract IGammaCardsContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "getOfferByIndex", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "internalType": "struct NofGammaOffersV1.Offer", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - } - ], - "name": "getOfferByOfferId", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "internalType": "struct NofGammaOffersV1.Offer", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "getOfferByUserAndCardNumber", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "internalType": "struct NofGammaOffersV1.Offer", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getOffers", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "internalType": "struct NofGammaOffersV1.Offer[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "getOffersByCardNumber", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "internalType": "struct NofGammaOffersV1.Offer[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "getOffersByCardNumberCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getOffersByUser", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "uint8[]", - "name": "wantedCardNumbers", - "type": "uint8[]" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "internalType": "struct NofGammaOffersV1.Offer[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - } - ], - "name": "getOffersByUserCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getOffersCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "hasOffer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "offers", - "outputs": [ - { - "internalType": "uint256", - "name": "offerId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "name": "offersByCardNumberCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "offersByUserCounter", - "outputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "owners", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "removeOfferByCardNumber", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "internalType": "uint8", - "name": "cardNumber", - "type": "uint8" - } - ], - "name": "removeOfferByUserAndCardNumber", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_ownerToRemove", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_gammaCardsContract", - "type": "address" - } - ], - "name": "setGammaCardsContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxCardNumbersAllowed", - "type": "uint256" - } - ], - "name": "setMaxCardNumbersAllowed", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxOffersAllowed", - "type": "uint256" - } - ], - "name": "setMaxOffersAllowed", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxOffersByUserAllowed", - "type": "uint256" - } - ], - "name": "setMaxOffersByUserAllowed", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405261138860035560056004819055607890556006805460ff191690553480156200002c57600080fd5b5060405162002d6e38038062002d6e8339810160408190526200004f91620000f5565b6200005a33620000a5565b600180546001600160a01b0319166001600160a01b0392909216919091178155336000908152600260205260409020805460ff19908116909217905560068054909116905562000127565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200010857600080fd5b81516001600160a01b03811681146200012057600080fd5b9392505050565b612c3780620001376000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638400a1891161010f578063cf86f8e5116100a2578063e359a0a111610071578063e359a0a114610460578063e5e5f73214610473578063f2fde38b14610486578063ff4d62a31461049957600080fd5b8063cf86f8e514610412578063d250f03a1461041a578063d827a8f41461042d578063e02f97231461044d57600080fd5b80639f915069116100de5780639f915069146103c6578063a2e9f13a146103d9578063c08029e7146103ec578063ce7483d5146103ff57600080fd5b80638400a189146103425780638a72ea6a146103555780638da5cb5b1461038e5780639618b333146103b357600080fd5b80633ee992ee116101875780635f3a6298116101565780635f3a6298146102e75780637065cb4814610307578063715018a61461031a5780637594a6ed1461032257600080fd5b80633ee992ee146102995780634c7a7ad3146102ae57806358e57ebb146102c15780635bbfbfd6146102d457600080fd5b80632edb5fcf116101c35780632edb5fcf14610258578063322fba271461026b5780633808dfe7146102735780633a0270731461028657600080fd5b8063022914a7146101ea5780630cdb311714610222578063173825d914610243575b600080fd5b61020d6101f83660046126fe565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102356102303660046126fe565b6104ac565b604051908152602001610219565b6102566102513660046126fe565b6104fd565b005b61020d61026636600461272a565b61067a565b610256610737565b61025661028136600461275d565b6108e4565b61020d610294366004612776565b610918565b6102a1610926565b6040516102199190612812565b6102566102bc3660046126fe565b610a1f565b6102566102cf366004612882565b610ac2565b61020d6102e236600461272a565b610b04565b6102fa6102f536600461275d565b610b46565b604051610219919061289f565b6102566103153660046126fe565b610c9e565b610256610db0565b6102356103303660046126fe565b600a6020526000908152604090205481565b6102a1610350366004612776565b610dc4565b61036861036336600461275d565b610ecd565b6040805193845260ff90921660208401526001600160a01b031690820152606001610219565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610219565b6102a16103c13660046126fe565b610f0f565b6102fa6103d436600461272a565b611036565b6102566103e736600461296a565b611205565b6102566103fa3660046129b8565b611214565b61023561040d366004612776565b611484565b61023561149c565b60015461039b906001600160a01b031681565b61023561043b366004612776565b600b6020526000908152604090205481565b61025661045b36600461275d565b6114ac565b6102fa61046e36600461275d565b6114e0565b61025661048136600461275d565b611607565b6102566104943660046126fe565b61163b565b6102566104a7366004612a0c565b6116b4565b60006001600160a01b0382166104dd5760405162461bcd60e51b81526004016104d490612a6a565b60405180910390fd5b6001600160a01b0382166000908152600a60205260409020545b92915050565b3360009081526002602052604090205460ff1661052c5760405162461bcd60e51b81526004016104d490612a94565b6001600160a01b0381166105525760405162461bcd60e51b81526004016104d490612a6a565b336001600160a01b038216036105ba5760405162461bcd60e51b815260206004820152602760248201527f596f752063616e6e6f742072656d6f766520796f757273656c6620617320616e6044820152661037bbb732b91760c91b60648201526084016104d4565b6001600160a01b03811660009081526002602052604090205460ff166106225760405162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420616e206f776e65722e000000000000000060448201526064016104d4565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da91015b60405180910390a150565b60006001600160a01b0383166106a25760405162461bcd60e51b81526004016104d490612a6a565b60005b6001600160a01b0384166000908152600a602052604090205481101561072d576001600160a01b0384166000908152600860205260409020805460ff85169190839081106106f5576106f5612ad7565b600091825260209091206001600490920201015460ff160361071b5760019150506104f7565b8061072581612b03565b9150506106a5565b5060009392505050565b3360009081526002602052604090205460ff166107665760405162461bcd60e51b81526004016104d490612a94565b60005b6007548110156108a757600860006007838154811061078a5761078a612ad7565b60009182526020808320600360049093020191909101546001600160a01b0316835282019290925260400181206107c09161251e565b61080a600a6000600784815481106107da576107da612ad7565b60009182526020808320600492909202909101600301546001600160a01b03168352820192909252604001812055565b600960006007838154811061082157610821612ad7565b600091825260208083206001600490930201919091015460ff16835282019290925260400181206108519161251e565b610895600b60006007848154811061086b5761086b612ad7565b600091825260208083206004929092029091016001015460ff168352820192909252604001812055565b8061089f81612b03565b915050610769565b506000600c556108b96007600061251e565b6040517f550d27073d0d6d364815a66fed9ba2bcde6c0406944f87d0cb3e538118faef4a90600090a1565b3360009081526002602052604090205460ff166109135760405162461bcd60e51b81526004016104d490612a94565b600455565b60006104f7338360006116f3565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015610a16576000848152602090819020604080516080810182526004860290920180548352600181015460ff168385015260028101805483518187028101870185528181529495929493860193928301828280156109e857602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116109b95790505b5050509183525050600391909101546001600160a01b0316602091820152908252600192909201910161094a565b50505050905090565b3360009081526002602052604090205460ff16610a4e5760405162461bcd60e51b81526004016104d490612a94565b6001600160a01b038116610a745760405162461bcd60e51b81526004016104d490612a6a565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa9060200161066f565b3360009081526002602052604090205460ff16610af15760405162461bcd60e51b81526004016104d490612a94565b6006805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610b335760405162461bcd60e51b81526004016104d490612a94565b610b3f838360006116f3565b9392505050565b610b4e61253f565b60005b600c54811015610c67578260078281548110610b6f57610b6f612ad7565b90600052602060002090600402016000015403610c555760078181548110610b9957610b99612ad7565b600091825260209182902060408051608081018252600490930290910180548352600181015460ff16838501526002810180548351818702810187018552818152949592949386019392830182828015610c3057602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610c015790505b5050509183525050600391909101546001600160a01b03166020909101529392505050565b80610c5f81612b03565b915050610b51565b5050604080516080810182526000808252602080830182905283518281529081018452928201929092526060810191909152919050565b3360009081526002602052604090205460ff16610ccd5760405162461bcd60e51b81526004016104d490612a94565b6001600160a01b038116610cf35760405162461bcd60e51b81526004016104d490612a6a565b6001600160a01b03811660009081526002602052604090205460ff1615610d5c5760405162461bcd60e51b815260206004820152601c60248201527f4164647265737320697320616c726561647920616e206f776e65722e0000000060448201526064016104d4565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527f6e4e2a7c0e1576d48aeabd633d094f622d4f046286fec8b9045dd7f5c9fb087d910161066f565b610db86118e2565b610dc2600061193c565b565b60ff81166000908152600960209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610ec2576000848152602090819020604080516080810182526004860290920180548352600181015460ff16838501526002810180548351818702810187018552818152949592949386019392830182828015610e9457602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e655790505b5050509183525050600391909101546001600160a01b03166020918201529082526001929092019101610df6565b505050509050919050565b60078181548110610edd57600080fd5b600091825260209091206004909102018054600182015460039092015490925060ff909116906001600160a01b031683565b60606001600160a01b038216610f375760405162461bcd60e51b81526004016104d490612a6a565b6001600160a01b038216600090815260086020908152604080832080548251818502810185019093528083529193909284015b82821015610ec2576000848152602090819020604080516080810182526004860290920180548352600181015460ff1683850152600281018054835181870281018701855281815294959294938601939283018282801561100857602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610fd95790505b5050509183525050600391909101546001600160a01b03166020918201529082526001929092019101610f6a565b61103e61253f565b6001600160a01b0383166110645760405162461bcd60e51b81526004016104d490612a6a565b60005b6001600160a01b0384166000908152600a60205260409020548110156111cd576001600160a01b0384166000908152600860205260409020805460ff85169190839081106110b7576110b7612ad7565b600091825260209091206001600490920201015460ff16036111bb576001600160a01b03841660009081526008602052604090208054829081106110fd576110fd612ad7565b600091825260209182902060408051608081018252600490930290910180548352600181015460ff1683850152600281018054835181870281018701855281815294959294938601939283018282801561119457602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116111655790505b5050509183525050600391909101546001600160a01b031660209091015291506104f79050565b806111c581612b03565b915050611067565b505060408051608081018252600080825260208083018290528351828152908101845292820192909252606081019190915292915050565b61121033838361198c565b5050565b60015460405163568b427d60e11b81526001600160a01b03868116600483015260ff80871660248401528582166044840152841660648301529091169063ad1684fa90608401600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c891506112be9087908590600401612b1c565b6020604051808303816000875af11580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113019190612b38565b61134d5760405162461bcd60e51b815260206004820152601f60248201527f45786368616e6765206572726f7220776974682077616c6c65742066726f6d0060448201526064016104d4565b60015460405163117ece1960e31b81526001600160a01b0390911690638bf670c89061137f9085908790600401612b1c565b6020604051808303816000875af115801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c29190612b38565b61140e5760405162461bcd60e51b815260206004820152601c60248201527f45786368616e6765206572726f20776974682077616c6c657420746f0000000060448201526064016104d4565b600061141c838360016116f3565b90508061147d5760405162461bcd60e51b815260206004820152602960248201527f4572726f722064656c6574696e67206f66666572206166746572207472616e7360448201526866657220636172647360b81b60648201526084016104d4565b5050505050565b60ff81166000908152600b60205260408120546104f7565b60006114a7600c5490565b905090565b3360009081526002602052604090205460ff166114db5760405162461bcd60e51b81526004016104d490612a94565b600555565b6114e861253f565b60075482106115395760405162461bcd60e51b815260206004820152601760248201527f4f6666657220496420646f6573206e6f7420657869737400000000000000000060448201526064016104d4565b6007828154811061154c5761154c612ad7565b600091825260209182902060408051608081018252600490930290910180548352600181015460ff168385015260028101805483518187028101870185528181529495929493860193928301828280156115e357602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116115b45790505b5050509183525050600391909101546001600160a01b031660209091015292915050565b3360009081526002602052604090205460ff166116365760405162461bcd60e51b81526004016104d490612a94565b600355565b6116436118e2565b6001600160a01b0381166116a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d4565b6116b18161193c565b50565b3360009081526002602052604090205460ff166116e35760405162461bcd60e51b81526004016104d490612a94565b6116ee83838361198c565b505050565b60006001600160a01b03841661171b5760405162461bcd60e51b81526004016104d490612a6a565b6001600160a01b0384166000908152600860209081526040808320600a9092528220549091805b828110156118d7578660ff1684828154811061176057611760612ad7565b600091825260209091206001600490920201015460ff16036118c557600084828154811061179057611790612ad7565b90600052602060002090600402016000015490506117ae8983612020565b6117b88882612192565b6117c18161230b565b506001600160a01b0389166000908152600a602052604090206117e3906124c7565b60ff88166000908152600b602052604090206117fe906124c7565b611808600c6124c7565b6006546001935060ff16801561181c575086155b1561188657600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f9290611853908c908c90600401612b1c565b600060405180830381600087803b15801561186d57600080fd5b505af1158015611881573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f589896040516118b7929190612b1c565b60405180910390a1506118d7565b806118cf81612b03565b915050611742565b509695505050505050565b6000546001600160a01b03163314610dc25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546001600160a01b03166119e45760405162461bcd60e51b815260206004820152601b60248201527f47616d6d614361726473436f6e7472616374206e6f74207365742e000000000060448201526064016104d4565b6004546001600160a01b0384166000908152600a602052604090205410611a625760405162461bcd60e51b815260206004820152602c60248201527f5573657220686173207265616368656420746865206d6178696d756d20616c6c60448201526b37bbb2b21037b33332b9399760a11b60648201526084016104d4565b600354600c5410611acc5760405162461bcd60e51b815260206004820152602e60248201527f546f74616c206f66666572732068617665207265616368656420746865206d6160448201526d3c34b6bab69030b63637bbb2b21760911b60648201526084016104d4565b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c890611aff9087908790600401612b1c565b6020604051808303816000875af1158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190612b38565b905080611b915760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f742068617665207468617420636172642e0000000060448201526064016104d4565b60005b82518160ff161015611c3a578360ff16838260ff1681518110611bb957611bb9612ad7565b602002602001015160ff1603611c285760405162461bcd60e51b815260206004820152602e60248201527f54686520636172644e756d6265722063616e6e6f7420626520696e2077616e7460448201526d32b221b0b932273ab6b132b9399760911b60648201526084016104d4565b80611c3281612b55565b915050611b94565b506000611c478585611036565b805190915015611cb75760405162461bcd60e51b815260206004820152603560248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152743ab6b132b91030b63932b0b23c9032bc34b9ba399760591b60648201526084016104d4565b6001600160a01b0385166000908152600a602052604090208054600101905560ff84166000908152600b6020526040902080546001019055611cfd600c80546001019055565b6000611d08600c5490565b6040805160808101825282815260ff88811660208084019182529383018981526001600160a01b038c1660608501526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490920291820190815592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6898201805460ff1916919095161790935551805195965092949093611de2937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909301920190612573565b5060609190910151600390910180546001600160a01b0319166001600160a01b039283161790558616600090815260086020526040902060078054611e2990600190612b74565b81548110611e3957611e39612ad7565b6000918252602080832084546001818101875595855291909320600492830290930180549190920290920191825582810154928201805460ff191660ff9094169390931790925560028083018054611e949284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b0390921691909117905560ff8516600090815260096020526040902060078054611edc90600190612b74565b81548110611eec57611eec612ad7565b6000918252602080832084546001818101875595855291909320600492830290930180549190920290920191825582810154928201805460ff191660ff9094169390931790925560028083018054611f479284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b0390921691909117905560065460ff1615611fdd57600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac90611faa9089908990600401612b1c565b600060405180830381600087803b158015611fc457600080fd5b505af1158015611fd8573d6000803e3d6000fd5b505050505b7f31a893ae21b5459c9a34e0be8a4fdf6803ec101bc80e2903766025d86cbe915986868660405161201093929190612b87565b60405180910390a1505050505050565b6001600160a01b0382166000908152600860205260409020805482106120785760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016104d4565b805461208690600190612b74565b821015612137578054819061209d90600190612b74565b815481106120ad576120ad612ad7565b90600052602060002090600402018183815481106120cd576120cd612ad7565b600091825260209091208254600490920201908155600180830154908201805460ff191660ff909216919091179055600280830180546121109284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b039092169190911790555b8080548061214757612147612beb565b60008281526020812060046000199093019283020181815560018101805460ff19169055906121796002830182612667565b5060030180546001600160a01b03191690559055505050565b60ff82166000908152600960205260408120905b815481101561230557828282815481106121c2576121c2612ad7565b906000526020600020906004020160000154036122f35781546121e790600190612b74565b81101561229857815482906121fe90600190612b74565b8154811061220e5761220e612ad7565b906000526020600020906004020182828154811061222e5761222e612ad7565b600091825260209091208254600490920201908155600180830154908201805460ff191660ff909216919091179055600280830180546122719284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b039092169190911790555b818054806122a8576122a8612beb565b60008281526020812060046000199093019283020181815560018101805460ff19169055906122da6002830182612667565b5060030180546001600160a01b03191690559055612305565b806122fd81612b03565b9150506121a6565b50505050565b600080805b6007548110156124c0576007548110801561234e5750836007828154811061233a5761233a612ad7565b906000526020600020906004020160000154145b156124ae576007818154811061236657612366612ad7565b60009182526020822060049091020181815560018101805460ff19169055906123926002830182612667565b5060030180546001600160a01b0319169055600780546123b490600190612b74565b815481106123c4576123c4612ad7565b9060005260206000209060040201600782815481106123e5576123e5612ad7565b600091825260209091208254600490920201908155600180830154908201805460ff191660ff909216919091179055600280830180546124289284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b03909216919091179055600780548061245f5761245f612beb565b60008281526020812060046000199093019283020181815560018101805460ff19169055906124916002830182612667565b5060030180546001600160a01b03191690559055600191506124c0565b806124b881612b03565b915050612310565b5092915050565b8054806125165760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f77000000000060448201526064016104d4565b600019019055565b50805460008255600402906000526020600020908101906116b1919061268c565b604051806080016040528060008152602001600060ff1681526020016060815260200160006001600160a01b031681525090565b82805482825590600052602060002090601f016020900481019282156126095791602002820160005b838211156125da57835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261259c565b80156126075782816101000a81549060ff02191690556001016020816000010492830192600103026125da565b505b506126159291506126cd565b5090565b82805482825590600052602060002090601f0160209004810192821561260957600052602060002091601f016020900482015b8281111561260957825482559160010191906001019061264c565b50805460008255601f0160209004906000526020600020908101906116b191906126cd565b8082111561261557600080825560018201805460ff191690556126b26002830182612667565b506003810180546001600160a01b031916905560040161268c565b5b8082111561261557600081556001016126ce565b80356001600160a01b03811681146126f957600080fd5b919050565b60006020828403121561271057600080fd5b610b3f826126e2565b803560ff811681146126f957600080fd5b6000806040838503121561273d57600080fd5b612746836126e2565b915061275460208401612719565b90509250929050565b60006020828403121561276f57600080fd5b5035919050565b60006020828403121561278857600080fd5b610b3f82612719565b6000608083018251845260208084015160ff80821683880152604086015191506080604088015283825180865260a0890191508484019550600093505b808410156127f0578551831682529484019460019390930192908401906127ce565b506060968701516001600160a01b031697909601969096525092949350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561286757603f19888603018452612855858351612791565b94509285019290850190600101612839565b5092979650505050505050565b80151581146116b157600080fd5b60006020828403121561289457600080fd5b8135610b3f81612874565b602081526000610b3f6020830184612791565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126128d957600080fd5b8135602067ffffffffffffffff808311156128f6576128f66128b2565b8260051b604051601f19603f8301168101818110848211171561291b5761291b6128b2565b60405293845285810183019383810192508785111561293957600080fd5b83870191505b8482101561295f5761295082612719565b8352918301919083019061293f565b979650505050505050565b6000806040838503121561297d57600080fd5b61298683612719565b9150602083013567ffffffffffffffff8111156129a257600080fd5b6129ae858286016128c8565b9150509250929050565b600080600080608085870312156129ce57600080fd5b6129d7856126e2565b93506129e560208601612719565b92506129f3604086016126e2565b9150612a0160608601612719565b905092959194509250565b600080600060608486031215612a2157600080fd5b612a2a846126e2565b9250612a3860208501612719565b9150604084013567ffffffffffffffff811115612a5457600080fd5b612a60868287016128c8565b9150509250925092565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b60208082526023908201527f4f6e6c79206f776e6572732063616e2063616c6c20746869732066756e63746960408201526237b71760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b1557612b15612aed565b5060010190565b6001600160a01b0392909216825260ff16602082015260400190565b600060208284031215612b4a57600080fd5b8151610b3f81612874565b600060ff821660ff8103612b6b57612b6b612aed565b60010192915050565b818103818111156104f7576104f7612aed565b60006060820160018060a01b0386168352602060ff8087168286015260606040860152828651808552608087019150838801945060005b81811015612bdc578551841683529484019491840191600101612bbe565b50909998505050505050505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a1a8d86267755cfcacaeced620d541bc03e5e6e36b6a48d0962f3ca45bc71cca64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80638400a1891161010f578063cf86f8e5116100a2578063e359a0a111610071578063e359a0a114610460578063e5e5f73214610473578063f2fde38b14610486578063ff4d62a31461049957600080fd5b8063cf86f8e514610412578063d250f03a1461041a578063d827a8f41461042d578063e02f97231461044d57600080fd5b80639f915069116100de5780639f915069146103c6578063a2e9f13a146103d9578063c08029e7146103ec578063ce7483d5146103ff57600080fd5b80638400a189146103425780638a72ea6a146103555780638da5cb5b1461038e5780639618b333146103b357600080fd5b80633ee992ee116101875780635f3a6298116101565780635f3a6298146102e75780637065cb4814610307578063715018a61461031a5780637594a6ed1461032257600080fd5b80633ee992ee146102995780634c7a7ad3146102ae57806358e57ebb146102c15780635bbfbfd6146102d457600080fd5b80632edb5fcf116101c35780632edb5fcf14610258578063322fba271461026b5780633808dfe7146102735780633a0270731461028657600080fd5b8063022914a7146101ea5780630cdb311714610222578063173825d914610243575b600080fd5b61020d6101f83660046126fe565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102356102303660046126fe565b6104ac565b604051908152602001610219565b6102566102513660046126fe565b6104fd565b005b61020d61026636600461272a565b61067a565b610256610737565b61025661028136600461275d565b6108e4565b61020d610294366004612776565b610918565b6102a1610926565b6040516102199190612812565b6102566102bc3660046126fe565b610a1f565b6102566102cf366004612882565b610ac2565b61020d6102e236600461272a565b610b04565b6102fa6102f536600461275d565b610b46565b604051610219919061289f565b6102566103153660046126fe565b610c9e565b610256610db0565b6102356103303660046126fe565b600a6020526000908152604090205481565b6102a1610350366004612776565b610dc4565b61036861036336600461275d565b610ecd565b6040805193845260ff90921660208401526001600160a01b031690820152606001610219565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610219565b6102a16103c13660046126fe565b610f0f565b6102fa6103d436600461272a565b611036565b6102566103e736600461296a565b611205565b6102566103fa3660046129b8565b611214565b61023561040d366004612776565b611484565b61023561149c565b60015461039b906001600160a01b031681565b61023561043b366004612776565b600b6020526000908152604090205481565b61025661045b36600461275d565b6114ac565b6102fa61046e36600461275d565b6114e0565b61025661048136600461275d565b611607565b6102566104943660046126fe565b61163b565b6102566104a7366004612a0c565b6116b4565b60006001600160a01b0382166104dd5760405162461bcd60e51b81526004016104d490612a6a565b60405180910390fd5b6001600160a01b0382166000908152600a60205260409020545b92915050565b3360009081526002602052604090205460ff1661052c5760405162461bcd60e51b81526004016104d490612a94565b6001600160a01b0381166105525760405162461bcd60e51b81526004016104d490612a6a565b336001600160a01b038216036105ba5760405162461bcd60e51b815260206004820152602760248201527f596f752063616e6e6f742072656d6f766520796f757273656c6620617320616e6044820152661037bbb732b91760c91b60648201526084016104d4565b6001600160a01b03811660009081526002602052604090205460ff166106225760405162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420616e206f776e65722e000000000000000060448201526064016104d4565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da91015b60405180910390a150565b60006001600160a01b0383166106a25760405162461bcd60e51b81526004016104d490612a6a565b60005b6001600160a01b0384166000908152600a602052604090205481101561072d576001600160a01b0384166000908152600860205260409020805460ff85169190839081106106f5576106f5612ad7565b600091825260209091206001600490920201015460ff160361071b5760019150506104f7565b8061072581612b03565b9150506106a5565b5060009392505050565b3360009081526002602052604090205460ff166107665760405162461bcd60e51b81526004016104d490612a94565b60005b6007548110156108a757600860006007838154811061078a5761078a612ad7565b60009182526020808320600360049093020191909101546001600160a01b0316835282019290925260400181206107c09161251e565b61080a600a6000600784815481106107da576107da612ad7565b60009182526020808320600492909202909101600301546001600160a01b03168352820192909252604001812055565b600960006007838154811061082157610821612ad7565b600091825260208083206001600490930201919091015460ff16835282019290925260400181206108519161251e565b610895600b60006007848154811061086b5761086b612ad7565b600091825260208083206004929092029091016001015460ff168352820192909252604001812055565b8061089f81612b03565b915050610769565b506000600c556108b96007600061251e565b6040517f550d27073d0d6d364815a66fed9ba2bcde6c0406944f87d0cb3e538118faef4a90600090a1565b3360009081526002602052604090205460ff166109135760405162461bcd60e51b81526004016104d490612a94565b600455565b60006104f7338360006116f3565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015610a16576000848152602090819020604080516080810182526004860290920180548352600181015460ff168385015260028101805483518187028101870185528181529495929493860193928301828280156109e857602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116109b95790505b5050509183525050600391909101546001600160a01b0316602091820152908252600192909201910161094a565b50505050905090565b3360009081526002602052604090205460ff16610a4e5760405162461bcd60e51b81526004016104d490612a94565b6001600160a01b038116610a745760405162461bcd60e51b81526004016104d490612a6a565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa9060200161066f565b3360009081526002602052604090205460ff16610af15760405162461bcd60e51b81526004016104d490612a94565b6006805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610b335760405162461bcd60e51b81526004016104d490612a94565b610b3f838360006116f3565b9392505050565b610b4e61253f565b60005b600c54811015610c67578260078281548110610b6f57610b6f612ad7565b90600052602060002090600402016000015403610c555760078181548110610b9957610b99612ad7565b600091825260209182902060408051608081018252600490930290910180548352600181015460ff16838501526002810180548351818702810187018552818152949592949386019392830182828015610c3057602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610c015790505b5050509183525050600391909101546001600160a01b03166020909101529392505050565b80610c5f81612b03565b915050610b51565b5050604080516080810182526000808252602080830182905283518281529081018452928201929092526060810191909152919050565b3360009081526002602052604090205460ff16610ccd5760405162461bcd60e51b81526004016104d490612a94565b6001600160a01b038116610cf35760405162461bcd60e51b81526004016104d490612a6a565b6001600160a01b03811660009081526002602052604090205460ff1615610d5c5760405162461bcd60e51b815260206004820152601c60248201527f4164647265737320697320616c726561647920616e206f776e65722e0000000060448201526064016104d4565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527f6e4e2a7c0e1576d48aeabd633d094f622d4f046286fec8b9045dd7f5c9fb087d910161066f565b610db86118e2565b610dc2600061193c565b565b60ff81166000908152600960209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610ec2576000848152602090819020604080516080810182526004860290920180548352600181015460ff16838501526002810180548351818702810187018552818152949592949386019392830182828015610e9457602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e655790505b5050509183525050600391909101546001600160a01b03166020918201529082526001929092019101610df6565b505050509050919050565b60078181548110610edd57600080fd5b600091825260209091206004909102018054600182015460039092015490925060ff909116906001600160a01b031683565b60606001600160a01b038216610f375760405162461bcd60e51b81526004016104d490612a6a565b6001600160a01b038216600090815260086020908152604080832080548251818502810185019093528083529193909284015b82821015610ec2576000848152602090819020604080516080810182526004860290920180548352600181015460ff1683850152600281018054835181870281018701855281815294959294938601939283018282801561100857602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610fd95790505b5050509183525050600391909101546001600160a01b03166020918201529082526001929092019101610f6a565b61103e61253f565b6001600160a01b0383166110645760405162461bcd60e51b81526004016104d490612a6a565b60005b6001600160a01b0384166000908152600a60205260409020548110156111cd576001600160a01b0384166000908152600860205260409020805460ff85169190839081106110b7576110b7612ad7565b600091825260209091206001600490920201015460ff16036111bb576001600160a01b03841660009081526008602052604090208054829081106110fd576110fd612ad7565b600091825260209182902060408051608081018252600490930290910180548352600181015460ff1683850152600281018054835181870281018701855281815294959294938601939283018282801561119457602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116111655790505b5050509183525050600391909101546001600160a01b031660209091015291506104f79050565b806111c581612b03565b915050611067565b505060408051608081018252600080825260208083018290528351828152908101845292820192909252606081019190915292915050565b61121033838361198c565b5050565b60015460405163568b427d60e11b81526001600160a01b03868116600483015260ff80871660248401528582166044840152841660648301529091169063ad1684fa90608401600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c891506112be9087908590600401612b1c565b6020604051808303816000875af11580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113019190612b38565b61134d5760405162461bcd60e51b815260206004820152601f60248201527f45786368616e6765206572726f7220776974682077616c6c65742066726f6d0060448201526064016104d4565b60015460405163117ece1960e31b81526001600160a01b0390911690638bf670c89061137f9085908790600401612b1c565b6020604051808303816000875af115801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c29190612b38565b61140e5760405162461bcd60e51b815260206004820152601c60248201527f45786368616e6765206572726f20776974682077616c6c657420746f0000000060448201526064016104d4565b600061141c838360016116f3565b90508061147d5760405162461bcd60e51b815260206004820152602960248201527f4572726f722064656c6574696e67206f66666572206166746572207472616e7360448201526866657220636172647360b81b60648201526084016104d4565b5050505050565b60ff81166000908152600b60205260408120546104f7565b60006114a7600c5490565b905090565b3360009081526002602052604090205460ff166114db5760405162461bcd60e51b81526004016104d490612a94565b600555565b6114e861253f565b60075482106115395760405162461bcd60e51b815260206004820152601760248201527f4f6666657220496420646f6573206e6f7420657869737400000000000000000060448201526064016104d4565b6007828154811061154c5761154c612ad7565b600091825260209182902060408051608081018252600490930290910180548352600181015460ff168385015260028101805483518187028101870185528181529495929493860193928301828280156115e357602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116115b45790505b5050509183525050600391909101546001600160a01b031660209091015292915050565b3360009081526002602052604090205460ff166116365760405162461bcd60e51b81526004016104d490612a94565b600355565b6116436118e2565b6001600160a01b0381166116a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d4565b6116b18161193c565b50565b3360009081526002602052604090205460ff166116e35760405162461bcd60e51b81526004016104d490612a94565b6116ee83838361198c565b505050565b60006001600160a01b03841661171b5760405162461bcd60e51b81526004016104d490612a6a565b6001600160a01b0384166000908152600860209081526040808320600a9092528220549091805b828110156118d7578660ff1684828154811061176057611760612ad7565b600091825260209091206001600490920201015460ff16036118c557600084828154811061179057611790612ad7565b90600052602060002090600402016000015490506117ae8983612020565b6117b88882612192565b6117c18161230b565b506001600160a01b0389166000908152600a602052604090206117e3906124c7565b60ff88166000908152600b602052604090206117fe906124c7565b611808600c6124c7565b6006546001935060ff16801561181c575086155b1561188657600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f9290611853908c908c90600401612b1c565b600060405180830381600087803b15801561186d57600080fd5b505af1158015611881573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f589896040516118b7929190612b1c565b60405180910390a1506118d7565b806118cf81612b03565b915050611742565b509695505050505050565b6000546001600160a01b03163314610dc25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546001600160a01b03166119e45760405162461bcd60e51b815260206004820152601b60248201527f47616d6d614361726473436f6e7472616374206e6f74207365742e000000000060448201526064016104d4565b6004546001600160a01b0384166000908152600a602052604090205410611a625760405162461bcd60e51b815260206004820152602c60248201527f5573657220686173207265616368656420746865206d6178696d756d20616c6c60448201526b37bbb2b21037b33332b9399760a11b60648201526084016104d4565b600354600c5410611acc5760405162461bcd60e51b815260206004820152602e60248201527f546f74616c206f66666572732068617665207265616368656420746865206d6160448201526d3c34b6bab69030b63637bbb2b21760911b60648201526084016104d4565b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c890611aff9087908790600401612b1c565b6020604051808303816000875af1158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190612b38565b905080611b915760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f742068617665207468617420636172642e0000000060448201526064016104d4565b60005b82518160ff161015611c3a578360ff16838260ff1681518110611bb957611bb9612ad7565b602002602001015160ff1603611c285760405162461bcd60e51b815260206004820152602e60248201527f54686520636172644e756d6265722063616e6e6f7420626520696e2077616e7460448201526d32b221b0b932273ab6b132b9399760911b60648201526084016104d4565b80611c3281612b55565b915050611b94565b506000611c478585611036565b805190915015611cb75760405162461bcd60e51b815260206004820152603560248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152743ab6b132b91030b63932b0b23c9032bc34b9ba399760591b60648201526084016104d4565b6001600160a01b0385166000908152600a602052604090208054600101905560ff84166000908152600b6020526040902080546001019055611cfd600c80546001019055565b6000611d08600c5490565b6040805160808101825282815260ff88811660208084019182529383018981526001600160a01b038c1660608501526007805460018101825560009190915284517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600490920291820190815592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6898201805460ff1916919095161790935551805195965092949093611de2937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909301920190612573565b5060609190910151600390910180546001600160a01b0319166001600160a01b039283161790558616600090815260086020526040902060078054611e2990600190612b74565b81548110611e3957611e39612ad7565b6000918252602080832084546001818101875595855291909320600492830290930180549190920290920191825582810154928201805460ff191660ff9094169390931790925560028083018054611e949284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b0390921691909117905560ff8516600090815260096020526040902060078054611edc90600190612b74565b81548110611eec57611eec612ad7565b6000918252602080832084546001818101875595855291909320600492830290930180549190920290920191825582810154928201805460ff191660ff9094169390931790925560028083018054611f479284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b0390921691909117905560065460ff1615611fdd57600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac90611faa9089908990600401612b1c565b600060405180830381600087803b158015611fc457600080fd5b505af1158015611fd8573d6000803e3d6000fd5b505050505b7f31a893ae21b5459c9a34e0be8a4fdf6803ec101bc80e2903766025d86cbe915986868660405161201093929190612b87565b60405180910390a1505050505050565b6001600160a01b0382166000908152600860205260409020805482106120785760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016104d4565b805461208690600190612b74565b821015612137578054819061209d90600190612b74565b815481106120ad576120ad612ad7565b90600052602060002090600402018183815481106120cd576120cd612ad7565b600091825260209091208254600490920201908155600180830154908201805460ff191660ff909216919091179055600280830180546121109284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b039092169190911790555b8080548061214757612147612beb565b60008281526020812060046000199093019283020181815560018101805460ff19169055906121796002830182612667565b5060030180546001600160a01b03191690559055505050565b60ff82166000908152600960205260408120905b815481101561230557828282815481106121c2576121c2612ad7565b906000526020600020906004020160000154036122f35781546121e790600190612b74565b81101561229857815482906121fe90600190612b74565b8154811061220e5761220e612ad7565b906000526020600020906004020182828154811061222e5761222e612ad7565b600091825260209091208254600490920201908155600180830154908201805460ff191660ff909216919091179055600280830180546122719284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b039092169190911790555b818054806122a8576122a8612beb565b60008281526020812060046000199093019283020181815560018101805460ff19169055906122da6002830182612667565b5060030180546001600160a01b03191690559055612305565b806122fd81612b03565b9150506121a6565b50505050565b600080805b6007548110156124c0576007548110801561234e5750836007828154811061233a5761233a612ad7565b906000526020600020906004020160000154145b156124ae576007818154811061236657612366612ad7565b60009182526020822060049091020181815560018101805460ff19169055906123926002830182612667565b5060030180546001600160a01b0319169055600780546123b490600190612b74565b815481106123c4576123c4612ad7565b9060005260206000209060040201600782815481106123e5576123e5612ad7565b600091825260209091208254600490920201908155600180830154908201805460ff191660ff909216919091179055600280830180546124289284019190612619565b50600391820154910180546001600160a01b0319166001600160a01b03909216919091179055600780548061245f5761245f612beb565b60008281526020812060046000199093019283020181815560018101805460ff19169055906124916002830182612667565b5060030180546001600160a01b03191690559055600191506124c0565b806124b881612b03565b915050612310565b5092915050565b8054806125165760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f77000000000060448201526064016104d4565b600019019055565b50805460008255600402906000526020600020908101906116b1919061268c565b604051806080016040528060008152602001600060ff1681526020016060815260200160006001600160a01b031681525090565b82805482825590600052602060002090601f016020900481019282156126095791602002820160005b838211156125da57835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261259c565b80156126075782816101000a81549060ff02191690556001016020816000010492830192600103026125da565b505b506126159291506126cd565b5090565b82805482825590600052602060002090601f0160209004810192821561260957600052602060002091601f016020900482015b8281111561260957825482559160010191906001019061264c565b50805460008255601f0160209004906000526020600020908101906116b191906126cd565b8082111561261557600080825560018201805460ff191690556126b26002830182612667565b506003810180546001600160a01b031916905560040161268c565b5b8082111561261557600081556001016126ce565b80356001600160a01b03811681146126f957600080fd5b919050565b60006020828403121561271057600080fd5b610b3f826126e2565b803560ff811681146126f957600080fd5b6000806040838503121561273d57600080fd5b612746836126e2565b915061275460208401612719565b90509250929050565b60006020828403121561276f57600080fd5b5035919050565b60006020828403121561278857600080fd5b610b3f82612719565b6000608083018251845260208084015160ff80821683880152604086015191506080604088015283825180865260a0890191508484019550600093505b808410156127f0578551831682529484019460019390930192908401906127ce565b506060968701516001600160a01b031697909601969096525092949350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561286757603f19888603018452612855858351612791565b94509285019290850190600101612839565b5092979650505050505050565b80151581146116b157600080fd5b60006020828403121561289457600080fd5b8135610b3f81612874565b602081526000610b3f6020830184612791565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126128d957600080fd5b8135602067ffffffffffffffff808311156128f6576128f66128b2565b8260051b604051601f19603f8301168101818110848211171561291b5761291b6128b2565b60405293845285810183019383810192508785111561293957600080fd5b83870191505b8482101561295f5761295082612719565b8352918301919083019061293f565b979650505050505050565b6000806040838503121561297d57600080fd5b61298683612719565b9150602083013567ffffffffffffffff8111156129a257600080fd5b6129ae858286016128c8565b9150509250929050565b600080600080608085870312156129ce57600080fd5b6129d7856126e2565b93506129e560208601612719565b92506129f3604086016126e2565b9150612a0160608601612719565b905092959194509250565b600080600060608486031215612a2157600080fd5b612a2a846126e2565b9250612a3860208501612719565b9150604084013567ffffffffffffffff811115612a5457600080fd5b612a60868287016128c8565b9150509250925092565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b60208082526023908201527f4f6e6c79206f776e6572732063616e2063616c6c20746869732066756e63746960408201526237b71760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b1557612b15612aed565b5060010190565b6001600160a01b0392909216825260ff16602082015260400190565b600060208284031215612b4a57600080fd5b8151610b3f81612874565b600060ff821660ff8103612b6b57612b6b612aed565b60010192915050565b818103818111156104f7576104f7612aed565b60006060820160018060a01b0386168352602060ff8087168286015260606040860152828651808552608087019150838801945060005b81811015612bdc578551841683529484019491840191600101612bbe565b50909998505050505050505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a1a8d86267755cfcacaeced620d541bc03e5e6e36b6a48d0962f3ca45bc71cca64736f6c63430008120033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/src/context/abis/GammaOffers.v1.sol/IGammaCardsContract.json b/src/context/abis/GammaOffers.v3.sol/IGammaCardsContract.json similarity index 97% rename from src/context/abis/GammaOffers.v1.sol/IGammaCardsContract.json rename to src/context/abis/GammaOffers.v3.sol/IGammaCardsContract.json index 70cc67a9..66d44bd5 100644 --- a/src/context/abis/GammaOffers.v1.sol/IGammaCardsContract.json +++ b/src/context/abis/GammaOffers.v3.sol/IGammaCardsContract.json @@ -1,7 +1,7 @@ { "_format": "hh-sol-artifact-1", "contractName": "IGammaCardsContract", - "sourceName": "contracts/gamma/GammaOffers.v1.sol", + "sourceName": "contracts/gamma/GammaOffers.v3.sol", "abi": [ { "inputs": [ diff --git a/src/context/abis/GammaOffers.v3.sol/NofGammaOffersV3.json b/src/context/abis/GammaOffers.v3.sol/NofGammaOffersV3.json new file mode 100644 index 00000000..1b5e0b2e --- /dev/null +++ b/src/context/abis/GammaOffers.v3.sol/NofGammaOffersV3.json @@ -0,0 +1,895 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "NofGammaOffersV3", + "sourceName": "contracts/gamma/GammaOffers.v3.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_cardsContract", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newGammaCardsContract", + "type": "address" + } + ], + "name": "NewGammaCardsContract", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + } + ], + "name": "NewOfferCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "NewOwnerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "OfferRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "RemovedAllOffers", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "canAnyUserPublishOffer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "canUserPublishOffer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_value", + "type": "bool" + } + ], + "name": "changeRemoveCardinInventoryWhenOffer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumberWanted", + "type": "uint8" + }, + { + "internalType": "address", + "name": "offerWallet", + "type": "address" + }, + { + "internalType": "uint8", + "name": "offerCardNumber", + "type": "uint8" + } + ], + "name": "confirmOfferExchange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + } + ], + "name": "createOffer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + } + ], + "name": "createOfferWithoUser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "deleteAllOffers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gammaCardsContract", + "outputs": [ + { + "internalType": "contract IGammaCardsContract", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxOffersAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxOffersByUserAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getOfferByIndex", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV3.Offer", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + } + ], + "name": "getOfferByOfferId", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV3.Offer", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "getOfferByUserAndCardNumber", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV3.Offer", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOffers", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV3.Offer[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "getOffersByCardNumber", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV3.Offer[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "getOffersByCardNumberCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getOffersByUser", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "uint8[]", + "name": "wantedCardNumbers", + "type": "uint8[]" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "internalType": "struct NofGammaOffersV3.Offer[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getOffersByUserCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOffersCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "hasOffer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "offers", + "outputs": [ + { + "internalType": "string", + "name": "offerId", + "type": "string" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "name": "offersByCardNumberCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "offersByUserCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "owners", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "removeOfferByCardNumber", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint8", + "name": "cardNumber", + "type": "uint8" + } + ], + "name": "removeOfferByUserAndCardNumber", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ownerToRemove", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gammaCardsContract", + "type": "address" + } + ], + "name": "setGammaCardsContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxCardNumbersAllowed", + "type": "uint256" + } + ], + "name": "setMaxCardNumbersAllowed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxOffersAllowed", + "type": "uint256" + } + ], + "name": "setMaxOffersAllowed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxOffersByUserAllowed", + "type": "uint256" + } + ], + "name": "setMaxOffersByUserAllowed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405261138860035560056004819055607890556006805460ff191690553480156200002c57600080fd5b5060405162003acc38038062003acc8339810160408190526200004f91620000f5565b6200005a33620000a5565b600180546001600160a01b0319166001600160a01b0392909216919091178155336000908152600260205260409020805460ff19908116909217905560068054909116905562000127565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200010857600080fd5b81516001600160a01b03811681146200012057600080fd5b9392505050565b61399580620001376000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80637594a6ed11610125578063ce7483d5116100ad578063e02f97231161007c578063e02f9723146104a8578063e2b36596146104bb578063e359a0a1146104ce578063e5e5f732146104e1578063f2fde38b146104f457600080fd5b8063ce7483d51461045a578063cf86f8e51461046d578063d250f03a14610475578063d827a8f41461048857600080fd5b806390222aa1116100f457806390222aa1146104045780639618b3331461040c5780639f9150691461041f578063ba79b77b1461043f578063c08029e71461044757600080fd5b80637594a6ed146103895780638400a189146103a95780638a72ea6a146103bc5780638da5cb5b146103df57600080fd5b80633a027073116101a857806358e57ebb1161017757806358e57ebb146103405780635bbfbfd614610353578063619980dc146103665780637065cb481461036e578063715018a61461038157600080fd5b80633a027073146102f25780633e293e16146103055780633ee992ee146103185780634c7a7ad31461032d57600080fd5b806329d3f60b116101e457806329d3f60b146102975780632edb5fcf146102c4578063322fba27146102d75780633808dfe7146102df57600080fd5b8063022914a7146102165780630cdb31171461024e578063173825d91461026f57806317a1fed914610284575b600080fd5b610239610224366004613021565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61026161025c366004613021565b610507565b604051908152602001610245565b61028261027d366004613021565b610558565b005b61028261029236600461318b565b6106d5565b6102396102a5366004613021565b6001600160a01b03166000908152600a60205260409020546004541190565b6102396102d2366004613210565b610716565b6102826107d3565b6102826102ed366004613243565b610980565b61023961030036600461325c565b6109b4565b610282610313366004613277565b6109c2565b6103206109d3565b60405161024591906133dd565b61028261033b366004613021565b610b67565b61028261034e36600461344d565b610c0a565b610239610361366004613210565b610c4c565b610239610c8e565b61028261037c366004613021565b610ca2565b610282610db4565b610261610397366004613021565b600a6020526000908152604090205481565b6103206103b736600461325c565b610dc8565b6103cf6103ca366004613243565b610f6c565b604051610245949392919061346a565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610245565b600354610261565b61032061041a366004613021565b611044565b61043261042d366004613210565b611206565b60405161024591906134a5565b600454610261565b6102826104553660046134b8565b61143a565b61026161046836600461325c565b6116aa565b6102616116c2565b6001546103ec906001600160a01b031681565b61026161049636600461325c565b600b6020526000908152604090205481565b6102826104b6366004613243565b6116d2565b6104326104c936600461350c565b611706565b6104326104dc366004613243565b61190f565b6102826104ef366004613243565b611aca565b610282610502366004613021565b611afe565b60006001600160a01b0382166105385760405162461bcd60e51b815260040161052f90613549565b60405180910390fd5b6001600160a01b0382166000908152600a60205260409020545b92915050565b3360009081526002602052604090205460ff166105875760405162461bcd60e51b815260040161052f90613573565b6001600160a01b0381166105ad5760405162461bcd60e51b815260040161052f90613549565b336001600160a01b038216036106155760405162461bcd60e51b815260206004820152602760248201527f596f752063616e6e6f742072656d6f766520796f757273656c6620617320616e6044820152661037bbb732b91760c91b606482015260840161052f565b6001600160a01b03811660009081526002602052604090205460ff1661067d5760405162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420616e206f776e65722e0000000000000000604482015260640161052f565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da91015b60405180910390a150565b3360009081526002602052604090205460ff166107045760405162461bcd60e51b815260040161052f90613573565b61071084848484611b77565b50505050565b60006001600160a01b03831661073e5760405162461bcd60e51b815260040161052f90613549565b60005b6001600160a01b0384166000908152600a60205260409020548110156107c9576001600160a01b0384166000908152600860205260409020805460ff8516919083908110610791576107916135b6565b600091825260209091206001600590920201015460ff16036107b7576001915050610552565b806107c1816135e2565b915050610741565b5060009392505050565b3360009081526002602052604090205460ff166108025760405162461bcd60e51b815260040161052f90613573565b60005b600754811015610943576008600060078381548110610826576108266135b6565b60009182526020808320600360059093020191909101546001600160a01b03168352820192909252604001812061085c91612df1565b6108a6600a600060078481548110610876576108766135b6565b60009182526020808320600592909202909101600301546001600160a01b03168352820192909252604001812055565b60096000600783815481106108bd576108bd6135b6565b600091825260208083206001600590930201919091015460ff16835282019290925260400181206108ed91612df1565b610931600b600060078481548110610907576109076135b6565b600091825260208083206005929092029091016001015460ff168352820192909252604001812055565b8061093b816135e2565b915050610805565b506000600c5561095560076000612df1565b6040517f550d27073d0d6d364815a66fed9ba2bcde6c0406944f87d0cb3e538118faef4a90600090a1565b3360009081526002602052604090205460ff166109af5760405162461bcd60e51b815260040161052f90613573565b600455565b600061055233836000612257565b6109ce83338484611b77565b505050565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015610b5e57838290600052602060002090600502016040518060a0016040529081600082018054610a2a906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906135fb565b8015610aa35780601f10610a7857610100808354040283529160200191610aa3565b820191906000526020600020905b815481529060010190602001808311610a8657829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610b2357602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610af45790505b505050918352505060038201546001600160a01b031660208083019190915260049092015460409091015290825260019290920191016109f7565b50505050905090565b3360009081526002602052604090205460ff16610b965760405162461bcd60e51b815260040161052f90613573565b6001600160a01b038116610bbc5760405162461bcd60e51b815260040161052f90613549565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020016106ca565b3360009081526002602052604090205460ff16610c395760405162461bcd60e51b815260040161052f90613573565b6006805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610c7b5760405162461bcd60e51b815260040161052f90613573565b610c8783836000612257565b9392505050565b6000610c99600c5490565b60035411905090565b3360009081526002602052604090205460ff16610cd15760405162461bcd60e51b815260040161052f90613573565b6001600160a01b038116610cf75760405162461bcd60e51b815260040161052f90613549565b6001600160a01b03811660009081526002602052604090205460ff1615610d605760405162461bcd60e51b815260206004820152601c60248201527f4164647265737320697320616c726561647920616e206f776e65722e00000000604482015260640161052f565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527f6e4e2a7c0e1576d48aeabd633d094f622d4f046286fec8b9045dd7f5c9fb087d91016106ca565b610dbc6124d0565b610dc6600061252a565b565b60ff81166000908152600960209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610f6157838290600052602060002090600502016040518060a0016040529081600082018054610e2d906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e59906135fb565b8015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610f2657602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610ef75790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610dfa565b505050509050919050565b60078181548110610f7c57600080fd5b9060005260206000209060050201600091509050806000018054610f9f906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcb906135fb565b80156110185780601f10610fed57610100808354040283529160200191611018565b820191906000526020600020905b815481529060010190602001808311610ffb57829003601f168201915b5050505060018301546003840154600490940154929360ff909116926001600160a01b03909116915084565b60606001600160a01b03821661106c5760405162461bcd60e51b815260040161052f90613549565b6001600160a01b038216600090815260086020908152604080832080548251818502810185019093528083529193909284015b82821015610f6157838290600052602060002090600502016040518060a00160405290816000820180546110d2906135fb565b80601f01602080910402602001604051908101604052809291908181526020018280546110fe906135fb565b801561114b5780601f106111205761010080835404028352916020019161114b565b820191906000526020600020905b81548152906001019060200180831161112e57829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156111cb57602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161119c5790505b505050918352505060038201546001600160a01b0316602080830191909152600490920154604090910152908252600192909201910161109f565b61120e612e12565b6001600160a01b0383166112345760405162461bcd60e51b815260040161052f90613549565b60005b6001600160a01b0384166000908152600a6020526040902054811015611431576001600160a01b0384166000908152600860205260409020805460ff8516919083908110611287576112876135b6565b600091825260209091206001600590920201015460ff160361141f576001600160a01b03841660009081526008602052604090208054829081106112cd576112cd6135b6565b90600052602060002090600502016040518060a00160405290816000820180546112f6906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054611322906135fb565b801561136f5780601f106113445761010080835404028352916020019161136f565b820191906000526020600020905b81548152906001019060200180831161135257829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156113ef57602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116113c05790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015291506105529050565b80611429816135e2565b915050611237565b50610c8761257a565b60015460405163568b427d60e11b81526001600160a01b03868116600483015260ff80871660248401528582166044840152841660648301529091169063ad1684fa90608401600060405180830381600087803b15801561149a57600080fd5b505af11580156114ae573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c891506114e49087908590600401613635565b6020604051808303816000875af1158015611503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115279190613651565b6115735760405162461bcd60e51b815260206004820152601f60248201527f45786368616e6765206572726f7220776974682077616c6c65742066726f6d00604482015260640161052f565b60015460405163117ece1960e31b81526001600160a01b0390911690638bf670c8906115a59085908790600401613635565b6020604051808303816000875af11580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190613651565b6116345760405162461bcd60e51b815260206004820152601d60248201527f45786368616e6765206572726f7220776974682077616c6c657420746f000000604482015260640161052f565b600061164283836001612257565b9050806116a35760405162461bcd60e51b815260206004820152602960248201527f4572726f722064656c6574696e67206f66666572206166746572207472616e7360448201526866657220636172647360b81b606482015260840161052f565b5050505050565b60ff81166000908152600b6020526040812054610552565b60006116cd600c5490565b905090565b3360009081526002602052604090205460ff166117015760405162461bcd60e51b815260040161052f90613573565b600555565b61170e612e12565b60005b600754811015611906578260405160200161172c919061366e565b6040516020818303038152906040528051906020012060078281548110611755576117556135b6565b9060005260206000209060050201600001604051602001611776919061368a565b60405160208183030381529060405280519060200120036118f457600781815481106117a4576117a46135b6565b90600052602060002090600502016040518060a00160405290816000820180546117cd906135fb565b80601f01602080910402602001604051908101604052809291908181526020018280546117f9906135fb565b80156118465780601f1061181b57610100808354040283529160200191611846565b820191906000526020600020905b81548152906001019060200180831161182957829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156118c657602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116118975790505b505050918352505060038201546001600160a01b031660208201526004909101546040909101529392505050565b806118fe816135e2565b915050611711565b5061055261257a565b611917612e12565b60075482106119685760405162461bcd60e51b815260206004820152601760248201527f4f6666657220496420646f6573206e6f74206578697374000000000000000000604482015260640161052f565b6007828154811061197b5761197b6135b6565b90600052602060002090600502016040518060a00160405290816000820180546119a4906135fb565b80601f01602080910402602001604051908101604052809291908181526020018280546119d0906135fb565b8015611a1d5780601f106119f257610100808354040283529160200191611a1d565b820191906000526020600020905b815481529060010190602001808311611a0057829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611a9d57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611a6e5790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015292915050565b3360009081526002602052604090205460ff16611af95760405162461bcd60e51b815260040161052f90613573565b600355565b611b066124d0565b6001600160a01b038116611b6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052f565b611b748161252a565b50565b6001546001600160a01b0316611bcf5760405162461bcd60e51b815260206004820152601b60248201527f47616d6d614361726473436f6e7472616374206e6f74207365742e0000000000604482015260640161052f565b6000815111611c2b5760405162461bcd60e51b815260206004820152602260248201527f77616e746564436172644e756d626572732063616e6e6f7420626520656d70746044820152613c9760f11b606482015260840161052f565b6004546001600160a01b0384166000908152600a602052604090205410611ca95760405162461bcd60e51b815260206004820152602c60248201527f5573657220686173207265616368656420746865206d6178696d756d20616c6c60448201526b37bbb2b21037b33332b9399760a11b606482015260840161052f565b600354600c5410611d135760405162461bcd60e51b815260206004820152602e60248201527f546f74616c206f66666572732068617665207265616368656420746865206d6160448201526d3c34b6bab69030b63637bbb2b21760911b606482015260840161052f565b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c890611d469087908790600401613635565b6020604051808303816000875af1158015611d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d899190613651565b905080611dd85760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f742068617665207468617420636172642e00000000604482015260640161052f565b60005b82518160ff161015611e81578360ff16838260ff1681518110611e0057611e006135b6565b602002602001015160ff1603611e6f5760405162461bcd60e51b815260206004820152602e60248201527f54686520636172644e756d6265722063616e6e6f7420626520696e2077616e7460448201526d32b221b0b932273ab6b132b9399760911b606482015260840161052f565b80611e7981613700565b915050611ddb565b506000611e8e8585611206565b60608101519091506001600160a01b031615611f0a5760405162461bcd60e51b815260206004820152603560248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152743ab6b132b91030b63932b0b23c9032bc34b9ba399760591b606482015260840161052f565b6001600160a01b0385166000908152600a602052604090208054600101905560ff84166000908152600b6020526040902080546001019055611f50600c80546001019055565b6040805160a08101825287815260ff861660208201529081018490526001600160a01b038616606082015242608082015260078054600181018255600091909152815160059091027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801908190611fc7908261376d565b5060208281015160018301805460ff191660ff90921691909117905560408301518051611ffa9260028501920190612e4d565b5060608201516003820180546001600160a01b0319166001600160a01b03928316179055608090920151600490910155851660009081526008602052604090206007805461204a9060019061382d565b8154811061205a5761205a6135b6565b60009182526020808320845460018101865594845292206005918202909201920201806120878382613840565b50600182810154908201805460ff191660ff909216919091179055600280830180546120b69284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560ff84166000908152600960205260409020600780546121089060019061382d565b81548110612118576121186135b6565b60009182526020808320845460018101865594845292206005918202909201920201806121458382613840565b50600182810154908201805460ff191660ff909216919091179055600280830180546121749284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560065460ff161561221457600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac906121e19088908890600401613635565b600060405180830381600087803b1580156121fb57600080fd5b505af115801561220f573d6000803e3d6000fd5b505050505b7f31a893ae21b5459c9a34e0be8a4fdf6803ec101bc80e2903766025d86cbe915985858560405161224793929190613913565b60405180910390a1505050505050565b60006001600160a01b03841661227f5760405162461bcd60e51b815260040161052f90613549565b6001600160a01b0384166000908152600860209081526040808320600a9092528220549091805b828110156124c5578660ff168482815481106122c4576122c46135b6565b600091825260209091206001600590920201015460ff16036124b35760008482815481106122f4576122f46135b6565b90600052602060002090600502016000018054612310906135fb565b80601f016020809104026020016040519081016040528092919081815260200182805461233c906135fb565b80156123895780601f1061235e57610100808354040283529160200191612389565b820191906000526020600020905b81548152906001019060200180831161236c57829003601f168201915b5050505050905061239b8989836125c3565b6123a689898361292f565b6123af81612ac4565b506001600160a01b0389166000908152600a602052604090206123d190612d41565b60ff88166000908152600b602052604090206123ec90612d41565b6123f6600c612d41565b6006546001935060ff16801561240a575086155b1561247457600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f9290612441908c908c90600401613635565b600060405180830381600087803b15801561245b57600080fd5b505af115801561246f573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f589896040516124a5929190613635565b60405180910390a1506124c5565b806124bd816135e2565b9150506122a6565b509695505050505050565b6000546001600160a01b03163314610dc65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612582612e12565b506040805160c081018252600060a0820181815282526020808301829052835182815290810184529282019290925260608101829052608081019190915290565b6001600160a01b0383166000908152600860205260408120905b81548110156116a35761269b8282815481106125fb576125fb6135b6565b90600052602060002090600502016000018054612617906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054612643906135fb565b80156126905780601f1061266557610100808354040283529160200191612690565b820191906000526020600020905b81548152906001019060200180831161267357829003601f168201915b505050505084612d98565b1561291d57846001600160a01b03168282815481106126bc576126bc6135b6565b60009182526020909120600360059092020101546001600160a01b0316146127415760405162461bcd60e51b815260206004820152603260248201527f5f64656c6574654f6666657246726f6d557365724d617070696e673a206f776e60448201527132b9103237b2b9903737ba1036b0ba31b41760711b606482015260840161052f565b8360ff16828281548110612757576127576135b6565b600091825260209091206001600590920201015460ff16146127e15760405162461bcd60e51b815260206004820152603760248201527f5f64656c6574654f6666657246726f6d557365724d617070696e673a2063617260448201527f644e756d62657220646f6573206e6f74206d617463682e000000000000000000606482015260840161052f565b81546127ef9060019061382d565b8110156128b157815482906128069060019061382d565b81548110612816576128166135b6565b9060005260206000209060050201828281548110612836576128366135b6565b60009182526020909120600590910201806128518382613840565b50600182810154908201805460ff191660ff909216919091179055600280830180546128809284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101555b818054806128c1576128c1613949565b600082815260208120600019909201916005830201906128e18282612f41565b60018201805460ff191690556128fb600283016000612f7b565b506003810180546001600160a01b0319169055600060049091015590556116a3565b80612927816135e2565b9150506125dd565b60ff82166000908152600960205260408120905b81548110156116a3576129618282815481106125fb576125fb6135b6565b15612ab257846001600160a01b0316828281548110612982576129826135b6565b60009182526020909120600360059092020101546001600160a01b031614612a125760405162461bcd60e51b815260206004820152603860248201527f5f64656c6574654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a206f776e657220646f6573206e6f74206d617463682e0000000000000000606482015260840161052f565b8360ff16828281548110612a2857612a286135b6565b600091825260209091206001600590920201015460ff16146127e15760405162461bcd60e51b815260206004820152603d60248201527f5f64656c6574654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a20636172644e756d62657220646f6573206e6f74206d617463682e000000606482015260840161052f565b80612abc816135e2565b915050612943565b600080805b600754811015612d3a5760075481108015612b955750612b9560078281548110612af557612af56135b6565b90600052602060002090600502016000018054612b11906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054612b3d906135fb565b8015612b8a5780601f10612b5f57610100808354040283529160200191612b8a565b820191906000526020600020905b815481529060010190602001808311612b6d57829003601f168201915b505050505085612d98565b15612d285760078181548110612bad57612bad6135b6565b60009182526020822060059091020190612bc78282612f41565b60018201805460ff19169055612be1600283016000612f7b565b506003810180546001600160a01b0319169055600060049091015560078054612c0c9060019061382d565b81548110612c1c57612c1c6135b6565b906000526020600020906005020160078281548110612c3d57612c3d6135b6565b6000918252602090912060059091020180612c588382613840565b50600182810154908201805460ff191660ff90921691909117905560028083018054612c879284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101556007805480612cc857612cc8613949565b60008281526020812060001990920191600583020190612ce88282612f41565b60018201805460ff19169055612d02600283016000612f7b565b506003810180546001600160a01b03191690556000600490910155905560019150612d3a565b80612d32816135e2565b915050612ac9565b5092915050565b805480612d905760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f770000000000604482015260640161052f565b600019019055565b600081604051602001612dab919061366e565b6040516020818303038152906040528051906020012083604051602001612dd2919061366e565b6040516020818303038152906040528051906020012014905092915050565b5080546000825560050290600052602060002090810190611b749190612fa0565b6040518060a0016040528060608152602001600060ff1681526020016060815260200160006001600160a01b03168152602001600081525090565b82805482825590600052602060002090601f01602090048101928215612ee35791602002820160005b83821115612eb457835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302612e76565b8015612ee15782816101000a81549060ff0219169055600101602081600001049283019260010302612eb4565b505b50612eef929150612ff0565b5090565b82805482825590600052602060002090601f01602090048101928215612ee357600052602060002091601f016020900482015b82811115612ee3578254825591600101919060010190612f26565b508054612f4d906135fb565b6000825580601f10612f5d575050565b601f016020900490600052602060002090810190611b749190612ff0565b50805460008255601f016020900490600052602060002090810190611b749190612ff0565b80821115612eef576000612fb48282612f41565b60018201805460ff19169055612fce600283016000612f7b565b506003810180546001600160a01b031916905560006004820155600501612fa0565b5b80821115612eef5760008155600101612ff1565b80356001600160a01b038116811461301c57600080fd5b919050565b60006020828403121561303357600080fd5b610c8782613005565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561307b5761307b61303c565b604052919050565b600082601f83011261309457600080fd5b813567ffffffffffffffff8111156130ae576130ae61303c565b6130c1601f8201601f1916602001613052565b8181528460208386010111156130d657600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff8116811461301c57600080fd5b600082601f83011261311557600080fd5b8135602067ffffffffffffffff8211156131315761313161303c565b8160051b613140828201613052565b928352848101820192828101908785111561315a57600080fd5b83870192505b8483101561318057613171836130f3565b82529183019190830190613160565b979650505050505050565b600080600080608085870312156131a157600080fd5b843567ffffffffffffffff808211156131b957600080fd5b6131c588838901613083565b95506131d360208801613005565b94506131e1604088016130f3565b935060608701359150808211156131f757600080fd5b5061320487828801613104565b91505092959194509250565b6000806040838503121561322357600080fd5b61322c83613005565b915061323a602084016130f3565b90509250929050565b60006020828403121561325557600080fd5b5035919050565b60006020828403121561326e57600080fd5b610c87826130f3565b60008060006060848603121561328c57600080fd5b833567ffffffffffffffff808211156132a457600080fd5b6132b087838801613083565b94506132be602087016130f3565b935060408601359150808211156132d457600080fd5b506132e186828701613104565b9150509250925092565b60005b838110156133065781810151838201526020016132ee565b50506000910152565b600081518084526133278160208601602086016132eb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561336e57815160ff168752958201959082019060010161334f565b509495945050505050565b6000815160a0845261338e60a085018261330f565b905060ff6020840151166020850152604083015184820360408601526133b4828261333b565b6060858101516001600160a01b0316908701526080948501519490950193909352509192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561343257603f19888603018452613420858351613379565b94509285019290850190600101613404565b5092979650505050505050565b8015158114611b7457600080fd5b60006020828403121561345f57600080fd5b8135610c878161343f565b60808152600061347d608083018761330f565b60ff959095166020830152506001600160a01b03929092166040830152606090910152919050565b602081526000610c876020830184613379565b600080600080608085870312156134ce57600080fd5b6134d785613005565b93506134e5602086016130f3565b92506134f360408601613005565b9150613501606086016130f3565b905092959194509250565b60006020828403121561351e57600080fd5b813567ffffffffffffffff81111561353557600080fd5b61354184828501613083565b949350505050565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b60208082526023908201527f4f6e6c79206f776e6572732063616e2063616c6c20746869732066756e63746960408201526237b71760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016135f4576135f46135cc565b5060010190565b600181811c9082168061360f57607f821691505b60208210810361362f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0392909216825260ff16602082015260400190565b60006020828403121561366357600080fd5b8151610c878161343f565b600082516136808184602087016132eb565b9190910192915050565b6000808354613698816135fb565b600182811680156136b057600181146136c5576136f4565b60ff19841687528215158302870194506136f4565b8760005260208060002060005b858110156136eb5781548a8201529084019082016136d2565b50505082870194505b50929695505050505050565b600060ff821660ff8103613716576137166135cc565b60010192915050565b601f8211156109ce57600081815260208120601f850160051c810160208610156137465750805b601f850160051c820191505b8181101561376557828155600101613752565b505050505050565b815167ffffffffffffffff8111156137875761378761303c565b61379b8161379584546135fb565b8461371f565b602080601f8311600181146137d057600084156137b85750858301515b600019600386901b1c1916600185901b178555613765565b600085815260208120601f198616915b828110156137ff578886015182559484019460019091019084016137e0565b508582101561381d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610552576105526135cc565b81810361384b575050565b61385582546135fb565b67ffffffffffffffff81111561386d5761386d61303c565b61387b8161379584546135fb565b6000601f8211600181146138af57600083156138975750848201545b600019600385901b1c1916600184901b1784556116a3565b600085815260209020601f19841690600086815260209020845b838110156138e957828601548255600195860195909101906020016138c9565b508583101561381d5793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160a01b038416815260ff831660208201526060604082018190526000906139409083018461333b565b95945050505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b98367e701dbe64aa3caace62f2db04f53f237272420308d15beb4f6d1e1c62964736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102115760003560e01c80637594a6ed11610125578063ce7483d5116100ad578063e02f97231161007c578063e02f9723146104a8578063e2b36596146104bb578063e359a0a1146104ce578063e5e5f732146104e1578063f2fde38b146104f457600080fd5b8063ce7483d51461045a578063cf86f8e51461046d578063d250f03a14610475578063d827a8f41461048857600080fd5b806390222aa1116100f457806390222aa1146104045780639618b3331461040c5780639f9150691461041f578063ba79b77b1461043f578063c08029e71461044757600080fd5b80637594a6ed146103895780638400a189146103a95780638a72ea6a146103bc5780638da5cb5b146103df57600080fd5b80633a027073116101a857806358e57ebb1161017757806358e57ebb146103405780635bbfbfd614610353578063619980dc146103665780637065cb481461036e578063715018a61461038157600080fd5b80633a027073146102f25780633e293e16146103055780633ee992ee146103185780634c7a7ad31461032d57600080fd5b806329d3f60b116101e457806329d3f60b146102975780632edb5fcf146102c4578063322fba27146102d75780633808dfe7146102df57600080fd5b8063022914a7146102165780630cdb31171461024e578063173825d91461026f57806317a1fed914610284575b600080fd5b610239610224366004613021565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61026161025c366004613021565b610507565b604051908152602001610245565b61028261027d366004613021565b610558565b005b61028261029236600461318b565b6106d5565b6102396102a5366004613021565b6001600160a01b03166000908152600a60205260409020546004541190565b6102396102d2366004613210565b610716565b6102826107d3565b6102826102ed366004613243565b610980565b61023961030036600461325c565b6109b4565b610282610313366004613277565b6109c2565b6103206109d3565b60405161024591906133dd565b61028261033b366004613021565b610b67565b61028261034e36600461344d565b610c0a565b610239610361366004613210565b610c4c565b610239610c8e565b61028261037c366004613021565b610ca2565b610282610db4565b610261610397366004613021565b600a6020526000908152604090205481565b6103206103b736600461325c565b610dc8565b6103cf6103ca366004613243565b610f6c565b604051610245949392919061346a565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610245565b600354610261565b61032061041a366004613021565b611044565b61043261042d366004613210565b611206565b60405161024591906134a5565b600454610261565b6102826104553660046134b8565b61143a565b61026161046836600461325c565b6116aa565b6102616116c2565b6001546103ec906001600160a01b031681565b61026161049636600461325c565b600b6020526000908152604090205481565b6102826104b6366004613243565b6116d2565b6104326104c936600461350c565b611706565b6104326104dc366004613243565b61190f565b6102826104ef366004613243565b611aca565b610282610502366004613021565b611afe565b60006001600160a01b0382166105385760405162461bcd60e51b815260040161052f90613549565b60405180910390fd5b6001600160a01b0382166000908152600a60205260409020545b92915050565b3360009081526002602052604090205460ff166105875760405162461bcd60e51b815260040161052f90613573565b6001600160a01b0381166105ad5760405162461bcd60e51b815260040161052f90613549565b336001600160a01b038216036106155760405162461bcd60e51b815260206004820152602760248201527f596f752063616e6e6f742072656d6f766520796f757273656c6620617320616e6044820152661037bbb732b91760c91b606482015260840161052f565b6001600160a01b03811660009081526002602052604090205460ff1661067d5760405162461bcd60e51b815260206004820152601860248201527f41646472657373206973206e6f7420616e206f776e65722e0000000000000000604482015260640161052f565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da91015b60405180910390a150565b3360009081526002602052604090205460ff166107045760405162461bcd60e51b815260040161052f90613573565b61071084848484611b77565b50505050565b60006001600160a01b03831661073e5760405162461bcd60e51b815260040161052f90613549565b60005b6001600160a01b0384166000908152600a60205260409020548110156107c9576001600160a01b0384166000908152600860205260409020805460ff8516919083908110610791576107916135b6565b600091825260209091206001600590920201015460ff16036107b7576001915050610552565b806107c1816135e2565b915050610741565b5060009392505050565b3360009081526002602052604090205460ff166108025760405162461bcd60e51b815260040161052f90613573565b60005b600754811015610943576008600060078381548110610826576108266135b6565b60009182526020808320600360059093020191909101546001600160a01b03168352820192909252604001812061085c91612df1565b6108a6600a600060078481548110610876576108766135b6565b60009182526020808320600592909202909101600301546001600160a01b03168352820192909252604001812055565b60096000600783815481106108bd576108bd6135b6565b600091825260208083206001600590930201919091015460ff16835282019290925260400181206108ed91612df1565b610931600b600060078481548110610907576109076135b6565b600091825260208083206005929092029091016001015460ff168352820192909252604001812055565b8061093b816135e2565b915050610805565b506000600c5561095560076000612df1565b6040517f550d27073d0d6d364815a66fed9ba2bcde6c0406944f87d0cb3e538118faef4a90600090a1565b3360009081526002602052604090205460ff166109af5760405162461bcd60e51b815260040161052f90613573565b600455565b600061055233836000612257565b6109ce83338484611b77565b505050565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015610b5e57838290600052602060002090600502016040518060a0016040529081600082018054610a2a906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610a56906135fb565b8015610aa35780601f10610a7857610100808354040283529160200191610aa3565b820191906000526020600020905b815481529060010190602001808311610a8657829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610b2357602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610af45790505b505050918352505060038201546001600160a01b031660208083019190915260049092015460409091015290825260019290920191016109f7565b50505050905090565b3360009081526002602052604090205460ff16610b965760405162461bcd60e51b815260040161052f90613573565b6001600160a01b038116610bbc5760405162461bcd60e51b815260040161052f90613549565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f45c9eba39b5ae3e7a6650b0a57bcb8e5d135936d56d111983dbc5860ae6760fa906020016106ca565b3360009081526002602052604090205460ff16610c395760405162461bcd60e51b815260040161052f90613573565b6006805460ff1916911515919091179055565b3360009081526002602052604081205460ff16610c7b5760405162461bcd60e51b815260040161052f90613573565b610c8783836000612257565b9392505050565b6000610c99600c5490565b60035411905090565b3360009081526002602052604090205460ff16610cd15760405162461bcd60e51b815260040161052f90613573565b6001600160a01b038116610cf75760405162461bcd60e51b815260040161052f90613549565b6001600160a01b03811660009081526002602052604090205460ff1615610d605760405162461bcd60e51b815260206004820152601c60248201527f4164647265737320697320616c726561647920616e206f776e65722e00000000604482015260640161052f565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527f6e4e2a7c0e1576d48aeabd633d094f622d4f046286fec8b9045dd7f5c9fb087d91016106ca565b610dbc6124d0565b610dc6600061252a565b565b60ff81166000908152600960209081526040808320805482518185028101850190935280835260609492939192909184015b82821015610f6157838290600052602060002090600502016040518060a0016040529081600082018054610e2d906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e59906135fb565b8015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015610f2657602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610ef75790505b505050918352505060038201546001600160a01b03166020808301919091526004909201546040909101529082526001929092019101610dfa565b505050509050919050565b60078181548110610f7c57600080fd5b9060005260206000209060050201600091509050806000018054610f9f906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcb906135fb565b80156110185780601f10610fed57610100808354040283529160200191611018565b820191906000526020600020905b815481529060010190602001808311610ffb57829003601f168201915b5050505060018301546003840154600490940154929360ff909116926001600160a01b03909116915084565b60606001600160a01b03821661106c5760405162461bcd60e51b815260040161052f90613549565b6001600160a01b038216600090815260086020908152604080832080548251818502810185019093528083529193909284015b82821015610f6157838290600052602060002090600502016040518060a00160405290816000820180546110d2906135fb565b80601f01602080910402602001604051908101604052809291908181526020018280546110fe906135fb565b801561114b5780601f106111205761010080835404028352916020019161114b565b820191906000526020600020905b81548152906001019060200180831161112e57829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156111cb57602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161119c5790505b505050918352505060038201546001600160a01b0316602080830191909152600490920154604090910152908252600192909201910161109f565b61120e612e12565b6001600160a01b0383166112345760405162461bcd60e51b815260040161052f90613549565b60005b6001600160a01b0384166000908152600a6020526040902054811015611431576001600160a01b0384166000908152600860205260409020805460ff8516919083908110611287576112876135b6565b600091825260209091206001600590920201015460ff160361141f576001600160a01b03841660009081526008602052604090208054829081106112cd576112cd6135b6565b90600052602060002090600502016040518060a00160405290816000820180546112f6906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054611322906135fb565b801561136f5780601f106113445761010080835404028352916020019161136f565b820191906000526020600020905b81548152906001019060200180831161135257829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156113ef57602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116113c05790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015291506105529050565b80611429816135e2565b915050611237565b50610c8761257a565b60015460405163568b427d60e11b81526001600160a01b03868116600483015260ff80871660248401528582166044840152841660648301529091169063ad1684fa90608401600060405180830381600087803b15801561149a57600080fd5b505af11580156114ae573d6000803e3d6000fd5b505060015460405163117ece1960e31b81526001600160a01b039091169250638bf670c891506114e49087908590600401613635565b6020604051808303816000875af1158015611503573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115279190613651565b6115735760405162461bcd60e51b815260206004820152601f60248201527f45786368616e6765206572726f7220776974682077616c6c65742066726f6d00604482015260640161052f565b60015460405163117ece1960e31b81526001600160a01b0390911690638bf670c8906115a59085908790600401613635565b6020604051808303816000875af11580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190613651565b6116345760405162461bcd60e51b815260206004820152601d60248201527f45786368616e6765206572726f7220776974682077616c6c657420746f000000604482015260640161052f565b600061164283836001612257565b9050806116a35760405162461bcd60e51b815260206004820152602960248201527f4572726f722064656c6574696e67206f66666572206166746572207472616e7360448201526866657220636172647360b81b606482015260840161052f565b5050505050565b60ff81166000908152600b6020526040812054610552565b60006116cd600c5490565b905090565b3360009081526002602052604090205460ff166117015760405162461bcd60e51b815260040161052f90613573565b600555565b61170e612e12565b60005b600754811015611906578260405160200161172c919061366e565b6040516020818303038152906040528051906020012060078281548110611755576117556135b6565b9060005260206000209060050201600001604051602001611776919061368a565b60405160208183030381529060405280519060200120036118f457600781815481106117a4576117a46135b6565b90600052602060002090600502016040518060a00160405290816000820180546117cd906135fb565b80601f01602080910402602001604051908101604052809291908181526020018280546117f9906135fb565b80156118465780601f1061181b57610100808354040283529160200191611846565b820191906000526020600020905b81548152906001019060200180831161182957829003601f168201915b5050509183525050600182015460ff1660208083019190915260028301805460408051828502810185018252828152940193928301828280156118c657602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116118975790505b505050918352505060038201546001600160a01b031660208201526004909101546040909101529392505050565b806118fe816135e2565b915050611711565b5061055261257a565b611917612e12565b60075482106119685760405162461bcd60e51b815260206004820152601760248201527f4f6666657220496420646f6573206e6f74206578697374000000000000000000604482015260640161052f565b6007828154811061197b5761197b6135b6565b90600052602060002090600502016040518060a00160405290816000820180546119a4906135fb565b80601f01602080910402602001604051908101604052809291908181526020018280546119d0906135fb565b8015611a1d5780601f106119f257610100808354040283529160200191611a1d565b820191906000526020600020905b815481529060010190602001808311611a0057829003601f168201915b5050509183525050600182015460ff166020808301919091526002830180546040805182850281018501825282815294019392830182828015611a9d57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411611a6e5790505b505050918352505060038201546001600160a01b0316602082015260049091015460409091015292915050565b3360009081526002602052604090205460ff16611af95760405162461bcd60e51b815260040161052f90613573565b600355565b611b066124d0565b6001600160a01b038116611b6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052f565b611b748161252a565b50565b6001546001600160a01b0316611bcf5760405162461bcd60e51b815260206004820152601b60248201527f47616d6d614361726473436f6e7472616374206e6f74207365742e0000000000604482015260640161052f565b6000815111611c2b5760405162461bcd60e51b815260206004820152602260248201527f77616e746564436172644e756d626572732063616e6e6f7420626520656d70746044820152613c9760f11b606482015260840161052f565b6004546001600160a01b0384166000908152600a602052604090205410611ca95760405162461bcd60e51b815260206004820152602c60248201527f5573657220686173207265616368656420746865206d6178696d756d20616c6c60448201526b37bbb2b21037b33332b9399760a11b606482015260840161052f565b600354600c5410611d135760405162461bcd60e51b815260206004820152602e60248201527f546f74616c206f66666572732068617665207265616368656420746865206d6160448201526d3c34b6bab69030b63637bbb2b21760911b606482015260840161052f565b60015460405163117ece1960e31b81526000916001600160a01b031690638bf670c890611d469087908790600401613635565b6020604051808303816000875af1158015611d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d899190613651565b905080611dd85760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6573206e6f742068617665207468617420636172642e00000000604482015260640161052f565b60005b82518160ff161015611e81578360ff16838260ff1681518110611e0057611e006135b6565b602002602001015160ff1603611e6f5760405162461bcd60e51b815260206004820152602e60248201527f54686520636172644e756d6265722063616e6e6f7420626520696e2077616e7460448201526d32b221b0b932273ab6b132b9399760911b606482015260840161052f565b80611e7981613700565b915050611ddb565b506000611e8e8585611206565b60608101519091506001600160a01b031615611f0a5760405162461bcd60e51b815260206004820152603560248201527f416e206f6666657220666f722074686973207573657220616e6420636172644e6044820152743ab6b132b91030b63932b0b23c9032bc34b9ba399760591b606482015260840161052f565b6001600160a01b0385166000908152600a602052604090208054600101905560ff84166000908152600b6020526040902080546001019055611f50600c80546001019055565b6040805160a08101825287815260ff861660208201529081018490526001600160a01b038616606082015242608082015260078054600181018255600091909152815160059091027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801908190611fc7908261376d565b5060208281015160018301805460ff191660ff90921691909117905560408301518051611ffa9260028501920190612e4d565b5060608201516003820180546001600160a01b0319166001600160a01b03928316179055608090920151600490910155851660009081526008602052604090206007805461204a9060019061382d565b8154811061205a5761205a6135b6565b60009182526020808320845460018101865594845292206005918202909201920201806120878382613840565b50600182810154908201805460ff191660ff909216919091179055600280830180546120b69284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560ff84166000908152600960205260409020600780546121089060019061382d565b81548110612118576121186135b6565b60009182526020808320845460018101865594845292206005918202909201920201806121458382613840565b50600182810154908201805460ff191660ff909216919091179055600280830180546121749284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b0390921691909117905560049182015491015560065460ff161561221457600154604051631c5568eb60e21b81526001600160a01b0390911690637155a3ac906121e19088908890600401613635565b600060405180830381600087803b1580156121fb57600080fd5b505af115801561220f573d6000803e3d6000fd5b505050505b7f31a893ae21b5459c9a34e0be8a4fdf6803ec101bc80e2903766025d86cbe915985858560405161224793929190613913565b60405180910390a1505050505050565b60006001600160a01b03841661227f5760405162461bcd60e51b815260040161052f90613549565b6001600160a01b0384166000908152600860209081526040808320600a9092528220549091805b828110156124c5578660ff168482815481106122c4576122c46135b6565b600091825260209091206001600590920201015460ff16036124b35760008482815481106122f4576122f46135b6565b90600052602060002090600502016000018054612310906135fb565b80601f016020809104026020016040519081016040528092919081815260200182805461233c906135fb565b80156123895780601f1061235e57610100808354040283529160200191612389565b820191906000526020600020905b81548152906001019060200180831161236c57829003601f168201915b5050505050905061239b8989836125c3565b6123a689898361292f565b6123af81612ac4565b506001600160a01b0389166000908152600a602052604090206123d190612d41565b60ff88166000908152600b602052604090206123ec90612d41565b6123f6600c612d41565b6006546001935060ff16801561240a575086155b1561247457600154604051630aaf17c960e11b81526001600160a01b039091169063155e2f9290612441908c908c90600401613635565b600060405180830381600087803b15801561245b57600080fd5b505af115801561246f573d6000803e3d6000fd5b505050505b7f7911e34642eae38762395a3dd0fa3308d0f8908b92fe36c41543d635ab7cb8f589896040516124a5929190613635565b60405180910390a1506124c5565b806124bd816135e2565b9150506122a6565b509695505050505050565b6000546001600160a01b03163314610dc65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612582612e12565b506040805160c081018252600060a0820181815282526020808301829052835182815290810184529282019290925260608101829052608081019190915290565b6001600160a01b0383166000908152600860205260408120905b81548110156116a35761269b8282815481106125fb576125fb6135b6565b90600052602060002090600502016000018054612617906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054612643906135fb565b80156126905780601f1061266557610100808354040283529160200191612690565b820191906000526020600020905b81548152906001019060200180831161267357829003601f168201915b505050505084612d98565b1561291d57846001600160a01b03168282815481106126bc576126bc6135b6565b60009182526020909120600360059092020101546001600160a01b0316146127415760405162461bcd60e51b815260206004820152603260248201527f5f64656c6574654f6666657246726f6d557365724d617070696e673a206f776e60448201527132b9103237b2b9903737ba1036b0ba31b41760711b606482015260840161052f565b8360ff16828281548110612757576127576135b6565b600091825260209091206001600590920201015460ff16146127e15760405162461bcd60e51b815260206004820152603760248201527f5f64656c6574654f6666657246726f6d557365724d617070696e673a2063617260448201527f644e756d62657220646f6573206e6f74206d617463682e000000000000000000606482015260840161052f565b81546127ef9060019061382d565b8110156128b157815482906128069060019061382d565b81548110612816576128166135b6565b9060005260206000209060050201828281548110612836576128366135b6565b60009182526020909120600590910201806128518382613840565b50600182810154908201805460ff191660ff909216919091179055600280830180546128809284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101555b818054806128c1576128c1613949565b600082815260208120600019909201916005830201906128e18282612f41565b60018201805460ff191690556128fb600283016000612f7b565b506003810180546001600160a01b0319169055600060049091015590556116a3565b80612927816135e2565b9150506125dd565b60ff82166000908152600960205260408120905b81548110156116a3576129618282815481106125fb576125fb6135b6565b15612ab257846001600160a01b0316828281548110612982576129826135b6565b60009182526020909120600360059092020101546001600160a01b031614612a125760405162461bcd60e51b815260206004820152603860248201527f5f64656c6574654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a206f776e657220646f6573206e6f74206d617463682e0000000000000000606482015260840161052f565b8360ff16828281548110612a2857612a286135b6565b600091825260209091206001600590920201015460ff16146127e15760405162461bcd60e51b815260206004820152603d60248201527f5f64656c6574654f6666657246726f6d436172644e756d6265724d617070696e60448201527f673a20636172644e756d62657220646f6573206e6f74206d617463682e000000606482015260840161052f565b80612abc816135e2565b915050612943565b600080805b600754811015612d3a5760075481108015612b955750612b9560078281548110612af557612af56135b6565b90600052602060002090600502016000018054612b11906135fb565b80601f0160208091040260200160405190810160405280929190818152602001828054612b3d906135fb565b8015612b8a5780601f10612b5f57610100808354040283529160200191612b8a565b820191906000526020600020905b815481529060010190602001808311612b6d57829003601f168201915b505050505085612d98565b15612d285760078181548110612bad57612bad6135b6565b60009182526020822060059091020190612bc78282612f41565b60018201805460ff19169055612be1600283016000612f7b565b506003810180546001600160a01b0319169055600060049091015560078054612c0c9060019061382d565b81548110612c1c57612c1c6135b6565b906000526020600020906005020160078281548110612c3d57612c3d6135b6565b6000918252602090912060059091020180612c588382613840565b50600182810154908201805460ff191660ff90921691909117905560028083018054612c879284019190612ef3565b5060038281015490820180546001600160a01b0319166001600160a01b039092169190911790556004918201549101556007805480612cc857612cc8613949565b60008281526020812060001990920191600583020190612ce88282612f41565b60018201805460ff19169055612d02600283016000612f7b565b506003810180546001600160a01b03191690556000600490910155905560019150612d3a565b80612d32816135e2565b915050612ac9565b5092915050565b805480612d905760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f770000000000604482015260640161052f565b600019019055565b600081604051602001612dab919061366e565b6040516020818303038152906040528051906020012083604051602001612dd2919061366e565b6040516020818303038152906040528051906020012014905092915050565b5080546000825560050290600052602060002090810190611b749190612fa0565b6040518060a0016040528060608152602001600060ff1681526020016060815260200160006001600160a01b03168152602001600081525090565b82805482825590600052602060002090601f01602090048101928215612ee35791602002820160005b83821115612eb457835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302612e76565b8015612ee15782816101000a81549060ff0219169055600101602081600001049283019260010302612eb4565b505b50612eef929150612ff0565b5090565b82805482825590600052602060002090601f01602090048101928215612ee357600052602060002091601f016020900482015b82811115612ee3578254825591600101919060010190612f26565b508054612f4d906135fb565b6000825580601f10612f5d575050565b601f016020900490600052602060002090810190611b749190612ff0565b50805460008255601f016020900490600052602060002090810190611b749190612ff0565b80821115612eef576000612fb48282612f41565b60018201805460ff19169055612fce600283016000612f7b565b506003810180546001600160a01b031916905560006004820155600501612fa0565b5b80821115612eef5760008155600101612ff1565b80356001600160a01b038116811461301c57600080fd5b919050565b60006020828403121561303357600080fd5b610c8782613005565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561307b5761307b61303c565b604052919050565b600082601f83011261309457600080fd5b813567ffffffffffffffff8111156130ae576130ae61303c565b6130c1601f8201601f1916602001613052565b8181528460208386010111156130d657600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff8116811461301c57600080fd5b600082601f83011261311557600080fd5b8135602067ffffffffffffffff8211156131315761313161303c565b8160051b613140828201613052565b928352848101820192828101908785111561315a57600080fd5b83870192505b8483101561318057613171836130f3565b82529183019190830190613160565b979650505050505050565b600080600080608085870312156131a157600080fd5b843567ffffffffffffffff808211156131b957600080fd5b6131c588838901613083565b95506131d360208801613005565b94506131e1604088016130f3565b935060608701359150808211156131f757600080fd5b5061320487828801613104565b91505092959194509250565b6000806040838503121561322357600080fd5b61322c83613005565b915061323a602084016130f3565b90509250929050565b60006020828403121561325557600080fd5b5035919050565b60006020828403121561326e57600080fd5b610c87826130f3565b60008060006060848603121561328c57600080fd5b833567ffffffffffffffff808211156132a457600080fd5b6132b087838801613083565b94506132be602087016130f3565b935060408601359150808211156132d457600080fd5b506132e186828701613104565b9150509250925092565b60005b838110156133065781810151838201526020016132ee565b50506000910152565b600081518084526133278160208601602086016132eb565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101561336e57815160ff168752958201959082019060010161334f565b509495945050505050565b6000815160a0845261338e60a085018261330f565b905060ff6020840151166020850152604083015184820360408601526133b4828261333b565b6060858101516001600160a01b0316908701526080948501519490950193909352509192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561343257603f19888603018452613420858351613379565b94509285019290850190600101613404565b5092979650505050505050565b8015158114611b7457600080fd5b60006020828403121561345f57600080fd5b8135610c878161343f565b60808152600061347d608083018761330f565b60ff959095166020830152506001600160a01b03929092166040830152606090910152919050565b602081526000610c876020830184613379565b600080600080608085870312156134ce57600080fd5b6134d785613005565b93506134e5602086016130f3565b92506134f360408601613005565b9150613501606086016130f3565b905092959194509250565b60006020828403121561351e57600080fd5b813567ffffffffffffffff81111561353557600080fd5b61354184828501613083565b949350505050565b60208082526010908201526f24b73b30b634b21030b2323932b9b99760811b604082015260600190565b60208082526023908201527f4f6e6c79206f776e6572732063616e2063616c6c20746869732066756e63746960408201526237b71760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016135f4576135f46135cc565b5060010190565b600181811c9082168061360f57607f821691505b60208210810361362f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0392909216825260ff16602082015260400190565b60006020828403121561366357600080fd5b8151610c878161343f565b600082516136808184602087016132eb565b9190910192915050565b6000808354613698816135fb565b600182811680156136b057600181146136c5576136f4565b60ff19841687528215158302870194506136f4565b8760005260208060002060005b858110156136eb5781548a8201529084019082016136d2565b50505082870194505b50929695505050505050565b600060ff821660ff8103613716576137166135cc565b60010192915050565b601f8211156109ce57600081815260208120601f850160051c810160208610156137465750805b601f850160051c820191505b8181101561376557828155600101613752565b505050505050565b815167ffffffffffffffff8111156137875761378761303c565b61379b8161379584546135fb565b8461371f565b602080601f8311600181146137d057600084156137b85750858301515b600019600386901b1c1916600185901b178555613765565b600085815260208120601f198616915b828110156137ff578886015182559484019460019091019084016137e0565b508582101561381d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610552576105526135cc565b81810361384b575050565b61385582546135fb565b67ffffffffffffffff81111561386d5761386d61303c565b61387b8161379584546135fb565b6000601f8211600181146138af57600083156138975750848201545b600019600385901b1c1916600184901b1784556116a3565b600085815260209020601f19841690600086815260209020845b838110156138e957828601548255600195860195909101906020016138c9565b508583101561381d5793015460001960f8600387901b161c19169092555050600190811b01905550565b6001600160a01b038416815260ff831660208201526060604082018190526000906139409083018461333b565b95945050505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b98367e701dbe64aa3caace62f2db04f53f237272420308d15beb4f6d1e1c62964736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} From 3a23bc87c17d12e7735b812e3844f0f00bc9fe58 Mon Sep 17 00:00:00 2001 From: dappsar Date: Sun, 26 Nov 2023 23:15:46 -0300 Subject: [PATCH 4/8] updated github actions dependencies --- .github/workflows/codeql.yml | 2 +- .github/workflows/gcp.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 11eef44b..0a7d54d5 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -46,7 +46,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/gcp.yml b/.github/workflows/gcp.yml index 2a4cfc7a..964961a0 100644 --- a/.github/workflows/gcp.yml +++ b/.github/workflows/gcp.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Google Auth id: 'auth' From f326dd0abbb078ba70f2b87dd580f553e9092c7f Mon Sep 17 00:00:00 2001 From: dappsar Date: Sun, 26 Nov 2023 23:16:11 -0300 Subject: [PATCH 5/8] removed console logs --- src/components/Footer/FooterButtons.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/Footer/FooterButtons.jsx b/src/components/Footer/FooterButtons.jsx index 411fcff3..fa66b852 100644 --- a/src/components/Footer/FooterButtons.jsx +++ b/src/components/Footer/FooterButtons.jsx @@ -3,10 +3,7 @@ import Link from 'next/link' import { useLayoutContext } from '../../hooks' function FooterButtons () { - const { showDefaultButtons, showButtons, buttonFunctions } = useLayoutContext() - - console.log({ showButtons, showDefaultButtons, buttonFunctions }) const DefaultButtons = () => (
From de233add08814437158b35e3d98a87ea107aadf6 Mon Sep 17 00:00:00 2001 From: dappsar Date: Sun, 26 Nov 2023 23:18:09 -0300 Subject: [PATCH 6/8] refactor offers: publish, limits --- public/locales/br/common.json | 4 +- public/locales/en/common.json | 4 +- public/locales/es/common.json | 5 +- src/context/LayoutContext.js | 27 +++---- src/sections/Gamma/GammaAlbum.jsx | 8 --- src/sections/Gamma/GammaAlbumPublish.jsx | 45 ++++++------ src/sections/Gamma/GammaCardInfo.jsx | 89 +++++++----------------- src/sections/Gamma/GammaCardOffers.jsx | 11 ++- src/sections/Gamma/GammaMain.jsx | 2 + src/services/offers.js | 36 +++++----- 10 files changed, 96 insertions(+), 135 deletions(-) diff --git a/public/locales/br/common.json b/public/locales/br/common.json index a017db57..3eb0b744 100644 --- a/public/locales/br/common.json +++ b/public/locales/br/common.json @@ -129,5 +129,7 @@ "offer_exchange_message": "Você vai enviar o carta #{CARD_NUMBER_FROM} para o usuário com a carteira {WALLET_TO} e receberá em troca a carta #{CARD_NUMBER_TO}.", "offer_only_own_offer": "A única oferta disponível para esta carta é a sua.", "offer_card_number_empty": "Não há ofertas para esta carta.", - "offer_card_no_la_tienes": "Você não tem este cartão para trocá-lo." + "offer_card_no_la_tienes": "Você não tem este cartão para trocá-lo.", + "offer_user_limit": "Você atingiu o limite de ofertas que pode fazer. Aguarde para confirmar uma troca ou remover uma publicação.", + "offer_game_limit": "No momento, nenhuma outra oferta pode ser feita. Tente em alguns dias." } diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 12404c63..dccda739 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -129,5 +129,7 @@ "offer_exchange_message": "You are going to send card #{CARD_NUMBER_FROM} to the user with wallet {WALLET_TO} and will receive in return the card #{CARD_NUMBER_TO}.", "offer_only_own_offer": "The only offer available for this card is yours.", "offer_card_number_empty": "There are no offers for this card.", - "offer_card_no_la_tienes": "You do not have this card to exchange it." + "offer_card_no_la_tienes": "You do not have this card to exchange it.", + "offer_user_limit": "You have reached the limit of offers you can make. Wait to confirm an exchange or remove a publication.", + "offer_game_limit": "At the moment, no more offers can be made. Please try in a few days." } \ No newline at end of file diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 97896add..39271f76 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -129,6 +129,9 @@ "offer_exchange_message": "Vas a enviar la carta #{CARD_NUMBER_FROM} al usuario con wallet {WALLET_TO} y recibirás a cambio la carta #{CARD_NUMBER_TO}.", "offer_only_own_offer": "La única oferta que hay para ésta carta es la tuya.", "offer_card_number_empty": "No hay ofertas para esta carta.", - "offer_card_no_la_tienes": "No tienes esta carta para poder intercambiarla." + "offer_card_no_la_tienes": "No tienes esta carta para poder intercambiarla.", + "offer_user_limit": "Alcanzaste el límite de ofertas que podes realizar. Espera a confirmar algún intercambio o quita alguna publicación.", + "offer_game_limit": "Por el momento, no se pueden realizar más ofertas. Intenta en unos días." + } \ No newline at end of file diff --git a/src/context/LayoutContext.js b/src/context/LayoutContext.js index 7e3203ef..98466b07 100644 --- a/src/context/LayoutContext.js +++ b/src/context/LayoutContext.js @@ -26,23 +26,18 @@ function LayoutProvider({ children }) { const [buttonFunctions, setButtonFunctions] = useState([null, null, null, null]) const [showButtons, setShowButtons] = useState([true, true, true, true]) - const updateButtonFunctions = useCallback( - (index, newFunction) => { - setButtonFunctions((prevFunctions) => { - const updatedFunctions = [...prevFunctions] - updatedFunctions[index] = newFunction - return updatedFunctions - }) - }, - [buttonFunctions] - ) + const updateButtonFunctions = useCallback((index, newFunction) => { + setButtonFunctions((prevFunctions) => { + const updatedFunctions = [...prevFunctions] + updatedFunctions[index] = newFunction + return updatedFunctions + }) + }, []) - const updateShowButtons = useCallback( - (btn1, btn2, btn3, btn4) => { - setShowButtons(btn1, btn2, btn3, btn4) - }, - [showButtons] - ) + + const updateShowButtons = useCallback((btn1, btn2, btn3, btn4) => { + setShowButtons(btn1, btn2, btn3, btn4) + }, []) const startLoading = useCallback(() => { setLoading(true) diff --git a/src/sections/Gamma/GammaAlbum.jsx b/src/sections/Gamma/GammaAlbum.jsx index 0224095c..1059b3dc 100644 --- a/src/sections/Gamma/GammaAlbum.jsx +++ b/src/sections/Gamma/GammaAlbum.jsx @@ -81,14 +81,6 @@ const GammaAlbum = (props) => { // setCardInfoOpened(true) } - const handleOpenPublishOffers = async () => { - setCardInfo(false) - setCardPublish(true) - // setCardInfoOpened(true) - } - - - const handleFinishInfoCard = async (update = true) => { startLoading() if (update) { diff --git a/src/sections/Gamma/GammaAlbumPublish.jsx b/src/sections/Gamma/GammaAlbumPublish.jsx index 2d3b7aa9..3e2ea836 100644 --- a/src/sections/Gamma/GammaAlbumPublish.jsx +++ b/src/sections/Gamma/GammaAlbumPublish.jsx @@ -8,25 +8,29 @@ import { useLayoutContext } from '../../hooks' import CustomImage from '../../components/CustomImage' import { useWeb3Context } from '../../hooks' import {useTranslation} from 'next-i18next' -import { createOffer, getOffersByUserCounter, getOffersCounter } from '../../services/offers' +import { createOffer } from '../../services/offers' const GammaAlbumPublish = (props) => { const {t} = useTranslation() const { paginationObj, cardNumberOffered, handleFinishPublish } = props const { gammaOffersContract } = useWeb3Context() const [ selectedCards, setSelectedCards ] = useState([]) + const { startLoading, stopLoading , bookRef, windowSize, updateShowButtons, updateButtonFunctions, ToggleShowDefaultButtons } = useLayoutContext() - + useEffect(() => { ToggleShowDefaultButtons(false) updateShowButtons([false, true, true, false]) - updateButtonFunctions(1, handleConfirmClick) updateButtonFunctions(2, handleCancelClick) - }, [handleConfirmClick, handleCancelClick]) - + }, [handleCancelClick]) //eslint-disable-line react-hooks/exhaustive-deps + + useEffect(() => { + updateButtonFunctions(1, handleConfirmClick) + }, [handleConfirmClick, selectedCards]) //eslint-disable-line react-hooks/exhaustive-deps + function emitInfo (message) { Swal.fire({ title: '', @@ -56,21 +60,18 @@ const GammaAlbumPublish = (props) => { timer: 5000 }) } - - const validToConfirm = () => { + + const handleConfirmClick = useCallback(async () => { if (selectedCards.length === 0) { emitInfo (t('publish_offer_no_cards_selected')) - return false + return } - return true - } - - const handleConfirmClick = useCallback(async () => { - if (!validToConfirm) return try { startLoading() await createOffer(gammaOffersContract, cardNumberOffered, selectedCards) + ToggleShowDefaultButtons(true) + handleFinishPublish(true) stopLoading() Swal.fire({ title: '', @@ -79,8 +80,6 @@ const GammaAlbumPublish = (props) => { showConfirmButton: false, timer: 2000 }) - ToggleShowDefaultButtons(true) - handleFinishPublish(true) } catch (ex) { stopLoading() console.error(ex.message) @@ -89,19 +88,16 @@ const GammaAlbumPublish = (props) => { else emitError(t('publish_offer_error')) } - }, [gammaOffersContract, selectedCards]) + }, [gammaOffersContract, cardNumberOffered, selectedCards]) //eslint-disable-line react-hooks/exhaustive-deps const handleCancelClick = useCallback(() => { ToggleShowDefaultButtons(true) - handleFinishPublish() - }, []) + handleFinishPublish(false) + }, []) //eslint-disable-line react-hooks/exhaustive-deps const handleCardClick = async (selectedCard) => { // const page = bookRef.current.pageFlip().getCurrentPageIndex() - - // console.log(selectedCards, selectedCards.length) - if (parseInt(selectedCard) === parseInt(cardNumberOffered)) { emitWarning (t('publish_offer_error_own_card_number')) } else { @@ -137,6 +133,11 @@ const GammaAlbumPublish = (props) => {
) + PageContentCard.propTypes = { + item: PropTypes.number, + index: PropTypes.number + } + const PageContent = ({ page, pageNumber }) => { let divWrapperClassName = 'grid-wrapper-left' if (pageNumber % 2 === 0) { // par @@ -231,7 +232,7 @@ const GammaAlbumPublish = (props) => { GammaAlbumPublish.propTypes = { paginationObj: PropTypes.object, cardNumberOffered: PropTypes.string, - handleFinishInfoCard: PropTypes.func + handleFinishPublish: PropTypes.func } export default GammaAlbumPublish diff --git a/src/sections/Gamma/GammaCardInfo.jsx b/src/sections/Gamma/GammaCardInfo.jsx index 109362d6..1a53b2b7 100644 --- a/src/sections/Gamma/GammaCardInfo.jsx +++ b/src/sections/Gamma/GammaCardInfo.jsx @@ -8,19 +8,19 @@ import { MdOutlineLocalOffer } from "react-icons/md" import { useWeb3Context } from '../../hooks' import { storageUrlGamma, openSeaUrlGamma } from '../../config' import { hasCard } from '../../services/gamma' -import { createOffer, removeOfferByCardNumber } from '../../services/offers' +import { removeOfferByCardNumber } from '../../services/offers' import { useLayoutContext } from '../../hooks' -import { checkInputAddress, checkInputArrayCardNumbers } from '../../utils/InputValidators' +import { checkInputAddress } from '../../utils/InputValidators' import GammaAlbumPublish from './GammaAlbumPublish' +import { canUserPublishOffer, canAnyUserPublishOffer } from '../../services/offers' const GammaCardInfo = (props) => { - const { handleFinishInfoCard, handleOpenCardOffers, userCard, paginationObj } = props const {t} = useTranslation() const { bookRef, windowSize, loading, startLoading, stopLoading } = useLayoutContext() const { gammaCardsContract, gammaOffersContract, walletAddress } = useWeb3Context() + const { handleFinishInfoCard, handleOpenCardOffers, userCard, paginationObj } = props const [ userHasCard, setUserHasCard ] = useState(false) const [ cardPublish, setCardPublish ] = useState(false) - const [receivedSelectedCards, setReceivedSelectedCards] = useState([]) function emitError (message) { Swal.fire({ @@ -32,16 +32,16 @@ const GammaCardInfo = (props) => { }) } - function emitWarning (message) { + function emitInfo (message) { Swal.fire({ title: '', text: message, - icon: 'warning', + icon: 'info', showConfirmButton: true, - timer: 5000 + timer: 6700 }) } - + const verifyUserHasCard = async () => { try { startLoading() @@ -64,60 +64,6 @@ const GammaCardInfo = (props) => { handleOpenCardOffers() } - /* - const handlePublishClick = async () => { - - - try { - const result = await Swal.fire({ - text: `${t('cartas_a_cambio')}`, - input: 'text', - inputPlaceholder: '3, 23, 44, 55, 119, 2', - inputAttributes: { - min: 1, - max: 60 - }, - inputValidator: (value) => { - if (!checkInputArrayCardNumbers(value, userCard.name)) - return `${t('publish_offer_error_invalid_numbers')}` - }, - showDenyButton: false, - showCancelButton: true, - confirmButtonText: `${t('publicar')}`, - confirmButtonColor: '#005EA3', - color: 'black', - background: 'white', - customClass: { - image: 'cardalertimg', - input: 'alertinput' - } - }) - - if (result.isConfirmed) { - startLoading() - await createOffer(gammaOffersContract, gammaCardsContract, walletAddress, userCard.name, result.value) - handleFinishInfoCard(true) - stopLoading() - Swal.fire({ - title: '', - text: t('confirmado'), - icon: 'success', - showConfirmButton: false, - timer: 2000 - }) - } - - } catch (ex) { - stopLoading() - console.log(ex.message) - if (ex.message == 'publish_offer_error_own_card_number') - emitWarning(t('publish_offer_error_own_card_number')) - else - emitError(t('publish_offer_error')) - } - } - */ - const handleFinishPublish = (update) => { setCardPublish(false) if (update) { @@ -232,6 +178,23 @@ const GammaCardInfo = (props) => { } } + const handlePublishClick = async () => { + startLoading() + + const canUserPublishResult = await canUserPublishOffer(gammaOffersContract, walletAddress) + if (!canUserPublishResult) { + emitInfo(t('offer_user_limit')) + } else { + const canAnyUserPublishResult = await canAnyUserPublishOffer(gammaOffersContract) + if (!canAnyUserPublishResult) { + emitInfo(t('offer_game_limit')) + } else { + setCardPublish(true) + } + } + stopLoading() + } + const OfferButton = () => (
handleOfferClick()} @@ -263,7 +226,7 @@ const GammaCardInfo = (props) => { const PublishButton = () => (
setCardPublish(true)} // handlePublishClick()} + onClick={() => handlePublishClick()} > {t('publicar')}
diff --git a/src/sections/Gamma/GammaCardOffers.jsx b/src/sections/Gamma/GammaCardOffers.jsx index 5a7eade2..ed147c9a 100644 --- a/src/sections/Gamma/GammaCardOffers.jsx +++ b/src/sections/Gamma/GammaCardOffers.jsx @@ -70,8 +70,6 @@ const GammaCardOffers = (props) => { } const offer = findFirstOfferByCardNumber(item) - // console.log('handleExchangeClick offer', offer) - const walletFrom = walletAddress const cardNumberFrom = item const walletTo = offer.offerWallet @@ -151,6 +149,11 @@ const GammaCardOffers = (props) => {
) } + + OfferDetailPage.propTypes = { + page: PropTypes.object, + pageNumber: PropTypes.number + } const BookOffer = () => (
@@ -200,7 +203,9 @@ const GammaCardOffers = (props) => { GammaCardOffers.propTypes = { offerData: PropTypes.array, - handleFinishInfoCard: PropTypes.func + handleFinishInfoCard: PropTypes.func, + cardNumber: PropTypes.number, + paginationObj: PropTypes.object } export default GammaCardOffers diff --git a/src/sections/Gamma/GammaMain.jsx b/src/sections/Gamma/GammaMain.jsx index 06e825b4..50437969 100644 --- a/src/sections/Gamma/GammaMain.jsx +++ b/src/sections/Gamma/GammaMain.jsx @@ -236,6 +236,7 @@ const GammaMain = () => { const buyPacksContract = async (numberOfPacks) => { + /* gammaPacksContract.on('PackPurchase', (returnValue, theEvent) => { // console.log('evento PacksPurchase', returnValue) for (let i = 0; i < theEvent.length; i++) { @@ -243,6 +244,7 @@ const GammaMain = () => { // console.log(pack_number) } }) + */ try { startLoading() diff --git a/src/services/offers.js b/src/services/offers.js index 4aaec901..e5defa83 100644 --- a/src/services/offers.js +++ b/src/services/offers.js @@ -1,16 +1,15 @@ -import { ethers } from 'ethers' -import { hasCard } from './gamma' +const { BigNumber } = require('ethers') +import { v4 as uuidv4 } from 'uuid' export const createOffer = async (offersContract, cardNumber, wantedCardNumbers) => { - console.log('createOffer', { offersContract, cardNumber, wantedCardNumbers }) + console.log('createOffer', { cardNumber, wantedCardNumbers }) for (const wantedCard of wantedCardNumbers) { if (wantedCard === cardNumber) { throw new Error('publish_offer_error_own_card_number') } } - - const trx = await offersContract.createOffer(cardNumber, wantedCardNumbers) + const trx = await offersContract.createOffer(uuidv4(), cardNumber, wantedCardNumbers) await trx.wait() } @@ -34,22 +33,20 @@ export const getOffers = async (offersContract) => { } } -export const getOffersCounter = async () => { +export const canUserPublishOffer = async (offersContract, walletAddress) => { try { - const trx = await offersContract.getOffersCounter() - console.log({ trx }) - return trx + const result = await offersContract.canUserPublishOffer(walletAddress) + return result } catch (e) { console.error({ e }) throw e } } -export const getOffersByUserCounter = async () => { +export const canAnyUserPublishOffer = async (offersContract) => { try { - const trx = await offersContract.getOffersByUserCounter() - console.log({ trx }) - return trx + const result = await offersContract.canAnyUserPublishOffer() + return result } catch (e) { console.error({ e }) throw e @@ -75,25 +72,24 @@ export const getOffersByCardNumber = async (offersContract, cardNumber) => { if (!offersContract) return // [0][0] offerId, [0][1] cardNumber, [0][2] wantedCards, [0][3] wallet que ofertó + // [0][4] timeStamp const offers = await offersContract.getOffersByCardNumber(cardNumber) - // console.log('ofertas', offers) if (!offers) return [] const offerObject = offers.map((item) => { - const id = ethers.BigNumber.from(item[0]).toNumber() + console.log('item', { item }) return { - offerId: parseInt(id), - offerWallet: item[3], + offerId: item[0], offerCard: parseInt(item[1]), - wantedCards: item[2] + wantedCards: item[2], + offerWallet: item[3], + timeStamp: item[4] } }) - // console.log('getOffersByCardNumber result', offerObject) // El contrato puede devolver una ofer vacia en lugar de null, // por lo que quedará el offerId en 0 const filteredResult = offerObject.filter((item) => item.offerId !== 0) - return filteredResult } catch (e) { console.error({ e }) From 1b77b7bf70579deac4040d46c3eb744a722886b1 Mon Sep 17 00:00:00 2001 From: dappsar Date: Sun, 26 Nov 2023 23:35:24 -0300 Subject: [PATCH 7/8] removed console logs --- src/context/LayoutContext.js | 1 - src/context/Web3Context.js | 1 - src/sections/Gamma/GammaCardInfo.jsx | 3 +-- src/sections/Gamma/GammaCardOffers.jsx | 4 ++-- src/services/offers.js | 1 - 5 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/context/LayoutContext.js b/src/context/LayoutContext.js index 98466b07..5d7d9d83 100644 --- a/src/context/LayoutContext.js +++ b/src/context/LayoutContext.js @@ -34,7 +34,6 @@ function LayoutProvider({ children }) { }) }, []) - const updateShowButtons = useCallback((btn1, btn2, btn3, btn4) => { setShowButtons(btn1, btn2, btn3, btn4) }, []) diff --git a/src/context/Web3Context.js b/src/context/Web3Context.js index dc403ef8..ccc3a673 100644 --- a/src/context/Web3Context.js +++ b/src/context/Web3Context.js @@ -94,7 +94,6 @@ function Web3ContextProvider({ children }) { gammaCardsAbi.abi, _signer ) - console.log('web3 gammaCardsContractInstance', gammaCardsContractInstance) const gammaOffersContractInstance = new ethers.Contract( CONTRACTS.gammaOffersAddress, gammaOffersAbi.abi, diff --git a/src/sections/Gamma/GammaCardInfo.jsx b/src/sections/Gamma/GammaCardInfo.jsx index 1a53b2b7..6be9b009 100644 --- a/src/sections/Gamma/GammaCardInfo.jsx +++ b/src/sections/Gamma/GammaCardInfo.jsx @@ -46,7 +46,6 @@ const GammaCardInfo = (props) => { try { startLoading() const result = await hasCard(gammaCardsContract, walletAddress, userCard.name) - // console.log('verifyUserHasCard', result) setUserHasCard(result) stopLoading() } catch (ex) { @@ -103,7 +102,7 @@ const GammaCardInfo = (props) => { } catch (ex) { stopLoading() - console.log(ex.message) + console.error(ex.message) emitError(t('unpublish_offer_error')) } } diff --git a/src/sections/Gamma/GammaCardOffers.jsx b/src/sections/Gamma/GammaCardOffers.jsx index ed147c9a..01f760ef 100644 --- a/src/sections/Gamma/GammaCardOffers.jsx +++ b/src/sections/Gamma/GammaCardOffers.jsx @@ -110,7 +110,7 @@ const GammaCardOffers = (props) => { } catch (ex) { stopLoading() - console.log(ex.message) + console.error(ex.message) emitWarning(t('offer_exchange_error')) } } @@ -151,7 +151,7 @@ const GammaCardOffers = (props) => { } OfferDetailPage.propTypes = { - page: PropTypes.object, + page: PropTypes.array, pageNumber: PropTypes.number } diff --git a/src/services/offers.js b/src/services/offers.js index e5defa83..6aa54096 100644 --- a/src/services/offers.js +++ b/src/services/offers.js @@ -77,7 +77,6 @@ export const getOffersByCardNumber = async (offersContract, cardNumber) => { if (!offers) return [] const offerObject = offers.map((item) => { - console.log('item', { item }) return { offerId: item[0], offerCard: parseInt(item[1]), From 67bd401142a8e2cf0bfacd8107690331b61cc22e Mon Sep 17 00:00:00 2001 From: dappsar Date: Sun, 26 Nov 2023 23:42:09 -0300 Subject: [PATCH 8/8] updated offers contract address --- src/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.js b/src/config.js index 541a4d70..b55b9f83 100644 --- a/src/config.js +++ b/src/config.js @@ -48,7 +48,7 @@ export const CONTRACTS = { gammaCardsAddress: process.env.NEXT_PUBLIC_GAMMA_CARDS_ADDRESS || '0xb2da44Bd77e922142F3Ef20504826e83D4e9fc0C', gammaOffersAddress: - process.env.NEXT_PUBLIC_GAMMA_OFFERS_ADDRESS || '0x18537721EDfdEa2060640314BD996672E0DB921D' + process.env.NEXT_PUBLIC_GAMMA_OFFERS_ADDRESS || '0xc2E8cEE4dC93F24b9Bc70A100083C0A6075694cE' } export const openSeaUrlAlpha = is_production