From 233e63bf813fc47afba65049aa7e33deb94bcfb0 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Mon, 27 Nov 2023 19:38:53 +0800 Subject: [PATCH 01/25] make directory smart-contract and make spaces for future updating. --- docs-sphinx/index.rst | 1 + .../smart-contract/association-contract.md | 0 .../smart-contract/configuration-contract.md | 0 .../smart-contract/consensus-contract.md | 0 .../smart-contract/cross-chain-contract.md | 0 .../smart-contract/economic-contract.md | 0 .../smart-contract/election-contract.md | 0 .../smart-contract/genesis-contract.md | 28 +++++++++++++++++++ .../reference/smart-contract/index.rst | 28 +++++++++++++++++++ .../smart-contract/multi-token-contract.md | 0 .../smart-contract/parliament-contract.md | 0 .../smart-contract/profit-contract.md | 0 .../smart-contract/referendum-contract.md | 0 .../smart-contract/token-convert-contract.md | 0 .../smart-contract/token-holder-contract.md | 0 .../smart-contract/treasury-contract.md | 0 .../reference/smart-contract/vote-contract.md | 0 17 files changed, 57 insertions(+) create mode 100644 docs-sphinx/reference/smart-contract/association-contract.md create mode 100644 docs-sphinx/reference/smart-contract/configuration-contract.md create mode 100644 docs-sphinx/reference/smart-contract/consensus-contract.md create mode 100644 docs-sphinx/reference/smart-contract/cross-chain-contract.md create mode 100644 docs-sphinx/reference/smart-contract/economic-contract.md create mode 100644 docs-sphinx/reference/smart-contract/election-contract.md create mode 100644 docs-sphinx/reference/smart-contract/genesis-contract.md create mode 100644 docs-sphinx/reference/smart-contract/index.rst create mode 100644 docs-sphinx/reference/smart-contract/multi-token-contract.md create mode 100644 docs-sphinx/reference/smart-contract/parliament-contract.md create mode 100644 docs-sphinx/reference/smart-contract/profit-contract.md create mode 100644 docs-sphinx/reference/smart-contract/referendum-contract.md create mode 100644 docs-sphinx/reference/smart-contract/token-convert-contract.md create mode 100644 docs-sphinx/reference/smart-contract/token-holder-contract.md create mode 100644 docs-sphinx/reference/smart-contract/treasury-contract.md create mode 100644 docs-sphinx/reference/smart-contract/vote-contract.md diff --git a/docs-sphinx/index.rst b/docs-sphinx/index.rst index 19d912b311..892183435b 100644 --- a/docs-sphinx/index.rst +++ b/docs-sphinx/index.rst @@ -55,6 +55,7 @@ Welcome to AElf's official documentation! Smart Contract API Acs Introduction Command-line Interface + Smart Contract .. toctree:: diff --git a/docs-sphinx/reference/smart-contract/association-contract.md b/docs-sphinx/reference/smart-contract/association-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/configuration-contract.md b/docs-sphinx/reference/smart-contract/configuration-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/consensus-contract.md b/docs-sphinx/reference/smart-contract/consensus-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/cross-chain-contract.md b/docs-sphinx/reference/smart-contract/cross-chain-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/economic-contract.md b/docs-sphinx/reference/smart-contract/economic-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/election-contract.md b/docs-sphinx/reference/smart-contract/election-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md new file mode 100644 index 0000000000..bef5c225ed --- /dev/null +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -0,0 +1,28 @@ +# Overview + +Genesis Contract, also known as the Zero Contract, is mainly used to deploy and maintain smart contracts running on the aelf blockchain. + +# Deploy and update contracts + +There is a critical data structure defined in `aelf/core.proto`, called SmartContractRegistration: + +```C# +message SmartContractRegistration { + // The category of contract code(0: C#). + sint32 category = 1; + // The byte array of the contract code. + bytes code = 2; + // The hash of the contract code. + Hash code_hash = 3; + // Whether it is a system contract. + bool is_system_contract = 4; + // The version of the current contract. + int32 version = 5; + // The version of the contract. + string contract_version = 6; + // The address of the current contract. + Address contract_address = 7; + // Indicates if the contract is the user contract. + bool is_user_contract = 8; +} +``` diff --git a/docs-sphinx/reference/smart-contract/index.rst b/docs-sphinx/reference/smart-contract/index.rst new file mode 100644 index 0000000000..2fd7f01985 --- /dev/null +++ b/docs-sphinx/reference/smart-contract/index.rst @@ -0,0 +1,28 @@ +Smart Contract +=================== + +This section gives the usages, explanations, and implementations of current +system contracts. It’s not meant to be exhaustive. With some useful methods +we give the demo code of interaction, these demos will be useful during +developing user contracts. + + +.. toctree:: + :caption: Smart Contract + :maxdepth: 1 + + Genesis Contract + Consensus Contract + Multi Token Contract + Cross chain Contract + Vote Contract + Profit Contract + Election Contract + Association Contract + Referendum Contract + Parliament Contract + Treasury Contract + Token Holder Contract + Economic Contract + Token Convert Contract + Configuration Contract diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/parliament-contract.md b/docs-sphinx/reference/smart-contract/parliament-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/profit-contract.md b/docs-sphinx/reference/smart-contract/profit-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/referendum-contract.md b/docs-sphinx/reference/smart-contract/referendum-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/token-convert-contract.md b/docs-sphinx/reference/smart-contract/token-convert-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/token-holder-contract.md b/docs-sphinx/reference/smart-contract/token-holder-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/treasury-contract.md b/docs-sphinx/reference/smart-contract/treasury-contract.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs-sphinx/reference/smart-contract/vote-contract.md b/docs-sphinx/reference/smart-contract/vote-contract.md new file mode 100644 index 0000000000..e69de29bb2 From 6a5ca380f12bf371e12792abf4df4d4dd8ff2c93 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 28 Nov 2023 11:44:17 +0800 Subject: [PATCH 02/25] Initial commit of genesis contract doc. --- .../smart-contract/genesis-contract.md | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index bef5c225ed..3b2543ee23 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -26,3 +26,115 @@ message SmartContractRegistration { bool is_user_contract = 8; } ``` +Smart Contract code is store in the `code` field. + +However, each `SmartContractRegistration` entity is not a one-to-one correspondence with the contract, and its storage structure is: + +```C# +public MappedState SmartContractRegistrations { get; set; } +``` + +`SmartContractRegistration` entity can be fetched by the hash value of the contract code. In fact, it is only written once when deploying the contract. + +The data structure that corresponds one-to-one with contracts is called `ContractInfo`. +Structure `ContractInfo` is defined in `acs0.proto`. + +```C# +message ContractInfo +{ + // The serial number of the contract. + int64 serial_number = 1; + // The author of the contract, this is the person who deployed the contract. + aelf.Address author = 2; + // The category of contract code(0: C#). + sint32 category = 3; + // The hash of the contract code. + aelf.Hash code_hash = 4; + // Whether it is a system contract. + bool is_system_contract = 5; + // The version of the current contract. + int32 version = 6; + string contract_version = 7; + // Indicates if the contract is the user contract. + bool is_user_contract = 8; +} +``` + +We use the MappedState to store related instances. + +```C# +public MappedState ContractInfos { get; set; } +``` + +From the `code_hash` field of `ContractInfo`, it is not difficult to guess: + +1. When trying to retrieve the contract code, the `code_hash` of ContractInfo is first read, and then the contract code itself is read from `State.SmartContractRegistrations` mapped state. +2. Upgrading a contract on aelf is actually replacing the `code_hash` of `ContractInfo`. + +# Calculation of contract address + +The contract address is actually calculated through a field that increases with the number of contract deployments. + +```C# +public Int64State ContractSerialNumber { get; set; } +``` + +Its calculation process is located in the `DeploySmartContract` method: + +```C# +var contractAddress = AddressHelper.BuildContractAddress(Context.ChainId, serialNumber); +``` + +- The contract address of each chain of aelf is different. +- The contract address is not related to the contract code, but only to the order in which it is deployed on this chain. + - Therefore, when testing newly written contracts in `aelf-boilerplate` or `aelf-developer-tools`, the new contract always has a fixed address. + +After the 1.6.0 version, Salt is added to the imported parameter of the deployment/upgrade contract. The contract address is calculated by using the Deployer address of the deployment account and the hash value Salt. + +```C# +var contractAddress = AddressHelper.ComputeContractAddress(deployer, salt); +``` + +- Deploying contracts with the same account and using the same Salt can make the contract address of each chain of aelf the same. + +# Contract deployment and update process + +## Deploy contract with audit + +The current pipeline starts with Propose, which generates a parliamentary proposal. +When more than 2/3 of the BPs agree to deploy/update, a new proposal is released to request code inspection. +Finally, after the code inspection is passed, the real contract deployment/upgrade will be achieved through the proposal of releasing code inspection. + +## Deploy contract without audit + +Developers send deployment/update user contract transactions, generate a parliamentary CodeCheck proposal, and when more than 2/3 of the BPs conduct code checks and pass, achieve real contract deployment/upgrade through the proposal of automatically releasing code checks. + +## Contract deployment and upgrade new version number + +When upgrading a contract, check the contract version information +- If the contract version is less than or equal to the original contract version, the upgrade contract transaction fails + The old version of the contract only has a version number after being upgraded. +- If the version number is increasing , the upgrade contract transaction is successful. + +In the updateSmartContract method, increase the version number judgment: + +```C# +var contractInfo = Context.UpdateSmartContract(contractAddress, reg, null, info.ContractVersion); +Assert(contractInfo.IsSubsequentVersion, + $"The version to be deployed is lower than the effective version({info.ContractVersion}), please correct the version number."); +``` + +# Contract error message + + +| Method | Error message | Note | +| --- | --- | --- | +| DeployUserSmartContract | No permission. | Trying to deploy smart contract to an aelf private sidechain, and the transaction sender is not in allowlist. | +| | contract code has already been deployed before. | Contract code deployed | +| | Already proposed. | Duplicate deployment request | +| UpdateUserSmartContract | Contract not found. | Contract does not exist | +| | No permission. | The updated contract author is not myself | +| | Code is not changed. | The contract code has not changed | +| | contract code has already been deployed before. | Contract code deployed | +| | The version to be deployed is lower than the effective version({currentVersion}), please correct the version number. | Updated contract version number is too low | +| | Already proposed. | Duplicate update request | From 9291ff70fa09f31f21fd90ecc1a6fb482a2c3de4 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 28 Nov 2023 12:42:35 +0800 Subject: [PATCH 03/25] Fix smart-contract/index.rst --- docs-sphinx/reference/smart-contract/index.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/index.rst b/docs-sphinx/reference/smart-contract/index.rst index 2fd7f01985..63cc5bf7eb 100644 --- a/docs-sphinx/reference/smart-contract/index.rst +++ b/docs-sphinx/reference/smart-contract/index.rst @@ -1,5 +1,5 @@ Smart Contract -=================== +============== This section gives the usages, explanations, and implementations of current system contracts. It’s not meant to be exhaustive. With some useful methods @@ -8,8 +8,6 @@ developing user contracts. .. toctree:: - :caption: Smart Contract - :maxdepth: 1 Genesis Contract Consensus Contract From a910016a7d1e391995e1deca26c9ddf6e0953a90 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 28 Nov 2023 12:51:12 +0800 Subject: [PATCH 04/25] Add titles to each system contract doc. --- .../reference/smart-contract/association-contract.md | 1 + .../reference/smart-contract/configuration-contract.md | 1 + docs-sphinx/reference/smart-contract/consensus-contract.md | 1 + .../reference/smart-contract/cross-chain-contract.md | 1 + docs-sphinx/reference/smart-contract/economic-contract.md | 1 + docs-sphinx/reference/smart-contract/election-contract.md | 1 + docs-sphinx/reference/smart-contract/index.rst | 6 ------ .../reference/smart-contract/multi-token-contract.md | 1 + docs-sphinx/reference/smart-contract/parliament-contract.md | 1 + docs-sphinx/reference/smart-contract/profit-contract.md | 1 + docs-sphinx/reference/smart-contract/referendum-contract.md | 1 + .../reference/smart-contract/token-convert-contract.md | 1 + .../reference/smart-contract/token-holder-contract.md | 1 + docs-sphinx/reference/smart-contract/treasury-contract.md | 1 + docs-sphinx/reference/smart-contract/vote-contract.md | 1 + 15 files changed, 14 insertions(+), 6 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/association-contract.md b/docs-sphinx/reference/smart-contract/association-contract.md index e69de29bb2..b14b1d7e63 100644 --- a/docs-sphinx/reference/smart-contract/association-contract.md +++ b/docs-sphinx/reference/smart-contract/association-contract.md @@ -0,0 +1 @@ +# Association Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/configuration-contract.md b/docs-sphinx/reference/smart-contract/configuration-contract.md index e69de29bb2..7133366528 100644 --- a/docs-sphinx/reference/smart-contract/configuration-contract.md +++ b/docs-sphinx/reference/smart-contract/configuration-contract.md @@ -0,0 +1 @@ +# Configuration Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/consensus-contract.md b/docs-sphinx/reference/smart-contract/consensus-contract.md index e69de29bb2..8b0cfb91ab 100644 --- a/docs-sphinx/reference/smart-contract/consensus-contract.md +++ b/docs-sphinx/reference/smart-contract/consensus-contract.md @@ -0,0 +1 @@ +# Consensus Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/cross-chain-contract.md b/docs-sphinx/reference/smart-contract/cross-chain-contract.md index e69de29bb2..af1b15060d 100644 --- a/docs-sphinx/reference/smart-contract/cross-chain-contract.md +++ b/docs-sphinx/reference/smart-contract/cross-chain-contract.md @@ -0,0 +1 @@ +# Cross Chain Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/economic-contract.md b/docs-sphinx/reference/smart-contract/economic-contract.md index e69de29bb2..55720533dd 100644 --- a/docs-sphinx/reference/smart-contract/economic-contract.md +++ b/docs-sphinx/reference/smart-contract/economic-contract.md @@ -0,0 +1 @@ +# Economic Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/election-contract.md b/docs-sphinx/reference/smart-contract/election-contract.md index e69de29bb2..389873c70f 100644 --- a/docs-sphinx/reference/smart-contract/election-contract.md +++ b/docs-sphinx/reference/smart-contract/election-contract.md @@ -0,0 +1 @@ +# Election Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/index.rst b/docs-sphinx/reference/smart-contract/index.rst index 63cc5bf7eb..13af5bfb01 100644 --- a/docs-sphinx/reference/smart-contract/index.rst +++ b/docs-sphinx/reference/smart-contract/index.rst @@ -1,12 +1,6 @@ Smart Contract ============== -This section gives the usages, explanations, and implementations of current -system contracts. It’s not meant to be exhaustive. With some useful methods -we give the demo code of interaction, these demos will be useful during -developing user contracts. - - .. toctree:: Genesis Contract diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md index e69de29bb2..7ce467b3e7 100644 --- a/docs-sphinx/reference/smart-contract/multi-token-contract.md +++ b/docs-sphinx/reference/smart-contract/multi-token-contract.md @@ -0,0 +1 @@ +# MultiToken Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/parliament-contract.md b/docs-sphinx/reference/smart-contract/parliament-contract.md index e69de29bb2..abcdc33136 100644 --- a/docs-sphinx/reference/smart-contract/parliament-contract.md +++ b/docs-sphinx/reference/smart-contract/parliament-contract.md @@ -0,0 +1 @@ +# Parliament Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/profit-contract.md b/docs-sphinx/reference/smart-contract/profit-contract.md index e69de29bb2..846da8a311 100644 --- a/docs-sphinx/reference/smart-contract/profit-contract.md +++ b/docs-sphinx/reference/smart-contract/profit-contract.md @@ -0,0 +1 @@ +# Profit Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/referendum-contract.md b/docs-sphinx/reference/smart-contract/referendum-contract.md index e69de29bb2..c45682a0ca 100644 --- a/docs-sphinx/reference/smart-contract/referendum-contract.md +++ b/docs-sphinx/reference/smart-contract/referendum-contract.md @@ -0,0 +1 @@ +# Referendum Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/token-convert-contract.md b/docs-sphinx/reference/smart-contract/token-convert-contract.md index e69de29bb2..a1bb634704 100644 --- a/docs-sphinx/reference/smart-contract/token-convert-contract.md +++ b/docs-sphinx/reference/smart-contract/token-convert-contract.md @@ -0,0 +1 @@ +# Token Convert Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/token-holder-contract.md b/docs-sphinx/reference/smart-contract/token-holder-contract.md index e69de29bb2..2fd8f3f24d 100644 --- a/docs-sphinx/reference/smart-contract/token-holder-contract.md +++ b/docs-sphinx/reference/smart-contract/token-holder-contract.md @@ -0,0 +1 @@ +# Token Holder Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/treasury-contract.md b/docs-sphinx/reference/smart-contract/treasury-contract.md index e69de29bb2..4ac3cfd4d0 100644 --- a/docs-sphinx/reference/smart-contract/treasury-contract.md +++ b/docs-sphinx/reference/smart-contract/treasury-contract.md @@ -0,0 +1 @@ +# Treasury Contract \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/vote-contract.md b/docs-sphinx/reference/smart-contract/vote-contract.md index e69de29bb2..ea60060273 100644 --- a/docs-sphinx/reference/smart-contract/vote-contract.md +++ b/docs-sphinx/reference/smart-contract/vote-contract.md @@ -0,0 +1 @@ +# Vote Contract \ No newline at end of file From 49e6aeacc43c7b11a5c169c6d8532ec4fd85acac Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 28 Nov 2023 12:56:35 +0800 Subject: [PATCH 05/25] Tune subtitles of genesis contract. --- .../smart-contract/genesis-contract.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index 3b2543ee23..b544cbcbe2 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -1,8 +1,10 @@ -# Overview +# Genesis Contract + +## Overview Genesis Contract, also known as the Zero Contract, is mainly used to deploy and maintain smart contracts running on the aelf blockchain. -# Deploy and update contracts +## Deploy and update contracts There is a critical data structure defined in `aelf/core.proto`, called SmartContractRegistration: @@ -71,7 +73,7 @@ From the `code_hash` field of `ContractInfo`, it is not difficult to guess: 1. When trying to retrieve the contract code, the `code_hash` of ContractInfo is first read, and then the contract code itself is read from `State.SmartContractRegistrations` mapped state. 2. Upgrading a contract on aelf is actually replacing the `code_hash` of `ContractInfo`. -# Calculation of contract address +## Calculation of contract address The contract address is actually calculated through a field that increases with the number of contract deployments. @@ -97,19 +99,19 @@ var contractAddress = AddressHelper.ComputeContractAddress(deployer, salt); - Deploying contracts with the same account and using the same Salt can make the contract address of each chain of aelf the same. -# Contract deployment and update process +## Contract deployment and update process -## Deploy contract with audit +### Deploy contract with audit The current pipeline starts with Propose, which generates a parliamentary proposal. When more than 2/3 of the BPs agree to deploy/update, a new proposal is released to request code inspection. Finally, after the code inspection is passed, the real contract deployment/upgrade will be achieved through the proposal of releasing code inspection. -## Deploy contract without audit +### Deploy contract without audit Developers send deployment/update user contract transactions, generate a parliamentary CodeCheck proposal, and when more than 2/3 of the BPs conduct code checks and pass, achieve real contract deployment/upgrade through the proposal of automatically releasing code checks. -## Contract deployment and upgrade new version number +### Contract deployment and upgrade new version number When upgrading a contract, check the contract version information - If the contract version is less than or equal to the original contract version, the upgrade contract transaction fails @@ -124,7 +126,7 @@ Assert(contractInfo.IsSubsequentVersion, $"The version to be deployed is lower than the effective version({info.ContractVersion}), please correct the version number."); ``` -# Contract error message +## Contract error message | Method | Error message | Note | From 474e12f9baafdebeba8cee227c14868191811ebb Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 28 Nov 2023 14:50:16 +0800 Subject: [PATCH 06/25] Optimize genesis contract doc. --- .../smart-contract/genesis-contract.md | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index b544cbcbe2..02894f740d 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -28,7 +28,7 @@ message SmartContractRegistration { bool is_user_contract = 8; } ``` -Smart Contract code is store in the `code` field. +Smart Contract code is stored in the `code` field. However, each `SmartContractRegistration` entity is not a one-to-one correspondence with the contract, and its storage structure is: @@ -36,7 +36,7 @@ However, each `SmartContractRegistration` entity is not a one-to-one corresponde public MappedState SmartContractRegistrations { get; set; } ``` -`SmartContractRegistration` entity can be fetched by the hash value of the contract code. In fact, it is only written once when deploying the contract. +The `SmartContractRegistration` entity can be fetched by the hash value of the contract code. It is only written once when deploying the contract. The data structure that corresponds one-to-one with contracts is called `ContractInfo`. Structure `ContractInfo` is defined in `acs0.proto`. @@ -46,7 +46,7 @@ message ContractInfo { // The serial number of the contract. int64 serial_number = 1; - // The author of the contract, this is the person who deployed the contract. + // The author of the contract is the person who deployed the contract. aelf.Address author = 2; // The category of contract code(0: C#). sint32 category = 3; @@ -70,12 +70,12 @@ public MappedState ContractInfos { get; set; } From the `code_hash` field of `ContractInfo`, it is not difficult to guess: -1. When trying to retrieve the contract code, the `code_hash` of ContractInfo is first read, and then the contract code itself is read from `State.SmartContractRegistrations` mapped state. -2. Upgrading a contract on aelf is actually replacing the `code_hash` of `ContractInfo`. +1. When trying to retrieve the contract code, the `code_hash` of ContractInfo is first read, and then the contract code itself is read from the `State.SmartContractRegistrations` mapped state. +2. Upgrading a contract on aelf is replacing the `code_hash` of `ContractInfo`. ## Calculation of contract address -The contract address is actually calculated through a field that increases with the number of contract deployments. +The contract address is calculated through a field that increases with the number of contract deployments. ```C# public Int64State ContractSerialNumber { get; set; } @@ -89,7 +89,7 @@ var contractAddress = AddressHelper.BuildContractAddress(Context.ChainId, serial - The contract address of each chain of aelf is different. - The contract address is not related to the contract code, but only to the order in which it is deployed on this chain. - - Therefore, when testing newly written contracts in `aelf-boilerplate` or `aelf-developer-tools`, the new contract always has a fixed address. + - Therefore, when testing newly written contracts in `aelf-boilerplate` or `aelf-developer-tools`, the new contract always has a fixed address. After the 1.6.0 version, Salt is added to the imported parameter of the deployment/upgrade contract. The contract address is calculated by using the Deployer address of the deployment account and the hash value Salt. @@ -104,8 +104,8 @@ var contractAddress = AddressHelper.ComputeContractAddress(deployer, salt); ### Deploy contract with audit The current pipeline starts with Propose, which generates a parliamentary proposal. -When more than 2/3 of the BPs agree to deploy/update, a new proposal is released to request code inspection. -Finally, after the code inspection is passed, the real contract deployment/upgrade will be achieved through the proposal of releasing code inspection. +When more than 2/3 of the BPs agree to deploy/update, a new proposal is released to request code inspection. +Finally, after the code audition is passed, the real contract deployment/upgrade will be achieved through the proposal of releasing the code inspection. ### Deploy contract without audit @@ -116,7 +116,7 @@ Developers send deployment/update user contract transactions, generate a parliam When upgrading a contract, check the contract version information - If the contract version is less than or equal to the original contract version, the upgrade contract transaction fails The old version of the contract only has a version number after being upgraded. -- If the version number is increasing , the upgrade contract transaction is successful. +- If the version number is increasing, the upgrade contract transaction is successful. In the updateSmartContract method, increase the version number judgment: @@ -128,15 +128,16 @@ Assert(contractInfo.IsSubsequentVersion, ## Contract error message +`DeployUserSmartContract` method: +- No permission. Trying to deploy a smart contract to an aelf private sidechain, and the transaction sender is not in the allowlist. +- contract code has already been deployed before. Contract code deployed. +- Already proposed. Duplicate deployment request. -| Method | Error message | Note | -| --- | --- | --- | -| DeployUserSmartContract | No permission. | Trying to deploy smart contract to an aelf private sidechain, and the transaction sender is not in allowlist. | -| | contract code has already been deployed before. | Contract code deployed | -| | Already proposed. | Duplicate deployment request | -| UpdateUserSmartContract | Contract not found. | Contract does not exist | -| | No permission. | The updated contract author is not myself | -| | Code is not changed. | The contract code has not changed | -| | contract code has already been deployed before. | Contract code deployed | -| | The version to be deployed is lower than the effective version({currentVersion}), please correct the version number. | Updated contract version number is too low | -| | Already proposed. | Duplicate update request | +`UpdateUserSmartContract` method: +- No permission. The transaction sender is not the contract author. +- Code is not changed. The contract code has not changed since deployment or the previous update. +- The version to be deployed is lower than the effective version({currentVersion}), please correct the version number. The updated contract version number is too low. +- Already proposed. Duplicate deployment request. + +## Usage +See [aelf-command deploy command](https://docs.aelf.io/en/latest/reference/cli/methods.html#deploy-deploy-a-smart-contract). \ No newline at end of file From cbe6546a62917d41aa2a25a31401cababac461d2 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Wed, 29 Nov 2023 18:50:53 +0800 Subject: [PATCH 07/25] Improve genesis contract doc with acs0 explained. --- .../smart-contract/contract-execution.png | Bin 0 -> 23310 bytes .../smart-contract/contract-execution.puml | 11 +++ .../smart-contract/genesis-contract.md | 74 +++++++++++++++++- 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 docs-sphinx/reference/smart-contract/contract-execution.png create mode 100644 docs-sphinx/reference/smart-contract/contract-execution.puml diff --git a/docs-sphinx/reference/smart-contract/contract-execution.png b/docs-sphinx/reference/smart-contract/contract-execution.png new file mode 100644 index 0000000000000000000000000000000000000000..5369c99fe73099f9bc3b38e356fe55e3f8c3a36d GIT binary patch literal 23310 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 literal 0 HcmV?d00001 diff --git a/docs-sphinx/reference/smart-contract/contract-execution.puml b/docs-sphinx/reference/smart-contract/contract-execution.puml new file mode 100644 index 0000000000..905a37a5d7 --- /dev/null +++ b/docs-sphinx/reference/smart-contract/contract-execution.puml @@ -0,0 +1,11 @@ +@startuml +autonumber + +Caller -> TransactionExecutionService: Transaction +TransactionExecutionService -> SmartContractExecutiveService: Call Execute method +SmartContractExecutiveService -> GenesisContract: Call GetSmartContractRegistrationByAddress method +GenesisContract --> SmartContractExecutiveService: SmartContractRegistration instance +SmartContractExecutiveService --> TransactionExecutionService: Executive instance +TransactionExecutionService --> Caller: Transaction Result + +@enduml \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index 02894f740d..4570b26441 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -4,7 +4,39 @@ Genesis Contract, also known as the Zero Contract, is mainly used to deploy and maintain smart contracts running on the aelf blockchain. -## Deploy and update contracts +This contract will be deployed first when aelf blockchain launched so that it can be used to deploy other smart contracts. + +To achieve this purpose, the Genesis Contract implements the following methods defined in `acs0.proto`: + +```protobuf +service ACS0 { + // Deploy a system smart contract on chain and return the address of the system contract deployed. + rpc DeploySystemSmartContract (SystemContractDeploymentInput) returns (aelf.Address) { + } + + // Deploy a smart contract on chain and return the address of the contract deployed. + rpc DeploySmartContract (ContractDeploymentInput) returns (aelf.Address) { + } + + // Update a smart contract on chain. + rpc UpdateSmartContract (ContractUpdateInput) returns (aelf.Address) { + } + + // and others. + // ... +} +``` + +Therefore, developers can deploy (and update) their own smart contracts by interacting with the Genesis Contract. + +In this article, we will discuss: + +- Implementation of deploy and update contracts +- How the contract will be loaded to the smart contract execution environment +- The current process of deploying and updating aelf smart contracts +- Other details of the Genesis Contract + +## `SmartContractRegistration` and `ContractInfo` There is a critical data structure defined in `aelf/core.proto`, called SmartContractRegistration: @@ -36,7 +68,8 @@ However, each `SmartContractRegistration` entity is not a one-to-one corresponde public MappedState SmartContractRegistrations { get; set; } ``` -The `SmartContractRegistration` entity can be fetched by the hash value of the contract code. It is only written once when deploying the contract. +The `SmartContractRegistration` entity can be fetched by the hash value of the contract code. +It is only written once when deploying the contract. The data structure that corresponds one-to-one with contracts is called `ContractInfo`. Structure `ContractInfo` is defined in `acs0.proto`. @@ -73,6 +106,43 @@ From the `code_hash` field of `ContractInfo`, it is not difficult to guess: 1. When trying to retrieve the contract code, the `code_hash` of ContractInfo is first read, and then the contract code itself is read from the `State.SmartContractRegistrations` mapped state. 2. Upgrading a contract on aelf is replacing the `code_hash` of `ContractInfo`. +## Deploy and update contracts + +To deploy a smart contract to aelf, developers need to interact with the `DeploySmartContract` or `DeployUserSmartContract` defined by `acs0` and implemented by the Genesis Contract. +The differences between these two methods will be explained later. + +When executing the deployment method, the contract code will be stored in the StateDb through the structure we mentioned before: `SmartContractRegistration`. +More specifically, it is the `code` field. + +If developer's smart contract is written by C#, the `category` should be `0`. +The execution environment will select which runtime to load the contract code into based on the `category` field. + +And the `code_hash` is a unique identifier for the contract code. +For C# smart contract, the code hash is calculated by the Genesis Contract during deployment. + +After the contract code is saved in StateDb, another field is used to store the relevant information of the contract. +The structure is also mentioned before: `ContractInfo`. +There is a `code_hash` field defined in this structure, make it possible to use `GetContractInfo` method to get the contract information of provided contract address, +then use `GetSmartContractRegistrationByCodeHash` method to get contract code via contract code hash. +In addition, the contract code can also be obtained through method `GetSmartContractRegistrationByAddress`. + +As for updating the contract code, the contract information (`ContractInfo`) can be directly modified through method `UpdateSmartContract`, +then aelf smart contract execution environment can obtain the new contract code via new contract hash from the Genesis Contract in the future. + +## Execution of contract code + +Although the execution process of the contract is unrelated to the Genesis Contract. +Developers may be concerned about how their contract code will be consumed in the future after deployment. +Therefore, here are some brief explanations. + +![Contract Execution](contract-execution.png) + +As shown in the above figure, assuming that the contract code has been stored in the Genesis Contract. +When a caller tries to call a method of the contract, within the aelf node, the corresponding `SmartContractRegistration` will be obtained from the Genesis Contract, the contract code will be extracted, encapsulated as an Executive type, for the contract execution environment to call. +After completing the call, return the transaction result to the caller. + +Upgrading the contract will change the `SmartContractRegistration` obtained during the above process, so it is feasible to upgrade the deployed contract in aelf. + ## Calculation of contract address The contract address is calculated through a field that increases with the number of contract deployments. From 192456af03cc0cf10601741da12cad630a57a6d2 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Thu, 30 Nov 2023 10:55:22 +0800 Subject: [PATCH 08/25] Commit 2 more diagrams for deploying and updating contracts. --- .../smart-contract/consensus-contract.md | 5 +++- .../deploy-contract-with-audit.png | Bin 0 -> 60901 bytes .../deploy-contract-with-audit.puml | 23 ++++++++++++++++++ .../deploy-contract-without-audit.png | Bin 0 -> 44657 bytes .../deploy-contract-without-audit.puml | 16 ++++++++++++ .../smart-contract/genesis-contract.md | 4 +++ 6 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 docs-sphinx/reference/smart-contract/deploy-contract-with-audit.png create mode 100644 docs-sphinx/reference/smart-contract/deploy-contract-with-audit.puml create mode 100644 docs-sphinx/reference/smart-contract/deploy-contract-without-audit.png create mode 100644 docs-sphinx/reference/smart-contract/deploy-contract-without-audit.puml diff --git a/docs-sphinx/reference/smart-contract/consensus-contract.md b/docs-sphinx/reference/smart-contract/consensus-contract.md index 8b0cfb91ab..fab84e0d38 100644 --- a/docs-sphinx/reference/smart-contract/consensus-contract.md +++ b/docs-sphinx/reference/smart-contract/consensus-contract.md @@ -1 +1,4 @@ -# Consensus Contract \ No newline at end of file +# Consensus Contract + +## Overview + diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-with-audit.png b/docs-sphinx/reference/smart-contract/deploy-contract-with-audit.png new file mode 100644 index 0000000000000000000000000000000000000000..1092aef66cce71a7be8c3e6d7f3fe8d6475dff88 GIT binary patch literal 60901 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�<5|MfD;@2q#2>-{`AdbJKDbc4xBOx)eJTS=4P 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 L&3##WECc=rr_pdZ literal 0 HcmV?d00001 diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-with-audit.puml b/docs-sphinx/reference/smart-contract/deploy-contract-with-audit.puml new file mode 100644 index 0000000000..8ea27e8931 --- /dev/null +++ b/docs-sphinx/reference/smart-contract/deploy-contract-with-audit.puml @@ -0,0 +1,23 @@ +@startuml + +autonumber + +Developer -> GenesisContract: ProposeNewContract / ProposeUpdateContract +GenesisContract -> ParliamentContract: CreateProposalBySystemContract +ParliamentContract -> ParliamentContract: CreateNewProposal \n(GenesisContract.ProposeContractCodeCheck) +ParliamentContract -> BlockProducer: ProposalCreated event +BlockProducer -> ParliamentContract: Approve >= 2/3 \n(ContractZero.ProposeContractCodeCheck) +ParliamentContract -> Developer: ReceiptCreated event +Developer -> GenesisContract: ReleaseApprovedContract +GenesisContract -> ParliamentContract: Release +ParliamentContract -> ParliamentContract: CreateProposalBySystemContract +ParliamentContract -> ParliamentContract: CreateNewProposal \n(ContractZero.DeploySmartContract \n/ContractZero.UpdateSmartContract) +ParliamentContract -> BlockProducer: ProposalCreated event +BlockProducer -> ParliamentContract: Approve \n(Automatically by aelf node) +ParliamentContract -> Developer: ReceiptCreated event +Developer -> GenesisContract: ReleaseCodeCheckedContract +GenesisContract -> ParliamentContract: Release +ParliamentContract -> GenesisContract: DeploySmartContract \n/UpdateSmartContract + + +@enduml \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-without-audit.png b/docs-sphinx/reference/smart-contract/deploy-contract-without-audit.png new file mode 100644 index 0000000000000000000000000000000000000000..084762681f9a7aa3c1d4b4e7f24b7cec679b90e9 GIT binary patch literal 44657 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 Wtdo3LV=Vg-#P@Xdb6Mw<&;$TFIE6m| literal 0 HcmV?d00001 diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-without-audit.puml b/docs-sphinx/reference/smart-contract/deploy-contract-without-audit.puml new file mode 100644 index 0000000000..edc7808497 --- /dev/null +++ b/docs-sphinx/reference/smart-contract/deploy-contract-without-audit.puml @@ -0,0 +1,16 @@ +@startuml + +autonumber + +Developer -> GenesisContract: DeployUserSmartContract \n/UpdateUserSmartContract +GenesisContract -> ParliamentContract: CreateProposalBySystemContract +ParliamentContract -> ParliamentContract: CreateNewProposal \n(ContractZero.PerformDeployUserSmartContract \n/ContractZero.PerformUpdateUserSmartContract) +ParliamentContract -> BlockProducer: ProposalCreated event +BlockProducer -> ParliamentContract: Approve \n(Automatically by aelf node) + +BlockProducer -> GenesisContract: Approve>=2/3 \nReleaseApprovedUserSamrtContract \n(Automatically by aelf node) +GenesisContract -> ParliamentContract: Release +ParliamentContract -> GenesisContract: PerformDeployUserSmartContract \n/PerformUpdateUserSmartContract + + +@enduml \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index 4570b26441..f3a5d04f18 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -173,12 +173,16 @@ var contractAddress = AddressHelper.ComputeContractAddress(deployer, salt); ### Deploy contract with audit +![Deploy Contract With Audit](deploy-contract-with-audit.png) + The current pipeline starts with Propose, which generates a parliamentary proposal. When more than 2/3 of the BPs agree to deploy/update, a new proposal is released to request code inspection. Finally, after the code audition is passed, the real contract deployment/upgrade will be achieved through the proposal of releasing the code inspection. ### Deploy contract without audit +![Deploy Contract Without Audit](deploy-contract-without-audit.png) + Developers send deployment/update user contract transactions, generate a parliamentary CodeCheck proposal, and when more than 2/3 of the BPs conduct code checks and pass, achieve real contract deployment/upgrade through the proposal of automatically releasing code checks. ### Contract deployment and upgrade new version number From bded01b13d565991248b210300521cbb58e44a72 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Thu, 30 Nov 2023 16:50:29 +0800 Subject: [PATCH 09/25] Explained 5 main methods of aedpos contract. --- .../smart-contract/consensus-contract.md | 365 ++++++++++++++++++ .../smart-contract/genesis-contract.md | 8 +- .../get-consensus-behaiviour.png | Bin 0 -> 20829 bytes .../get-consensus-behaiviour.puml | 21 + 4 files changed, 390 insertions(+), 4 deletions(-) create mode 100644 docs-sphinx/reference/smart-contract/get-consensus-behaiviour.png create mode 100644 docs-sphinx/reference/smart-contract/get-consensus-behaiviour.puml diff --git a/docs-sphinx/reference/smart-contract/consensus-contract.md b/docs-sphinx/reference/smart-contract/consensus-contract.md index fab84e0d38..d7a58c5433 100644 --- a/docs-sphinx/reference/smart-contract/consensus-contract.md +++ b/docs-sphinx/reference/smart-contract/consensus-contract.md @@ -2,3 +2,368 @@ ## Overview +Among numerous consensus contracts, AElf has chosen DPoS consensus, +which means that aelf's blocks will be packaged and broadcasted by a specific subset of nodes, +which need to be determined through elections. + +The introduction to the election section will be presented in another article. + +In this article, we will discuss: + +- Problems solved by blockchain consensus mechanism +- How AEDPoS Contract implemented +- What is the Last Irreversible Block +- Consensus scheduling in aelf nodes + +## Problems solved by blockchain consensus mechanism + +Briefly, the blockchain consensus module answers five questions: +1. When will a blockchain node produce blocks? +2. What information should be added to the block header for nodes that can produce blocks? +3. What transactions should be added to the block by nodes that can produce blocks? +4. When a node receives a block, +what consensus information in the block header can be considered compliant? +5. When a node receives a block and the transactions in the block are executed, +what kind of compliance should the state of the consensus contract change to? + +## How AEDPoS Contract implemented + +The five questions raised in the previous section are all answered by AEDPoS Contract via implementing interfaces defined in [acs4](../acs/acs4.rst). + +### GetConsensusCommand + +The GetConsensusCommand interface is used to obtain information such as the time of the next production block for a public key. + +In the implementation of AEDPoS, the input is only a public key, and the calling time of the interface implementation method is also used as a reference (which is actually an important input). +In the AElf blockchain, when the system calls a read-only transaction internally, the context of contract execution is self-constructed. The calling time is generated by `DateTime.UtcNow` in C #'s built-in function library, +which is then converted into the timestamp data type `Timestamp` provided by protobuf and passed into the context of contract execution. + +```protobuf +rpc GetConsensusCommand (google.protobuf.BytesValue) returns (ConsensusCommand) { + option (aelf.is_view) = true; +} + +// ... + +message ConsensusCommand { + // Time limit of mining next block. + int32 limit_milliseconds_of_mining_block = 1; + // Context of Hint is diverse according to the consensus protocol we choose, so we use bytes. + bytes hint = 2; + // The time of arrange mining. + google.protobuf.Timestamp arranged_mining_time = 3; + // The expiration time of mining. + google.protobuf.Timestamp mining_due_time = 4; +} +``` + +In fact, regardless of whether the transaction to be executed is a read-only transaction, the timestamp passed in by the current contract execution context can be obtained through Context. +CurrentBlockTime in the contract code. + +This section mainly explains how AEDPoS consensus implements GetConsensusCommand. +Before that, I will briefly introduce the process of AEDPoS to readers who do not understand AElf consensus. +Or you can refer to [consensus protocol](../../protocol/consensus.md) to get more information. + +#### AEDPoS Process + +Assuming that the aelf main chain now elects 17 nodes through voting, we will call them BPs (Block Producers). + +These BPs are obtained by directly selecting the top 17 candidates at a certain block height (or time point) through a national election. +Each time the top 17 candidates are recounted and the BPs are reappointed, it is called a **Term**. + +In each session, all BPs produce blocks in rounds. Each round has 17 + 1 time slots, and each BP randomly occupies one of the first 17 time slots. The last time slot is produced by the producer of the extra block in this round. The producer of the extra block will initialize the information of the next round based on the random number published by each BP in this round. After 18 time slots, the next round begins. This cycle continues. + +The data structure of Round is as follows: + +```protobuf +message Round { + // The round number. + int64 round_number = 1; + // Current miner information, miner public key -> miner information. + map real_time_miners_information = 2; + // The round number on the main chain + int64 main_chain_miners_round_number = 3; + // The time from chain start to current round (seconds). + int64 blockchain_age = 4; + // The miner public key that produced the extra block in the previous round. + string extra_block_producer_of_previous_round = 5; + // The current term number. + int64 term_number = 6; + // The height of the confirmed irreversible block. + int64 confirmed_irreversible_block_height = 7; + // The round number of the confirmed irreversible block. + int64 confirmed_irreversible_block_round_number = 8; + // Is miner list different from the the miner list in the previous round. + bool is_miner_list_just_changed = 9; + // The round id, calculated by summing block producers’ expecting time (second). + int64 round_id_for_validation = 10; +} + +message MinerInRound { + // The order of the miner producing block. + int32 order = 1; + // Is extra block producer in the current round. + bool is_extra_block_producer = 2; + // Generated by secret sharing and used for validation between miner. + aelf.Hash in_value = 3; + // Calculated from current in value. + aelf.Hash out_value = 4; + // Calculated from current in value and signatures of previous round. + aelf.Hash signature = 5; + // The expected mining time. + google.protobuf.Timestamp expected_mining_time = 6; + // The amount of produced blocks. + int64 produced_blocks = 7; + // The amount of missed time slots. + int64 missed_time_slots = 8; + // The public key of this miner. + string pubkey = 9; + // The InValue of the previous round. + aelf.Hash previous_in_value = 10; + // The supposed order of mining for the next round. + int32 supposed_order_of_next_round = 11; + // The final order of mining for the next round. + int32 final_order_of_next_round = 12; + // The actual mining time, miners must fill actual mining time when they do the mining. + repeated google.protobuf.Timestamp actual_mining_times = 13; + // The encrypted pieces of InValue. + map encrypted_pieces = 14; + // The decrypted pieces of InValue. + map decrypted_pieces = 15; + // The amount of produced tiny blocks. + int64 produced_tiny_blocks = 16; + // The irreversible block height that current miner recorded. + int64 implied_irreversible_block_height = 17; +} +``` + +In the AEDPoS contract, there is a map structure, the key is a long type of RoundNumber, which is incremented from 1, and the value is the above-mentioned Round structure. +Each block generated by BP will update the information of the current or next round to promote consensus and block production, +and provide a basic basis for consensus verification. + +#### Consensus Command +```protobuf +message ConsensusCommand { + // Time limit of mining next block. + int32 limit_milliseconds_of_mining_block = 1; + // Context of Hint is diverse according to the consensus protocol we choose, so we use bytes. + bytes hint = 2; + // The time of arrange mining. + google.protobuf.Timestamp arranged_mining_time = 3; + // The expiration time of mining. + google.protobuf.Timestamp mining_due_time = 4; +} +``` + +In the implementation of AEDPoS consensus, the Hint field provides a clear path for BP to produce the next type of block. +We provide a dedicated data structure for Hint, AElfConsensusHint. + +```protobuf +message AElfConsensusHint { + // The behaviour of consensus. + AElfConsensusBehaviour behaviour = 1; + // The round id. + int64 round_id = 2; + // The previous round id. + int64 previous_round_id = 3; +} +``` + +The block type is included in the following AElfConsensusBehaviour: + +```protobuf +enum AElfConsensusBehaviour { + UPDATE_VALUE = 0; + NEXT_ROUND = 1; + NEXT_TERM = 2; + NOTHING = 3; + TINY_BLOCK = 4; +} +``` + +**UpdateValue** and **UpdateValue(WithoutPreviousInValue)** represents that the BP wants to produce an ordinary block in a certain round (understood in conjunction with the consensus module in the aelf white paper or the aelf system introduction). + +In these two behaviors, the consensus information that the BP focuses on updating includes the `in_value` (`previous_in_value`) of its previous round, the out_value generated in this round, and the password fragments of the in_value used to generate out_value in this round. + +(The BP will encrypt 16 password fragments with the public keys of in_value and other BPs, and other BPs can only decrypt them with their own private keys. When the decrypted fragments reach a certain number, the original in_value will be revealed. This is an application of shamir's secret sharing.) + +In addition, a timestamp that actually triggers block production behavior is added to the `actual_mining_times`. UpdateValueWithoutPreviousInValue The only difference between UpdateValue and the BP is that there is no need to publish the in_value (previous_in_value) of the previous round, because the current round is the first round or has just changed (and the BP is a + +**NextRound** represents that the BP is an additional block producer for this round (or remedier - when the designated additional block producer is absent), and needs to initialize the next round of information. +The next round of information includes the time slot arrangement of each BP and the additional block producer specified according to the rules for the next round. + +**NextTerm** is similar to **NextRound**, except that it will recount the top 17 candidates in the election and initialize the next round of information based on the new BP. + +**Nothing** is when found that the input public key is not a BP. + +**TinyBlock** represents that the BP has just updated the consensus information, but its time slot has not yet passed, and it still has time to produce a few additional blocks. Currently, each time slot can produce up to 8 small blocks. The benefit of this is to improve the efficiency of block verification (eos does the same). + +There is a time slot issue that needs special attention. Since AEDPoS chooses to generate the first round of consensus information (i.e. the time slots of all initial BPs) in the genesis block, +and the genesis block should be completely consistent for each node, the consensus information of the first round has to be assigned to a unified time (otherwise the hash value of the genesis block will be inconsistent): +now this time is 0:00 in 1970. This will cause the time slot of the first round to be extremely inaccurate, so special treatment will be done when obtaining the `ConsensusCommand` of the first round. + +#### GetConsensusBehaviour + +In the AEDPoS Contract, in order for the `GetConsensusCommand` method to return ConsensusCommand, the AElfConsensusBehaviour will be obtained based on the input public key and call time. +Then, the AElfConsensusBehaviour will be used to determine the next block time and other information. + +The following figure briefly illustrates the implementation of this method, but lacks some details. +You can combine it with the code for more details if interested. + +![GetConsensusCommand](get-consensus-behaiviour.png) + +##### GetConsensusCommand - UpdateValue(WithoutPreviousInValue) + +`AElfConsensusBehaviour.UpdateValueWithoutPreviousInValue`'s main function is to implement the [Commitment Scheme](https://en.wikipedia.org/wiki/Commitment_scheme), +which only includes one _commit phase_ and does not include the _reveal phase_. +The corresponding stage of the consensus mining process is the first round of each session +(including the first session, which is when the chain just started), and BP tries to generate the first block of this round. + +If it is currently in the first **Round** of the first **Term**, it is necessary to obtain +the order of provided pubkey from `Round.real_time_miners_information`. +And the expected mining time will be `order * mining_interval` seconds later. +The `mining_interval` is 4000 milliseconds by default. + +Otherwise, the `expected_mining_time` is read directly from the Round information, and ConsensusCommand is returned based on this. + +##### GetConsensusCommand - UpdateValue + +`AElfConsensusBehaviour.UpdateValue` consists of a _reveal phase_ in the Commitment Scheme and a new _commit phase_. +The phase corresponding to the consensus mining process is the second round of each session and beyond, and BP attempts to generate the first block of this round. + +Directly read the current round information in the BP pubkey corresponding to the `expected_mining_time` field. + +##### GetConsensusCommand - NextRound + +`AElfConsensusBehaviour.NextRound` will generate the order and corresponding time slots of each BP in the next round according to the information published by each BP in this round, +and advance the RoundNumber by one number. + +For the BP designated as the extra block producer in this round, +the extra block generation time slot of this round can be directly read. + +Otherwise, in order to prevent the designated additional block producer from dropping or producing blocks on another fork (which may occur in the case of network instability), +all other BPs will also receive a different time slot for producing additional blocks. +These BPs will immediately reset their schedulers after synchronizing to any additional block produced by a BP, so there is no need to worry about conflicts. + +For the first round of special treatment with `AElfConsensusBehaviour.UpdateValue (WithoutPreviousInValue)`. + +##### GetConsensusCommand - NextTerm + +`AElfConsensusBehaviour.NextTerm` will re-select 17 BPs based on the current election results to generate information for the first round of the new term. + +The information is the quite similar to `AElfConsensusBehaviour.NextRound` in the first round of the first term. + +##### GetConsensusCommand - TinyBlock + +`AElfConsensusBehaviour.TinyBlock` occurs in two scenarios: +1. The current BP is the producer of additional blocks from the previous round. +After producing blocks containing one NextRound transaction, it needs to continue producing up to 7 blocks in the same time slot. +2. BP has just produced blocks containing UpdateValue transactions and needs to continue producing up to 7 blocks in the same time slot. + +The basic judgment logic is that if the current BP is a block containing UpdateValue transactions that have been produced in this round, +that is, case 2, combined with the current BP being the producer of additional blocks in the previous round, a time slot with a length of 4000ms is cut into 8 smaller time slots of 500ms for allocation; +otherwise, for the above case 1, a reasonable smaller time slot is directly allocated based on the number of small blocks that have been produced. + +#### GetConsensusExtraData + +Consensus Extra Data is stored in the ExtraData field in the Block Header. +This field is used to store information that various parts of the aelf system can use to assist in completing block verification. +Consensus Extra Data is the data used to assist in completing consensus information verification. +Because it is stored in the block header, it is used to help all nodes receiving the block **quickly verify** the consensus information before executing transactions in the block. +If the consensus information contained in the block header is incorrect, then the transaction in this block does not need to be executed and can be discarded directly. + +In the process of producing blocks, BP obtains the Consensus Extra Data to be set in the block header through the `GetConsensusExtraData` method of the AEDPoS contract. + +The parameter of this method is a binary array. +Different consensus mechanisms can customize their own parameter types and deserialize them in the method implementation. +As for the AEDPoS implementation, the parameter is a `AElfConsensusTriggerInformation` structure. + +```protobuf +message AElfConsensusTriggerInformation { + // The miner public key. + bytes pubkey = 1; + // The InValue for current round. + aelf.Hash in_value = 2; + // The InValue for previous round. + aelf.Hash previous_in_value = 3; + // The behaviour of consensus. + AElfConsensusBehaviour behaviour = 4; + // The encrypted pieces of InValue. + map encrypted_pieces = 5; + // The decrypted pieces of InValue. + map decrypted_pieces = 6; + // The revealed InValues. + map revealed_in_values = 7; +} +``` + +In the AEDPoS implementation, the return value is a `AElfConsensusHeaderInformation` structure: + +```protobuf +message AElfConsensusHeaderInformation { + // The sender public key. + bytes sender_pubkey = 1; + // The round information. + Round round = 2; + // The behaviour of consensus. + AElfConsensusBehaviour behaviour = 3; +} +``` + +The acquisition of Consensus Extra Data is first based on the `AElfConsensusTriggerInformation` behaviour field, and different consensus behaviors will generate different block header information. + +For example, in `UpdateValue`, the `InValue` of the previous round will be made public, and the `OutValue` of this round will be announced; +in `TinyBlock`, the number of small blocks corresponding to BP in the Round information of this round will only be increased by one; +in `NextRound` and `NextTerm`, new Round information will be generated, the difference is that the latter will retrieve the MinerList (Election Contract's `TryToGetVictories` method). + +Finally, in order to prevent the returned `AElfConsensusHeaderInformation` instance from being too large, the data related to `SecretSharing` will be deleted, and this part of the data does not need to be included in the block header for verification. + +#### GenerateConsensusTransactions + +This method is used to assist BP in generating Consensus System Transactions to be included in newly produced blocks. + +The imported parameter is `GetConsensusExtraData` and `AElfConsensusTriggerInformation`, which have already discussed before. + +The return value is `TransactionList`. + +```protobuf +message TransactionList { + // Consensus system transactions. + repeated aelf.Transaction transactions = 1; +} +``` + +`UpdateValue`, `TinyBlock`, `NextRound`, `NextTerm` transactions are generated depending on the behaviour. + +After these transactions are executed, the consensus data in StateDb, such as Round structure data, will be modified. + +At the same time, these transactions will be prioritized as system transactions and packaged into the upcoming blocks. + +### ValidateConsensusBeforeExecution + +This method is used to verify whether the Consensus Extra Data in BlockHeader is correct. +- The imported parameter is parsed into AElfConsensusHeaderInformation structure: extraData. +- Take the consensus information of the current round in StateDb: baseRound; +- Before verification, fill the baseRound with Round information from extraData. +- Construct validation context structure ConsensusValidationContext; +- Do three basic verifications: + - **MiningPermissionValidationProvider**: Is Sender in the Miner List? + - **TimeSlotValidationProvider**: The current time is not in the time slot of Sender (get the time slot according to Round information); + - **ContinuousBlocksValidationProvider**: To place a BP generate too many consecutive blocks at once (no more than 8). +- Add validation based on consensus behavior: + - UpdateValue: + - **UpdateValueValidationProvider**: Verify Out Value and Previous In Value information; + - **LibInformationValidationProvider**: Verify whether the lib information is correct. + - NextRound: + - **NextRoundMiningOrderValidationProvider**: Verify whether the BP block sequence in the newly generated round is correct; + - **RoundTerminateValidationProvider**: Whether the newly generated Round information is correct; + - NextTerm: + - **RoundTerminateValidationProvider**: whether the newly generated Round information is correct. + +#### ValidateConsensusAfterExecution + +This method is used to verify whether the execution result is consistent with Consensus Extra Data after the execution of the consensus system transaction (that is, the transaction generated by the `GenerateConsensusTransactions` method). + +We will also check if the information in this round has been modified. +If it has been modified, whether the modification is appropriate. +(For example, if there is a BP replacement in this round, there will be modifications. At this time, we will verify whether the replacement result is correct.) \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index f3a5d04f18..43c7226e11 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -6,7 +6,7 @@ Genesis Contract, also known as the Zero Contract, is mainly used to deploy and This contract will be deployed first when aelf blockchain launched so that it can be used to deploy other smart contracts. -To achieve this purpose, the Genesis Contract implements the following methods defined in `acs0.proto`: +To achieve this purpose, the Genesis Contract implements the following methods defined in [acs0](../acs/acs0.rst): ```protobuf service ACS0 { @@ -72,7 +72,7 @@ The `SmartContractRegistration` entity can be fetched by the hash value of the c It is only written once when deploying the contract. The data structure that corresponds one-to-one with contracts is called `ContractInfo`. -Structure `ContractInfo` is defined in `acs0.proto`. +Structure `ContractInfo` is defined in [acs0](../acs/acs0.rst). ```C# message ContractInfo @@ -108,7 +108,7 @@ From the `code_hash` field of `ContractInfo`, it is not difficult to guess: ## Deploy and update contracts -To deploy a smart contract to aelf, developers need to interact with the `DeploySmartContract` or `DeployUserSmartContract` defined by `acs0` and implemented by the Genesis Contract. +To deploy a smart contract to aelf, developers need to interact with the `DeploySmartContract` or `DeployUserSmartContract` defined by [acs0](../acs/acs0.rst) and implemented by the Genesis Contract. The differences between these two methods will be explained later. When executing the deployment method, the contract code will be stored in the StateDb through the structure we mentioned before: `SmartContractRegistration`. @@ -214,4 +214,4 @@ Assert(contractInfo.IsSubsequentVersion, - Already proposed. Duplicate deployment request. ## Usage -See [aelf-command deploy command](https://docs.aelf.io/en/latest/reference/cli/methods.html#deploy-deploy-a-smart-contract). \ No newline at end of file +Check the `deploy` command of [aelf-command](../cli/methods.md). \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/get-consensus-behaiviour.png b/docs-sphinx/reference/smart-contract/get-consensus-behaiviour.png new file mode 100644 index 0000000000000000000000000000000000000000..88276020c1df2a48dfaa23b0ec52bbbf4fc618f0 GIT binary patch literal 20829 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⁢~vYCZ{qF}BQTAgBgIK> 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 mz$uX6*>t!Lw0riSS?0+PwTHJ1Er917GI+ZBxvX Date: Fri, 1 Dec 2023 10:22:55 +0800 Subject: [PATCH 10/25] Commit lib definition, generation and calculation doc --- .../smart-contract/consensus-contract.md | 109 +++++++++++++++++- .../smart-contract/genesis-contract.md | 6 +- .../smart-contract/lib-calculation.png | Bin 0 -> 337563 bytes 3 files changed, 110 insertions(+), 5 deletions(-) create mode 100644 docs-sphinx/reference/smart-contract/lib-calculation.png diff --git a/docs-sphinx/reference/smart-contract/consensus-contract.md b/docs-sphinx/reference/smart-contract/consensus-contract.md index d7a58c5433..0ce98af71a 100644 --- a/docs-sphinx/reference/smart-contract/consensus-contract.md +++ b/docs-sphinx/reference/smart-contract/consensus-contract.md @@ -28,7 +28,7 @@ what kind of compliance should the state of the consensus contract change to? ## How AEDPoS Contract implemented -The five questions raised in the previous section are all answered by AEDPoS Contract via implementing interfaces defined in [acs4](../acs/acs4.rst). +The five questions raised in the previous section are all answered by AEDPoS Contract via implementing interfaces defined in [acs4](https://docs.aelf.io/en/latest/reference/acs/acs4.html). ### GetConsensusCommand @@ -366,4 +366,109 @@ This method is used to verify whether the execution result is consistent with Co We will also check if the information in this round has been modified. If it has been modified, whether the modification is appropriate. -(For example, if there is a BP replacement in this round, there will be modifications. At this time, we will verify whether the replacement result is correct.) \ No newline at end of file +(For example, if there is a BP replacement in this round, there will be modifications. At this time, we will verify whether the replacement result is correct.) + + +### Last Irreversible Block + +#### Definition of LIB + +Irreversible block: + +In any blockchain, the newly generated block has the possibility of being reversed. +A new block needs to undergo a certain amount of confirmation, that is, some subsequent blocks are generated on the blockchain to ensure that it is valid and that other network participants have agreed on the validity of the block. +Once a block has been confirmed enough, it is considered irreversible, that is, it is impossible to change or revoke the transaction content. + +The consensus mechanism of aelf will select a past block as the latest irreversible block (Last Irreversable Block) through double confirmation. +The information of this block will be recorded in the Chain structure in ChainDb. + +That is, two properties in the `Chain` data structure: `last_irreversible_block_hash` and `last_irreversible_block_height`. + +```protobuf +{ + "ChainId": "tDVV", + "Branches": { + "21a6058fe1419042c6a9f780734fab175694052f966667b992a151af5d65d751": 17122469 + }, + "NotLinkedBlocks": {}, + "LongestChainHeight": 17122469, + "LongestChainHash": "21a6058fe1419042c6a9f780734fab175694052f966667b992a151af5d65d751", + "GenesisBlockHash": "564892c8e1cddfb2ddd27e06992324f16fc833e5152bfd95e01b0f4971677131", + "GenesisContractAddress": "2dtnkWDyJJXeDRcREhKSZHrYdDGMbn3eus5KYpXonfoTygFHZm", + "LastIrreversibleBlockHash": "a5678d99ccda03b861d1c63fde7ce27ec484c74f1cc349119e08ac86b3ac5aea", + "LastIrreversibleBlockHeight": 17122160, + "BestChainHash": "21a6058fe1419042c6a9f780734fab175694052f966667b992a151af5d65d751", + "BestChainHeight": 17122469 +} +``` + +### Generation of LIB + +During the block production process, BP hints at the current height as LIB by observing the filling status of the time slots in the last two rounds. +If the filling status of the time slots is ideal, the height of the last block (`UpdateValue`) will be hinted at when the BP block is produced. + +- If in a time slot, the corresponding BP has produced at least one block, we say that the time slot has been filled. + +When the progress of this round exceeds 2/3, on the premise that the number of hints is sufficient, +take one-third of the position of the LIB implied by the previous round and this round have all produced blocks, +and set it to the latest LIB. + +BPs will attempt to set up LIB during the execution of `UpdateValue` transactions. + +AElf node will start the process of setting LIB after the AEDPoS Contract throws the event `IrreversibleBlockFound`. + +The confirmation of LIB means that the block of aelf blockchain has got the manuscript ready. +Blocks before the height of LIB (< LIB height) are irreversible blocks. + +### Calculation of LIB + +Assuming that current aelf network has 5 bps. + +In Round 9: +- BP1 produced block from 101 (UpdateValue) to 108 + - implies that the LIB height is 101 +- BP2 produced block from 109 (UpdateValue) to 116 + - implies that the LIB height is 109 +- BP3 produced block from 117 (UpdateValue) to 124 + - implies that the LIB height is 117 +- BP4 produced block from 125 (UpdateValue) to 132 + - implies that the LIB height is 125 - assuming the LIB height is set to 84 +- BP5 produced block from 133 (UpdateValue) to 140 + - implies that the LIB height is 133 +- BP1 as the EBP, produced block from 141(NextRound) to 148 + - not implies LIB height + +In Round 10: +- BP5 produced block from 149 (UpdateValue) to 156 +- implies that the LIB height is 149 +- BP4 produced block from 157 (UpdateValue) to 164 + - implies that the LIB height is 157 +- BP3 produced block from 165 (UpdateValue) to 172 + - implies that the LIB height is 165 +- BP2 produced block from 173 (UpdateValue) to 180 + - implies that the LIB height is 173 (the progress of this round is more than 2/3) + + - It will be carried out in the 197th block. + - The nodes that have produced blocks in this round are BP2, BP3, BP4, BP5. The height implied in the previous round was 109,117,125,133. + - The nodes that have produced blocks in this round + the previous round are (BP2, BP3, BP4, BP5) 4 > = BP quantity (5) * 2/3 + 1 == > returns LIBHeight = 117 + + - Node throws log: +> Finished calculation of lib height: 117 +New lib height: 117 + +Throw event: `IrreversibleBlockFound`, trigger IrreversibleBlockFoundLogEventProcessor +Modify `last_irreversible_block_hash` and `last_irreversible_block_height` data in Chain + + +- BP1 produced block from 181 (UpdateValue) to 188 + - implies that the LIB height is 181 +- BP5 as the EBP, produced block from 189(NextRound) to 196 + +![LIB Calculation](lib-calculation.png) + + +Block confirmation time: + +- Height 85 After the block is produced, it is set to an irreversible block at height 173, 89 blocks, which takes about 44.5 seconds +- Height 117 is set as an irreversible block after block production to height 173, 67 blocks, which takes about 33.5 seconds + diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index 43c7226e11..6f4f43c4d4 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -6,7 +6,7 @@ Genesis Contract, also known as the Zero Contract, is mainly used to deploy and This contract will be deployed first when aelf blockchain launched so that it can be used to deploy other smart contracts. -To achieve this purpose, the Genesis Contract implements the following methods defined in [acs0](../acs/acs0.rst): +To achieve this purpose, the Genesis Contract implements the following methods defined in [acs0](https://docs.aelf.io/en/latest/reference/acs/acs0.html): ```protobuf service ACS0 { @@ -72,7 +72,7 @@ The `SmartContractRegistration` entity can be fetched by the hash value of the c It is only written once when deploying the contract. The data structure that corresponds one-to-one with contracts is called `ContractInfo`. -Structure `ContractInfo` is defined in [acs0](../acs/acs0.rst). +Structure `ContractInfo` is defined in [acs0](https://docs.aelf.io/en/latest/reference/acs/acs0.html). ```C# message ContractInfo @@ -108,7 +108,7 @@ From the `code_hash` field of `ContractInfo`, it is not difficult to guess: ## Deploy and update contracts -To deploy a smart contract to aelf, developers need to interact with the `DeploySmartContract` or `DeployUserSmartContract` defined by [acs0](../acs/acs0.rst) and implemented by the Genesis Contract. +To deploy a smart contract to aelf, developers need to interact with the `DeploySmartContract` or `DeployUserSmartContract` defined by [acs0](https://docs.aelf.io/en/latest/reference/acs/acs0.html) and implemented by the Genesis Contract. The differences between these two methods will be explained later. When executing the deployment method, the contract code will be stored in the StateDb through the structure we mentioned before: `SmartContractRegistration`. diff --git a/docs-sphinx/reference/smart-contract/lib-calculation.png b/docs-sphinx/reference/smart-contract/lib-calculation.png new file mode 100644 index 0000000000000000000000000000000000000000..8e03c7c4bb0e157d12ba205f25b79a27db019355 GIT binary patch literal 337563 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

(Y*WlvPAR8g<~hU3CM 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%0D>Qvo&^JVrontYY=x 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%0AyevdeWcXVp%J8l{A= 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%0An9r(B^=prf0c=75(ZjDQOAD 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�Xs|(cO!(-_pY5eY@F`?JS|Fdp8B|^ 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 W_UC#cR>qFMM_V0ow@mfX^Zx_>;LlP3 literal 0 HcmV?d00001 From c3a66178011866dadd266f8cb1c616186dc47d0f Mon Sep 17 00:00:00 2001 From: eanzhao Date: Fri, 1 Dec 2023 10:29:09 +0800 Subject: [PATCH 11/25] fix a ref. --- docs-sphinx/reference/smart-contract/genesis-contract.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index 6f4f43c4d4..a3f7c140b6 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -214,4 +214,4 @@ Assert(contractInfo.IsSubsequentVersion, - Already proposed. Duplicate deployment request. ## Usage -Check the `deploy` command of [aelf-command](../cli/methods.md). \ No newline at end of file +Check the `deploy` command of [aelf-command](https://docs.aelf.io/en/latest/reference/cli/methods.html#deploy-deploy-a-smart-contract). \ No newline at end of file From f8ef99fcb205516fa1a2b96c39cadce8101bddd1 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Mon, 4 Dec 2023 10:09:35 +0800 Subject: [PATCH 12/25] move puml files and images to separated dirs. --- .../smart-contract/consensus-contract.md | 69 +++++++++++++++++- .../smart-contract/cross-chain-contract.md | 3 +- .../smart-contract/genesis-contract.md | 6 +- .../{ => images}/contract-execution.png | Bin .../deploy-contract-with-audit.png | Bin .../deploy-contract-without-audit.png | Bin .../{ => images}/get-consensus-behaiviour.png | Bin .../{ => plantuml}/contract-execution.puml | 0 .../deploy-contract-with-audit.puml | 0 .../deploy-contract-without-audit.puml | 0 .../get-consensus-behaiviour.puml | 0 11 files changed, 70 insertions(+), 8 deletions(-) rename docs-sphinx/reference/smart-contract/{ => images}/contract-execution.png (100%) rename docs-sphinx/reference/smart-contract/{ => images}/deploy-contract-with-audit.png (100%) rename docs-sphinx/reference/smart-contract/{ => images}/deploy-contract-without-audit.png (100%) rename docs-sphinx/reference/smart-contract/{ => images}/get-consensus-behaiviour.png (100%) rename docs-sphinx/reference/smart-contract/{ => plantuml}/contract-execution.puml (100%) rename docs-sphinx/reference/smart-contract/{ => plantuml}/deploy-contract-with-audit.puml (100%) rename docs-sphinx/reference/smart-contract/{ => plantuml}/deploy-contract-without-audit.puml (100%) rename docs-sphinx/reference/smart-contract/{ => plantuml}/get-consensus-behaiviour.puml (100%) diff --git a/docs-sphinx/reference/smart-contract/consensus-contract.md b/docs-sphinx/reference/smart-contract/consensus-contract.md index 0ce98af71a..692382fc56 100644 --- a/docs-sphinx/reference/smart-contract/consensus-contract.md +++ b/docs-sphinx/reference/smart-contract/consensus-contract.md @@ -210,7 +210,7 @@ Then, the AElfConsensusBehaviour will be used to determine the next block time a The following figure briefly illustrates the implementation of this method, but lacks some details. You can combine it with the code for more details if interested. -![GetConsensusCommand](get-consensus-behaiviour.png) +![GetConsensusCommand](images/get-consensus-behaiviour.png) ##### GetConsensusCommand - UpdateValue(WithoutPreviousInValue) @@ -369,9 +369,9 @@ If it has been modified, whether the modification is appropriate. (For example, if there is a BP replacement in this round, there will be modifications. At this time, we will verify whether the replacement result is correct.) -### Last Irreversible Block +## Last Irreversible Block -#### Definition of LIB +### Definition of LIB Irreversible block: @@ -466,9 +466,70 @@ Modify `last_irreversible_block_hash` and `last_irreversible_block_height` data ![LIB Calculation](lib-calculation.png) - Block confirmation time: - Height 85 After the block is produced, it is set to an irreversible block at height 173, 89 blocks, which takes about 44.5 seconds - Height 117 is set as an irreversible block after block production to height 173, 67 blocks, which takes about 33.5 seconds +## AElf Consensus Schedule + +### Trigger of consensus mechanism + +Trigger consensus mechanism means call `GetConsensusCommand` method to get next mining information and set a related event that will be executed in the future. +There are a total of **four** types of logic that trigger the consensus mechanism. + +Multiple effective triggering of consensus will not cause bugs: +for example, after completing one trigger, the consensus module informs the aelf BP node that blocks can be produced after 10s (via `GetConsensusCommand` method), +and triggers again after 2s. +The consensus module will inform the node that blocks can be produced after 8s and reset the time scheduler. +If triggered again after 4s, the consensus may inform the node that blocks can be produced after 20s, +which is possible in the current implementation (occurring in the complement logic of the extra time slot). + +This section will list all four types of logic of triggering consensus schedule. + +#### Trigger consensus mechanism when node starts + +Code: `BlockchainNodeContextService.StartAsync`. + +During the startup of the aelf node, the presence of the consensus module appears after confirming that there is a Chain-type data in the local ChainDb. + +Before this, the node probes whether the Chain structure can be obtained in ChainDb. +If it can, roll back to lib and start synchronizing blocks based on lib. If not, it means that ChainDb was empty before. At this point, the node's mission is to construct a Genesis block based on the AElf. Blockchains. * project they choose, and then initialize the Chain structure and put it into ChainDb. + +#### Trigger consensus mechanism after completing block synchronization + +Code: `FullBlockchainService.SetBestChain`. + +1. The node receives a block from the network, completes verification, execution, and re-verification, and the block is about to be confirmed and synchronized locally. +At this time, it attempts to set the BestChain information to the Chain structure. +Then trigger the consensus mechanism. + - For example: GrpcServerService.BlockBroadcastStream -> BlockReceivedEvent -> BlockReceivedEventHandler.HandleEventAsync -> BlockSyncService.SyncByBlockAsync -> EnqueueAttachBlockJob -> BlockSyncAttachService.AttachBlockWithTransactionsAsync, put the logic of validating block to the UpdateChainQueue -> BlockAttachService.AttachBlockAsync -> BlockExecutionResultProcessingService.ProcessBlockExecutionResultAsync -> FullBlockchainService.SetBestChain +2. The node has produced a block by itself, but still needs to complete verification, execution, and re-verification before it can be synchronized to the local. + - For example: ConsensusService.- > ConsensusRequestMiningEventData - > ConsensusRequestMiningEventHandler. HandleEventAsync - > After generating the block (whether successful or failed) + +#### Re-trigger the consensus mechanism after an exception occurs during the block generation process + +Code: `ConsensusRequestMiningEventHandler.HandleEventAsync`. + +If somehow failed to generate block, aelf node will try to trigger consensus mechanism again. + +#### Re-trigger consensus mechanism after consensus verification fails + +Code: +- `ConsensusService.ValidateConsensusBeforeExecutionAsync` +- `ConsensusService.ValidateConsensusAfterExecutionAsync` + +If the consensus information verification fails, aelf node will try to trigger consensus mechanism again. + +### Time scheduling for block production + +There are currently two implementations of time scheduling (implementing the `IConsensusScheduler` interface), **Rx.Net** and **FluentScheduler**. + +The aelf MainNet now is using the Rx.Net implementation. + +The `IConsensusScheduler` interface provides two methods: +- `NewEvent`, with countdown milliseconds and a structure containing the instructions needed for block generation: `ConsensusRequestMiningEventData` +- `CancelCurrentEvent`, used to cancel the block production task that is currently in countdown. + +Calling `NewEvent` will mount a timed task for producing blocks and enter the countdown. +When the countdown is complete, a `ConsensusRequestMiningEventData` event is published for `ConsensusRequestMiningEventHandler` to handle. \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/cross-chain-contract.md b/docs-sphinx/reference/smart-contract/cross-chain-contract.md index af1b15060d..73444eb426 100644 --- a/docs-sphinx/reference/smart-contract/cross-chain-contract.md +++ b/docs-sphinx/reference/smart-contract/cross-chain-contract.md @@ -1 +1,2 @@ -# Cross Chain Contract \ No newline at end of file +# Cross Chain Contract + diff --git a/docs-sphinx/reference/smart-contract/genesis-contract.md b/docs-sphinx/reference/smart-contract/genesis-contract.md index a3f7c140b6..2333d7aef8 100644 --- a/docs-sphinx/reference/smart-contract/genesis-contract.md +++ b/docs-sphinx/reference/smart-contract/genesis-contract.md @@ -135,7 +135,7 @@ Although the execution process of the contract is unrelated to the Genesis Contr Developers may be concerned about how their contract code will be consumed in the future after deployment. Therefore, here are some brief explanations. -![Contract Execution](contract-execution.png) +![Contract Execution](images/contract-execution.png) As shown in the above figure, assuming that the contract code has been stored in the Genesis Contract. When a caller tries to call a method of the contract, within the aelf node, the corresponding `SmartContractRegistration` will be obtained from the Genesis Contract, the contract code will be extracted, encapsulated as an Executive type, for the contract execution environment to call. @@ -173,7 +173,7 @@ var contractAddress = AddressHelper.ComputeContractAddress(deployer, salt); ### Deploy contract with audit -![Deploy Contract With Audit](deploy-contract-with-audit.png) +![Deploy Contract With Audit](images/deploy-contract-with-audit.png) The current pipeline starts with Propose, which generates a parliamentary proposal. When more than 2/3 of the BPs agree to deploy/update, a new proposal is released to request code inspection. @@ -181,7 +181,7 @@ Finally, after the code audition is passed, the real contract deployment/upgrade ### Deploy contract without audit -![Deploy Contract Without Audit](deploy-contract-without-audit.png) +![Deploy Contract Without Audit](images/deploy-contract-without-audit.png) Developers send deployment/update user contract transactions, generate a parliamentary CodeCheck proposal, and when more than 2/3 of the BPs conduct code checks and pass, achieve real contract deployment/upgrade through the proposal of automatically releasing code checks. diff --git a/docs-sphinx/reference/smart-contract/contract-execution.png b/docs-sphinx/reference/smart-contract/images/contract-execution.png similarity index 100% rename from docs-sphinx/reference/smart-contract/contract-execution.png rename to docs-sphinx/reference/smart-contract/images/contract-execution.png diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-with-audit.png b/docs-sphinx/reference/smart-contract/images/deploy-contract-with-audit.png similarity index 100% rename from docs-sphinx/reference/smart-contract/deploy-contract-with-audit.png rename to docs-sphinx/reference/smart-contract/images/deploy-contract-with-audit.png diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-without-audit.png b/docs-sphinx/reference/smart-contract/images/deploy-contract-without-audit.png similarity index 100% rename from docs-sphinx/reference/smart-contract/deploy-contract-without-audit.png rename to docs-sphinx/reference/smart-contract/images/deploy-contract-without-audit.png diff --git a/docs-sphinx/reference/smart-contract/get-consensus-behaiviour.png b/docs-sphinx/reference/smart-contract/images/get-consensus-behaiviour.png similarity index 100% rename from docs-sphinx/reference/smart-contract/get-consensus-behaiviour.png rename to docs-sphinx/reference/smart-contract/images/get-consensus-behaiviour.png diff --git a/docs-sphinx/reference/smart-contract/contract-execution.puml b/docs-sphinx/reference/smart-contract/plantuml/contract-execution.puml similarity index 100% rename from docs-sphinx/reference/smart-contract/contract-execution.puml rename to docs-sphinx/reference/smart-contract/plantuml/contract-execution.puml diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-with-audit.puml b/docs-sphinx/reference/smart-contract/plantuml/deploy-contract-with-audit.puml similarity index 100% rename from docs-sphinx/reference/smart-contract/deploy-contract-with-audit.puml rename to docs-sphinx/reference/smart-contract/plantuml/deploy-contract-with-audit.puml diff --git a/docs-sphinx/reference/smart-contract/deploy-contract-without-audit.puml b/docs-sphinx/reference/smart-contract/plantuml/deploy-contract-without-audit.puml similarity index 100% rename from docs-sphinx/reference/smart-contract/deploy-contract-without-audit.puml rename to docs-sphinx/reference/smart-contract/plantuml/deploy-contract-without-audit.puml diff --git a/docs-sphinx/reference/smart-contract/get-consensus-behaiviour.puml b/docs-sphinx/reference/smart-contract/plantuml/get-consensus-behaiviour.puml similarity index 100% rename from docs-sphinx/reference/smart-contract/get-consensus-behaiviour.puml rename to docs-sphinx/reference/smart-contract/plantuml/get-consensus-behaiviour.puml From fce25449a195afbae9ffa3329b318434dde27e0a Mon Sep 17 00:00:00 2001 From: eanzhao Date: Mon, 4 Dec 2023 17:56:09 +0800 Subject: [PATCH 13/25] Initial commit of crosschain contract. --- .../smart-contract/cross-chain-contract.md | 111 ++++++++++++++++++ .../images/cross-chain-class-diagram.png | Bin 0 -> 80136 bytes .../images/cross-chain-token-transfer.png | Bin 0 -> 11664 bytes .../images/initialize-side-chain.png | Bin 0 -> 19885 bytes .../images/verify-parent-chain-tx.png | Bin 0 -> 64862 bytes .../plantuml/cross-chain-token-transfer.puml | 13 ++ .../plantuml/initialize-side-chain.puml | 16 +++ 7 files changed, 140 insertions(+) create mode 100644 docs-sphinx/reference/smart-contract/images/cross-chain-class-diagram.png create mode 100644 docs-sphinx/reference/smart-contract/images/cross-chain-token-transfer.png create mode 100644 docs-sphinx/reference/smart-contract/images/initialize-side-chain.png create mode 100644 docs-sphinx/reference/smart-contract/images/verify-parent-chain-tx.png create mode 100644 docs-sphinx/reference/smart-contract/plantuml/cross-chain-token-transfer.puml create mode 100644 docs-sphinx/reference/smart-contract/plantuml/initialize-side-chain.puml diff --git a/docs-sphinx/reference/smart-contract/cross-chain-contract.md b/docs-sphinx/reference/smart-contract/cross-chain-contract.md index 73444eb426..10778ec6e7 100644 --- a/docs-sphinx/reference/smart-contract/cross-chain-contract.md +++ b/docs-sphinx/reference/smart-contract/cross-chain-contract.md @@ -1,2 +1,113 @@ # Cross Chain Contract +## Overview + +Unlike other blockchain ecosystem, aelf blockchain has a built-in cross chain mechanism. + +We have designed a structure of **MainChain**-**SideChains**, where a MainChain can have multiple SideChains. +The MainChain can act as a data center, regularly indexing the cross chain information generated by its SideChains, +and then submitting the cross chain information of any SideChain to all other SideChains. + +This way, not only can cross chain interaction occur between the MainChain and its SideChains, but also between its SideChains with the help of the MainChain. + +In addition, each SideChain can also serve as the MainChain, serving as the data center for the next level of SideChains. + +In this article, we will discuss: + +- Modules for implementing cross chain mechanism +- Cross chain mechanism technical foundation +- The process of initializing a SideChain +- The process of cross chain token transfer +- Merkle Path generation + +## Modules for implementing cross chain mechanism + +Cross chain mechanism on aelf is a very independent module, +and there was a requirement in the initial design: +assuming that aelf nodes are unaware of their ability of cross-chain indexing and verification. +The structuring of aelf code is better as a result, but it also increases the complexity of cross chain modules to some extent. + +![Cross Chain Class Diagram](images/cross-chain-class-diagram.png) + +`AElf.CrossChain.Core` is responsible for the core implementation logic of the cross chain mechanism, including: + +- New SideChain creation. +- Cross chain indexing. +- Cross chain indexing related transactions' generation. + +In order to ensure that communication between the MainChain and SideChains does not affect communication between aelf nodes, +we have specifically implemented a GRpc module for cross chain communication, that is `AElf.CrossChain.Grpc`. + +In addition, we all know that the modification of blockchain status (StateDb) requires the execution of transactions. +The interfaces for these transactions are defined in [acs7](https://docs.aelf.io/en/latest/reference/acs/acs7.html). + +**CrossChain Contract**, which is the focus of this article's upcoming discussion, +is responsible for implementing these interfaces. + +## Cross chain mechanism technical foundation + +As explained in [this](https://aelf-ean.readthedocs.io/en/latest/architecture/cross-chain/crosschain-verification.html) document, +we use **Merkle Tree** to achieve cross chain validation. + +Every piece of information that needs to be transmitted from the MainChain to SideChains, or from a SideChain to the MainChain and other SideChains, +will serve as a leaf node and participate in building the Merkle Tree. + +This transmission process is completed through the `AElf.CrossChain.Grpc` module mentioned above. +Which means that the MainChain node must be able to establish GRpc connections with all the SideChains nodes. +This is similar to the **Merged Mining**: +The nodes elected on the MainChain will also be responsible for block production on all SideChains. + +In the implementation of the aelf cross chain mechanism, the leaf nodes of Merkle Tree are composed of two entities: + +- TransactionId +- TransactionResultStatus + +`TransactionId` is computed from a `Transaction` entity. +And `TransactionResultStatus` is an enum value, here's the definition: + +```protobuf +enum TransactionResultStatus { + // The execution result of the transaction does not exist. + NOT_EXISTED = 0; + // The transaction is in the transaction pool waiting to be packaged. + PENDING = 1; + // Transaction execution failed. + FAILED = 2; + // The transaction was successfully executed and successfully packaged into a block. + MINED = 3; + // When executed in parallel, there are conflicts with other transactions. + CONFLICT = 4; + // The transaction is waiting for validation. + PENDING_VALIDATION = 5; + // Transaction validation failed. + NODE_VALIDATION_FAILED = 6; +} +``` + +Regardless of the execution result of a transaction, +its related information will be condensed into the hash value calculated by these two data, +which will be used as leaf nodes to construct the Merkle Tree. + +Subsequently, the **Merkle Tree Root** will be transmitted to the SideChain or MainChain through the GRpc module. + +![Verify Parent Chain Tx](images/verify-parent-chain-tx.png) + +Finally, on another chain, +**Merkle Path** can be used to verify that the information of a certain transaction exists and has been successfully executed by the user. + +Taking the above image as an example, transactions are executed in the MainChain, the verification process happens in the SideChain. +The Merkle Path to validate the existence and successful execution of the transaction represented using `Hash3` is: +`[Hash3, Hash4, Hash12, Hash5656, Root]`. +(Hash3 = `Hash(TransactionId, TransactionResultStatus.Mined)`) + +If the Merkle Path is successfully validated and the `Root` does exist within the SideChain CrossChain Contract, +then the code following the validation logic can be executed in the SideChain. + +## The process of initializing a SideChain + +![Initialize SideChain](images/initialize-side-chain.png) + +## The process of cross chain token transfer + +![Cross Chain Token Transfer](images/cross-chain-token-transfer.png) + diff --git a/docs-sphinx/reference/smart-contract/images/cross-chain-class-diagram.png b/docs-sphinx/reference/smart-contract/images/cross-chain-class-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6fdd2847c7be5598981ae97db64253c96dcd33 GIT binary patch literal 80136 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

*JG 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 v)lcs-zok9!fb{|MLlTeul$TfO{06()!9 literal 0 HcmV?d00001 diff --git a/docs-sphinx/reference/smart-contract/plantuml/cross-chain-token-transfer.puml b/docs-sphinx/reference/smart-contract/plantuml/cross-chain-token-transfer.puml new file mode 100644 index 0000000000..4586ba42e3 --- /dev/null +++ b/docs-sphinx/reference/smart-contract/plantuml/cross-chain-token-transfer.puml @@ -0,0 +1,13 @@ +@startuml + +autonumber + +participant "User" as U +participant "Chain A MultiToken Contract" as A +participant "Chain B MultiToken Contract" as B + +U -> A: CrossChainTransfer +A --> U: +U -> B: CrossChainReceiveToken + +@enduml \ No newline at end of file diff --git a/docs-sphinx/reference/smart-contract/plantuml/initialize-side-chain.puml b/docs-sphinx/reference/smart-contract/plantuml/initialize-side-chain.puml new file mode 100644 index 0000000000..b7919daffa --- /dev/null +++ b/docs-sphinx/reference/smart-contract/plantuml/initialize-side-chain.puml @@ -0,0 +1,16 @@ +@startuml + +autonumber + +participant "SideChain CrossChain Contract" as SC +participant "SideChain" as S +participant "MainChain" as M +participant "MainChain CrossChain Contract" as MC + +S -> S: RequestChainInitializationDataAsync +S -> M: RequestChainInitializationDataFromParentChain +M -> MC: GetChainInitializationData +MC -> S: GetInitializeMethodList +S -> SC: Initialize + +@enduml \ No newline at end of file From 6a28eb641f06e6c8457a12bf8057d77659320a26 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 5 Dec 2023 10:52:38 +0800 Subject: [PATCH 14/25] Initial commit of MultiToken Contract. --- .../smart-contract/multi-token-contract.md | 70 ++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md index 7ce467b3e7..2637c706f8 100644 --- a/docs-sphinx/reference/smart-contract/multi-token-contract.md +++ b/docs-sphinx/reference/smart-contract/multi-token-contract.md @@ -1 +1,69 @@ -# MultiToken Contract \ No newline at end of file +# MultiToken Contract + +## Overview + +In the aelf blockchain, native token **ELF** is issued, +managed, and circulated through the MultiToken Contract. + +We have implemented all the functions defined by ERC20 in the MultiToken contract: + +- transfer (Transfer) +- transferFrom (TransferFrom) +- approve (Approve / UnApprove) +- balanceOf (GetBalance) +- allowance (GetAllowance) +- name, symbol, decimals, totalSupply (GetTokenInfo) +- burn (Burn) + +Cross chain transfer between aelf MainChain and SideChains is also achieved through the MultiToken Contract, +refer to [CrossChain Contract](https://aelf-ean.readthedocs.io/en/latest/reference/smart-contract/cross-chain-contract.html) +for more details because we won't talk too much about this topic in this article: + +- CrossChainTransfer +- CrossChainReceiveToken + +On the basis of implementing the above methods, +all users can create their own tokens on the MultiToken contract, +without having to write their own code. + +- Create +- Issue + +Once a new token is created in the MultiToken Contract, it can automatically equip the functions defined in ERC20, just like **ELF**, and allow this type of token to be transferred across the MainChain and SideChains of aelf. +At the same time, we have reserved some customized solutions to provide the possibility of customizing token operations. + +In addition, we have also provided more operability for tokens hosted in the MultiToken Contract, such as Lock and UnLock. + +Due to the fact that aelf's smart contracts can be updated after deployment, in order to ensure users' assets, we recommend all developers to use MultiToken Contract to create and manage tokens. + +In this article, we will discuss: + +- Basic operations on tokens +- How to create and issue a new type of token +- How to customize token behaviour + +## Basic operations on tokens + +### Transfer + +Users can transfer their own tokens by calling the Transfer method. + +The input type is: + +```protobuf +message TransferInput { + // The receiver of the token. + aelf.Address to = 1; + // The token symbol to transfer. + string symbol = 2; + // The amount to to transfer. + int64 amount = 3; + // The memo. + string memo = 4; +} +``` +For example, if you use `aelf-command` tool described [here](https://aelf-ean.readthedocs.io/en/latest/reference/cli/index.html): +```Bash +aelf-command send AElf.ContractNames.Token Transfer '{"symbol": "ELF", "to": "C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR", "amount": "1000000"}' +``` + From 38d2adccf24dbb6a6392bf076e887b0024c0d4e3 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 5 Dec 2023 11:14:26 +0800 Subject: [PATCH 15/25] Complete Transfer --- .../smart-contract/multi-token-contract.md | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md index 2637c706f8..7fa2143208 100644 --- a/docs-sphinx/reference/smart-contract/multi-token-contract.md +++ b/docs-sphinx/reference/smart-contract/multi-token-contract.md @@ -62,8 +62,30 @@ message TransferInput { string memo = 4; } ``` -For example, if you use `aelf-command` tool described [here](https://aelf-ean.readthedocs.io/en/latest/reference/cli/index.html): +For example, if you use `aelf-command` tool described [here](https://aelf-ean.readthedocs.io/en/latest/reference/cli/index.html), this command will help you transfer your tokens: ```Bash aelf-command send AElf.ContractNames.Token Transfer '{"symbol": "ELF", "to": "C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR", "amount": "1000000"}' ``` +If you're developing an aelf contract, after initializing the reference contract stub `State.TokenContract.Value` (by setting its address), you can do this: + +```C# +State.TokenContract.Transfer.Send(new TransferInput +{ + To = receiverAddress, + Amount = amount, + Symbol = symbol +}); +``` + +This will transfer tokens **from your contract** to the account of `receiverAddress`. + +If your intention was not to transfer tokens from your contract, then you may consider to use `TransferFrom` method. + +### TransferFrom + +Users can transfer tokens from one account to another account by calling the TransferFrom method. + +Of course, the initiator of this transaction needs to obtain authorization to **from** account in advance, +and the authorization method will be discussed later. + From 0cf919df3800b0637dc958bc532e230bb4b964a5 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 5 Dec 2023 17:31:03 +0800 Subject: [PATCH 16/25] Commit token creation doc. --- .../smart-contract/multi-token-contract.md | 234 +++++++++++++++++- 1 file changed, 231 insertions(+), 3 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md index 7fa2143208..960d40daed 100644 --- a/docs-sphinx/reference/smart-contract/multi-token-contract.md +++ b/docs-sphinx/reference/smart-contract/multi-token-contract.md @@ -38,10 +38,238 @@ Due to the fact that aelf's smart contracts can be updated after deployment, in In this article, we will discuss: -- Basic operations on tokens - How to create and issue a new type of token +- Basic operations on tokens - How to customize token behaviour +## Create and Issue new type of token + +### Create + +Any ELF token holder can create their own token in the MultiToken Contract through the `Create` method +on the aelf MainChain after paying an amount of transaction fees. + +Note: Token creation can **only** be happened in the aelf **MainChain**. + +The input type of `Create` method is: + +```protobuf +message CreateInput { + // The symbol of the token. + string symbol = 1; + // The full name of the token. + string token_name = 2; + // The total supply of the token. + int64 total_supply = 3; + // The precision of the token + int32 decimals = 4; + // The address that has permission to issue the token. + aelf.Address issuer = 5; + // A flag indicating if this token is burnable. + bool is_burnable = 6; + // A whitelist address list used to lock tokens. + repeated aelf.Address lock_white_list = 7; + // The chain id of the token. + int32 issue_chain_id = 8; + // The external information of the token. + ExternalInfo external_info = 9; + // The address that owns the token. + aelf.Address owner = 10; +} +``` + +For example, if you use **aelf-command** tool described [here](https://aelf-ean.readthedocs.io/en/latest/reference/cli/index.html), +this command will help you create a new type of token: + +```Bash +aelf-command send AElf.ContractNames.Token Create '{"symbol": "NEW_TOKEN_SYMBOL", "tokenName": "New Token Name", "totalSupply": "1000000000", "decimals": "8"}' +``` + +After the new token is successfully created, users can obtain relevant information about the token they have created through the `GetTokenInfo` method. + +The input type of `GetTokenInfo` method is: + +```protobuf +message GetTokenInfoInput { + // The symbol of token. + string symbol = 1; +} +``` + +You can use the `call` command of **aelf-command** tool to get the token information: + +```protobuf +aelf-command call AElf.ContractNames.Token GetTokenInfo '{"symbol": "NEW_TOKEN_SYMBOL"}' +``` + +For instance, to get the token information of **ELF**, the interaction will be like: + +```Bash +aelf-command call AElf.ContractNames.Token GetTokenInfo '{"symbol": "ELF"}' + +? Enter the the URI of an AElf node: https://aelf-public-node.aelf.io +? Enter a valid wallet address, if you don't have, create one by aelf-command cr +eate: 2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd +? Enter the password you typed when creating a wallet: ******** +✔ Fetching contract successfully! +✔ Calling method successfully! +AElf [Info]: +Result: +{ + "symbol": "ELF", + "tokenName": "Native Token", + "supply": "99616840732317872", + "totalSupply": "100000000000000000", + "decimals": 8, + "issuer": "cxZuMcWFE7we6CNESgh9Y4M6n7eM5JgFAgVMPrTNEv9wFEvQp", + "isBurnable": true, + "issueChainId": 9992731, + "issued": "100000000000000000", + "externalInfo": null, + "owner": null +} +✔ Succeed! +``` + +### Issue + +When the user successfully creates a new token, +the token is still in a non circulating state. +Token circulation can be achieved by calling the `Issue` method. + +The input type of `Issue` method is: + +```protobuf +message IssueInput { + // The token symbol to issue. + string symbol = 1; + // The token amount to issue. + int64 amount = 2; + // The memo. + string memo = 3; + // The target address to issue. + aelf.Address to = 4; +} +``` + +You can use the `send` command of **aelf-command** tool complete the issue process: + +```Bash +aelf-command send AElf.ContractNames.Token Issue '{"symbol": "NEW_TOKEN_SYMBOL", "amount": "1000000000", "to": "2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd"}' +``` + +Then the address `2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd` will receive 1000000000 new tokens. + +Next, you can use the `call` command of aelf-command tool to check the balance via `GetBalance` method. + +The input type of `GetBalance` method is: +```protobuf +message GetBalanceInput { + // The symbol of token. + string symbol = 1; + // The target address of the query. + aelf.Address owner = 2; +} +``` + +```Bash +aelf-command call AElf.ContractNames.Token GetBalance '{"symbol": "NEW_TOKEN_SYMBOL", "owner": "2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd"}' +``` + +In addition, if developers wish to place the logic of the token issue in their own smart contract, +they can place the **Issue** operation in an appropriate position in the code through cross contract calls. + +```C# +// If this code has been executed since the contract deployment, then it can be skipped. +State.TokenContract.Value = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); + +State.TokenContract.Issue.Send(new IssueInput +{ + Symbol = symbol, + To = receiverAddress, + Amount = amount +}); +``` + +or: + +```C# +var tokenContractAddress = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); +Context.SendInline(tokenContractAddress, "Issue", new IssueInput +{ + Symbol = symbol, + To = receiverAddress, + Amount = amount +}); +``` + +### Create NFT + +Users can also create NFTs directly through the MultiToken Contract. + +The creation of NFTs can be divided into two categories: NFT Collection and a new type of NFT. +This difference is distinguished by the `symbol` filed when users send the `Create` transaction. + +If the `symbol` filed contains a **"-"** character, it will be considered as creating a NFT Collection or a new type of NFT. +And if there is a **"0"** after the **"-"** character, it will be considered as creating a NFT Collection. +Otherwise, it will be considered as creating a new type of NFT. + +Only after creating a NFT Collection can new NFTs be created in that Collection. + +When creating a NFT Collection, you can specify an image through the URL to facilitate displaying the NFT Collection in other tools on aelf. +The URL should be put the `external_info` filed via a specific key: **__nft_image_url**. + +For example, developers can use the following code to create a NFT Collection named **HELLO** in their contract code: + +```C# +State.TokenContract.Create.Send(new CreateInput +{ + Symbol = "HELLO-0", + TokenName = "Hello", + TotalSupply = 1000, + Decimals = 0,//nft decimal=0 + Issuer = issuerAddress, + IssueChainId = chainId, + ExternalInfo = new ExternalInfo() + { + Value = + { + { + "__nft_image_url", + "https://example.com/head.jpg" + } + } + } +}); +``` + +Next, through the same `Create` method, users can create NFTs for the "Hello" NFT Collection. + +```C# +State.TokenContract.Create.Send(new CreateInput +{ + Symbol = "HELLO-0001", + TokenName = "Hello", + TotalSupply = 10, + Decimals = 0, + Issuer = issuerAddress, + IssueChainId = chainId, + ExternalInfo = new ExternalInfo() + { + Value = + { + { + "__nft_image_url", + "https://example.com/1.jpg" + } + } + } +}); +``` + +The issuance, transfer, and cross-chain transfer of NFTs are consistent with FTs, +so there will be no further explanation here. + ## Basic operations on tokens ### Transfer @@ -72,9 +300,9 @@ If you're developing an aelf contract, after initializing the reference contract ```C# State.TokenContract.Transfer.Send(new TransferInput { + Symbol = symbol, To = receiverAddress, - Amount = amount, - Symbol = symbol + Amount = amount }); ``` From 6ab65d470c587a58c73fe9eb40fdfc04e098699e Mon Sep 17 00:00:00 2001 From: eanzhao Date: Tue, 5 Dec 2023 17:41:37 +0800 Subject: [PATCH 17/25] Fix literal_block --- .../smart-contract/multi-token-contract.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md index 960d40daed..04e1a60c45 100644 --- a/docs-sphinx/reference/smart-contract/multi-token-contract.md +++ b/docs-sphinx/reference/smart-contract/multi-token-contract.md @@ -53,7 +53,7 @@ Note: Token creation can **only** be happened in the aelf **MainChain**. The input type of `Create` method is: -```protobuf +``` message CreateInput { // The symbol of the token. string symbol = 1; @@ -81,7 +81,7 @@ message CreateInput { For example, if you use **aelf-command** tool described [here](https://aelf-ean.readthedocs.io/en/latest/reference/cli/index.html), this command will help you create a new type of token: -```Bash +``` aelf-command send AElf.ContractNames.Token Create '{"symbol": "NEW_TOKEN_SYMBOL", "tokenName": "New Token Name", "totalSupply": "1000000000", "decimals": "8"}' ``` @@ -89,7 +89,7 @@ After the new token is successfully created, users can obtain relevant informati The input type of `GetTokenInfo` method is: -```protobuf +``` message GetTokenInfoInput { // The symbol of token. string symbol = 1; @@ -104,7 +104,7 @@ aelf-command call AElf.ContractNames.Token GetTokenInfo '{"symbol": "NEW_TOKEN_S For instance, to get the token information of **ELF**, the interaction will be like: -```Bash +``` aelf-command call AElf.ContractNames.Token GetTokenInfo '{"symbol": "ELF"}' ? Enter the the URI of an AElf node: https://aelf-public-node.aelf.io @@ -154,7 +154,7 @@ message IssueInput { You can use the `send` command of **aelf-command** tool complete the issue process: -```Bash +``` aelf-command send AElf.ContractNames.Token Issue '{"symbol": "NEW_TOKEN_SYMBOL", "amount": "1000000000", "to": "2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd"}' ``` @@ -172,14 +172,14 @@ message GetBalanceInput { } ``` -```Bash +``` aelf-command call AElf.ContractNames.Token GetBalance '{"symbol": "NEW_TOKEN_SYMBOL", "owner": "2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd"}' ``` In addition, if developers wish to place the logic of the token issue in their own smart contract, they can place the **Issue** operation in an appropriate position in the code through cross contract calls. -```C# +``` // If this code has been executed since the contract deployment, then it can be skipped. State.TokenContract.Value = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); @@ -193,7 +193,7 @@ State.TokenContract.Issue.Send(new IssueInput or: -```C# +``` var tokenContractAddress = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); Context.SendInline(tokenContractAddress, "Issue", new IssueInput { @@ -221,7 +221,7 @@ The URL should be put the `external_info` filed via a specific key: **__nft_imag For example, developers can use the following code to create a NFT Collection named **HELLO** in their contract code: -```C# +``` State.TokenContract.Create.Send(new CreateInput { Symbol = "HELLO-0", @@ -245,7 +245,7 @@ State.TokenContract.Create.Send(new CreateInput Next, through the same `Create` method, users can create NFTs for the "Hello" NFT Collection. -```C# +``` State.TokenContract.Create.Send(new CreateInput { Symbol = "HELLO-0001", @@ -290,14 +290,16 @@ message TransferInput { string memo = 4; } ``` + For example, if you use `aelf-command` tool described [here](https://aelf-ean.readthedocs.io/en/latest/reference/cli/index.html), this command will help you transfer your tokens: -```Bash + +``` aelf-command send AElf.ContractNames.Token Transfer '{"symbol": "ELF", "to": "C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR", "amount": "1000000"}' ``` If you're developing an aelf contract, after initializing the reference contract stub `State.TokenContract.Value` (by setting its address), you can do this: -```C# +``` State.TokenContract.Transfer.Send(new TransferInput { Symbol = symbol, From b4b399a618fb9d9b4cb24e315dc8602d6b7b0ecd Mon Sep 17 00:00:00 2001 From: eanzhao Date: Wed, 6 Dec 2023 11:58:55 +0800 Subject: [PATCH 18/25] Explained erc20 equivalent methods. --- .../smart-contract/multi-token-contract.md | 185 +++++++++++++++++- 1 file changed, 180 insertions(+), 5 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md index 04e1a60c45..5bade70336 100644 --- a/docs-sphinx/reference/smart-contract/multi-token-contract.md +++ b/docs-sphinx/reference/smart-contract/multi-token-contract.md @@ -98,7 +98,7 @@ message GetTokenInfoInput { You can use the `call` command of **aelf-command** tool to get the token information: -```protobuf +``` aelf-command call AElf.ContractNames.Token GetTokenInfo '{"symbol": "NEW_TOKEN_SYMBOL"}' ``` @@ -276,7 +276,7 @@ so there will be no further explanation here. Users can transfer their own tokens by calling the Transfer method. -The input type is: +The input type of `Transfer` method is: ```protobuf message TransferInput { @@ -300,6 +300,9 @@ aelf-command send AElf.ContractNames.Token Transfer '{"symbol": "ELF", "to": "C9 If you're developing an aelf contract, after initializing the reference contract stub `State.TokenContract.Value` (by setting its address), you can do this: ``` +// If this code has been executed since the contract deployment, then it can be skipped. +State.TokenContract.Value = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); + State.TokenContract.Transfer.Send(new TransferInput { Symbol = symbol, @@ -314,8 +317,180 @@ If your intention was not to transfer tokens from your contract, then you may co ### TransferFrom -Users can transfer tokens from one account to another account by calling the TransferFrom method. +Users can transfer tokens from one account to another account by calling the `TransferFrom` method. + +Of course, the initiator of this transaction needs to obtain authorization to **from** account in advance via `Approve` method, +we will discuss this authorization method later. + +In the context of TransferFrom: +- **from** will be the transfer. +- **to** will be the token receiver. + +The input type of `TransferFrom` method is: + +``` +message TransferFromInput { + // The source address of the token. + aelf.Address from = 1; + // The destination address of the token. + aelf.Address to = 2; + // The symbol of the token to transfer. + string symbol = 3; + // The amount to transfer. + int64 amount = 4; + // The memo. + string memo = 5; +} +``` + +If you have obtained an amount of approved value from the **"from"** account, +you can send a `TransferFrom` transaction using the aelf-command tool. + +``` +aelf-command send AElf.ContractNames.Token TransferFrom '{"symbol": "ELF", "from": "C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR", "to": "2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd", "amount": "1000000"}' +``` + +Of course, it should be noted that the transfer amount cannot exceed the approved amount. + +When developing aelf smart contracts, it is often necessary to use the `TransferFrom` method to manipulate tokens: + +``` +// If this code has been executed since the contract deployment, then it can be skipped. +State.TokenContract.Value = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); + +State.TokenContract.TransferFrom.Send(new TransferFromInput +{ + Symbol = symbol, + From = fromAddress, + To = toAddress, + Amount = amount +}); +``` + +### Approve + +Users can use this method to approve whether an amount of token from an account can be spent by a third-party account. + +The `Approve` transaction's signer account will be the **"from"** account in the `TransferFrom` method. +And the "spender" account will have the right to transfer tokens from the **"from"** account. + +The input type of `Approve` method is: + +``` +message ApproveInput { + // The address that allowance will be increased. + aelf.Address spender = 1; + // The symbol of token to approve. + string symbol = 2; + // The amount of token to approve. + int64 amount = 3; +} +``` + +If you're using the aelf-command tool: + +``` +aelf-command send AElf.ContractNames.Token Approve '{"symbol": "ELF", "spender": "C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR", "amount": "1000000"}' +``` + +Next, you can use the `call` command of aelf-command tool to check the allowance via `GetAllowance` method. + +The input type of `GetAllowance` method is: +```protobuf +message GetAllowanceInput { + // The symbol of token. + string symbol = 1; + // The address of the token owner. + aelf.Address owner = 2; + // The address of the spender. + aelf.Address spender = 3; +} +``` + +``` +aelf-command call AElf.ContractNames.Token GetAllowance '{"symbol": "ELF", "owner": "2WNUjzNPyd7dBwo9a5KG56AXfPCdwmcydXv4kDyTyFZwTum5nd", "spender": "C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR"}' +``` + +### UnApprove + +The **sponsor** (The **"from"** account in `TransferFrom` method) can use the `UnApprove` method to decrease the allowance of a **spender** account. + +If the previous allowance was 100000, the sponsor can reduce the allowance by 50000 through the `UnApprove` method, then the allowance will be changed to 50000. + +The input type of `UnApprove` method is: + +``` +message UnApproveInput { + // The address that allowance will be decreased. + aelf.Address spender = 1; + // The symbol of token to un-approve. + string symbol = 2; + // The amount of token to un-approve. + int64 amount = 3; +} +``` + +If the `amount` filed of the input parameter exceeds or equals the allowance, then the allowance will become 0. -Of course, the initiator of this transaction needs to obtain authorization to **from** account in advance, -and the authorization method will be discussed later. +If you're using the aelf-command tool: +``` +aelf-command send AElf.ContractNames.Token UnApprove '{"symbol": "ELF", "spender": "C91b1SF5mMbenHZTfdfbJSkJcK7HMjeiuwfQu8qYjGsESanXR", "amount": "1000000"}' +``` + +Remember to call the `GetAllowance` method to check the new allowance, ensure that the allowance has changed. + +### Burn + +If a token is burnable, then any token holder can burn their own tokens through `Burn` method. + +Whether a token can be burned can be queried by calling `GetTokenInfo` method. + +Like if you‘re trying to get the **TokenInfo** of **ELF**: + +``` +aelf-command call AElf.ContractNames.Token GetTokenInfo '{"symbol": "ELF"}' +``` + +The response will be : + +``` +AElf [Info]: +Result: +{ + "symbol": "ELF", + "tokenName": "Native Token", + "supply": "99616865842269247", + "totalSupply": "100000000000000000", + "decimals": 8, + "issuer": "cxZuMcWFE7we6CNESgh9Y4M6n7eM5JgFAgVMPrTNEv9wFEvQp", + "isBurnable": true, + "issueChainId": 9992731, + "issued": "100000000000000000", + "externalInfo": null, + "owner": null +} +``` + +Note this line: +``` +"isBurnable": true, +``` +Which means the ELF token can be burned. + +The input type of `Burn` method is: + +``` +message BurnInput { + // The symbol of token to burn. + string symbol = 1; + // The amount of token to burn. + int64 amount = 2; +} +``` + +If you're using the aelf-command tool: + +``` +aelf-command send AElf.ContractNames.Token Burn '{"symbol": "ELF", "amount": "100"}' +``` \ No newline at end of file From 54a537e1489525079cb8e34cf8df4e8513ea567f Mon Sep 17 00:00:00 2001 From: eanzhao Date: Wed, 6 Dec 2023 17:46:09 +0800 Subject: [PATCH 19/25] Explained external_info usage. --- .../smart-contract/consensus-contract.md | 2 +- .../{ => images}/lib-calculation.png | Bin .../smart-contract/multi-token-contract.md | 128 +++++++++++++++++- 3 files changed, 128 insertions(+), 2 deletions(-) rename docs-sphinx/reference/smart-contract/{ => images}/lib-calculation.png (100%) diff --git a/docs-sphinx/reference/smart-contract/consensus-contract.md b/docs-sphinx/reference/smart-contract/consensus-contract.md index 692382fc56..f666820d33 100644 --- a/docs-sphinx/reference/smart-contract/consensus-contract.md +++ b/docs-sphinx/reference/smart-contract/consensus-contract.md @@ -464,7 +464,7 @@ Modify `last_irreversible_block_hash` and `last_irreversible_block_height` data - implies that the LIB height is 181 - BP5 as the EBP, produced block from 189(NextRound) to 196 -![LIB Calculation](lib-calculation.png) +![LIB Calculation](images/lib-calculation.png) Block confirmation time: diff --git a/docs-sphinx/reference/smart-contract/lib-calculation.png b/docs-sphinx/reference/smart-contract/images/lib-calculation.png similarity index 100% rename from docs-sphinx/reference/smart-contract/lib-calculation.png rename to docs-sphinx/reference/smart-contract/images/lib-calculation.png diff --git a/docs-sphinx/reference/smart-contract/multi-token-contract.md b/docs-sphinx/reference/smart-contract/multi-token-contract.md index 5bade70336..436d81ffe1 100644 --- a/docs-sphinx/reference/smart-contract/multi-token-contract.md +++ b/docs-sphinx/reference/smart-contract/multi-token-contract.md @@ -493,4 +493,130 @@ If you're using the aelf-command tool: ``` aelf-command send AElf.ContractNames.Token Burn '{"symbol": "ELF", "amount": "100"}' -``` \ No newline at end of file +``` + +### Lock & Unlock + +The `Lock` method is similar to `TransferFrom` in that +`TransferFrom` directly transfers the tokens to a specific address, +while `Lock` transfers the token to a virtual address generated by the MultiToken Contract. + +This means that every time the `Lock` method is executed, a new virtual address will be generated to store the locked token for this time. +Moreover, only the MultiToken Contract have the permission to transfer tokens from this virtual address. + +This to some extent ensures the security of user assets. +The user only locks the tokens in a virtual address for some purpose, rather than directly sending it to another address; +After meeting certain conditions, this tokens can be returned to the user. + +The input type of `Lock` method is: +``` +message LockInput { + // The one want to lock his token. + aelf.Address address = 1; + // Id of the lock. + aelf.Hash lock_id = 2; + // The symbol of the token to lock. + string symbol = 3; + // a memo. + string usage = 4; + // The amount of tokens to lock. + int64 amount = 5; +} +``` + +When you are an aelf smart contract developer and need users to lock tokens, this can be achieved through: + +``` +// If this code has been executed since the contract deployment, then it can be skipped. +State.TokenContract.Value = Context.GetContractAddressByName(SmartContractConstants.TokenContractSystemName); + +State.TokenContract.Lock.Send(new LockInput +{ + Symbol = YOUR_TOKEN_SYMBOL, + Address = LOCKER_ADDRESS, + Amount = AMOUNT, + LockId = A_HASH_VALUE, + Usage = MEMO +}); +``` + +However, there is one condition for this operation: +the address of the contract using this code, must be contained by the `lock_white_list` field of the locking token's `TokenInfo`. +Otherwise, this contract won't have the permission to lock user's certain type of tokens. + +And to unlock tokens, the code will be like: +``` +State.TokenContract.Unlock.Send(new UnlockInput +{ + Symbol = YOUR_TOKEN_SYMBOL, + Address = LOCKER_ADDRESS, + Amount = AMOUNT, + LockId = SAME_HASH_VALUE +}); +``` + +## How to customize token behaviour + +If as a developer, you have already created your own token through the MultiToken Contract, +then you can leverage `external_info` field of `TokenInfo` structure, to call a configured method (**Callback Method**) when the following actions occur on the token: + +- Transfer / TransferFrom +- Lock +- Unlock + +It should be noted that in the current version, +`TokenInfo` can only be set when creating a new token. + +The callback method looks like: + +``` +message CallbackInfo { + aelf.Address contract_address = 1; + string method_name = 2; +} +``` + +For example: +- You have already deployed a smart contract via Genesis Contract, +the contract address is `2LUmicHyH4RXrMjG4beDwuDsiWJESyLkgkwPdGTR8kahRzq5XS`. +- And there's a `CheckTransfer` method in your contract. +- You want to create an **ABC** token via the MultiToken Contract. + +Let's say, if your intention is to automatically call the `CheckTransfer` method +whenever someone transfers **ABC** tokens. If the method fails, the transfer will fail. + +Then, when you create **ABC** token, +you need to fill the **external_info** field with the key **aelf_transfer_callback**. The C# code will be like: + +``` +var externalInfo = new ExternalInfo(); +externalInfo.Value.Add("aelf_transfer_callback", new CallbackInfo +{ + ContractAddress = Address.FromBase58("2LUmicHyH4RXrMjG4beDwuDsiWJESyLkgkwPdGTR8kahRzq5XS"), + MethodName = "CheckTransfer" +}.ToString()); + +State.TokenContract.Create.Send(new CreateInput +{ + Symbol = "ABC", + TokenName = "ABC Token", + Decimals = 8, + Issuer = ISSUER_ADDRESS, + Owner = OWNER_ADDRESS, + IsBurnable = true, + TotalSupply = 1000000000, + ExternalInfo = externalInfo +}); +``` + +In this way, whenever a user transfers **ABC** tokens in the future, +the `CheckTransfer` method in the contract with address `2LUmicHyH4RXrMjG4beDwuDsiWJESyLkgkwPdGTR8kahRzq5XS` +will be executed at the same time. +If the `CheckTransfer` method fails to execute, +the `Transfer` or `TransferFrom` transaction will fail. + +The author of aforementioned contract +can modify the implementation of the `CheckTransfer` method through contract update. + +Similarly, key **aelf_lock_callback** can be used to specify the callback method when a user's ABC token is locked by the `Lock` method, +key **aelf_unlock_callback** can be used to specify the callback method when a user's ABC token is unlocked by the `Unlock` method. \ No newline at end of file From 807acbbb60c3620f4959423fddf1fa3766a18731 Mon Sep 17 00:00:00 2001 From: eanzhao Date: Thu, 7 Dec 2023 10:50:10 +0800 Subject: [PATCH 20/25] Initial commit of Vote Contract. --- .../reference/smart-contract/vote-contract.md | 97 ++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/docs-sphinx/reference/smart-contract/vote-contract.md b/docs-sphinx/reference/smart-contract/vote-contract.md index ea60060273..53077f4b99 100644 --- a/docs-sphinx/reference/smart-contract/vote-contract.md +++ b/docs-sphinx/reference/smart-contract/vote-contract.md @@ -1 +1,96 @@ -# Vote Contract \ No newline at end of file +# Vote Contract + +## Overview + +Vote Contract can be used to manage the lifecycle of a voting event. + +When the aelf blockchain equipped with DPoS Consensus is launched, the Vote Contract is used as one of the underlying contracts for node election. +In this scenario, the candidate's public key will be registered as an option for a voting event, +and users can increase the number of votes for their supported nodes by locking ELF tokens. + +Users of aelf blockchain can quickly create their own voting events through the Vote Contract without implementing and deploying a voting contract themselves: +they only need to pay a tiny amount of transaction fees. + +In this article, we will discuss: + +- How to create a voting event +- How to vote for a voting event +- How aelf system contracts use the Vote Contract to achieve node election +- Vote Contract method explanation + +## How to create a voting event + +In the Vote Contract, the `VotingItem` structure is used to store basic information about a voting event: + +``` +message VotingItem { + // The voting activity id. + aelf.Hash voting_item_id = 1; + // The token symbol which will be accepted. + string accepted_currency = 2; + // Whether the vote will lock token. + bool is_lock_token = 3; + // The current snapshot number. + int64 current_snapshot_number = 4; + // The total snapshot number. + int64 total_snapshot_number = 5; + // The list of options. + repeated string options = 6; + // The register time of the voting activity. + google.protobuf.Timestamp register_timestamp = 7; + // The start time of the voting. + google.protobuf.Timestamp start_timestamp = 8; + // The end time of the voting. + google.protobuf.Timestamp end_timestamp = 9; + // The start time of current round of the voting. + google.protobuf.Timestamp current_snapshot_start_timestamp = 10; + // The sponsor address of the voting activity. + aelf.Address sponsor = 11; +} +``` + +To create a new voting event, users can send a `Register` transaction to Vote Contract. + +The input type of `Register` method is: + +``` +message VotingRegisterInput { + // The start time of the voting. + google.protobuf.Timestamp start_timestamp = 1; + // The end time of the voting. + google.protobuf.Timestamp end_timestamp = 2; + // The token symbol which will be accepted. + string accepted_currency = 3; + // Whether the vote will lock token. + bool is_lock_token = 4; + // The total number of snapshots of the vote. + int64 total_snapshot_number = 5; + // The list of options. + repeated string options = 6; +} +``` + +If you're using the **aelf-command** tool: + +``` +aelf-command send AElf.ContractNames.Vote Register +? Enter the required param : 2023/10/10 13:30 +? Enter the required param : 2023/10/10 14:00 +? Enter the required param : ELF +? Enter the required param : true +? Enter the required param : 5 +? Enter the required param : ["A","B"] +? Enter the required param : false +? Enter the required param : +``` + +In this way, you have successfully created a voting event with options "A" and "B" +that accepting users locking their ELF tokens for voting. + +Run this command to get your `VotingItemId` for the voting event you just created: + +``` +aelf-command event -e ${endpoint} ${transactionId} +``` + +## How to vote for a voting event From bcacc75aa6c81db6108c17198ce74026531582ea Mon Sep 17 00:00:00 2001 From: eanzhao Date: Thu, 7 Dec 2023 20:30:31 +0800 Subject: [PATCH 21/25] Complete Vote Contract doc. --- .../reference/smart-contract/vote-contract.md | 282 +++++++++++++++++- 1 file changed, 278 insertions(+), 4 deletions(-) diff --git a/docs-sphinx/reference/smart-contract/vote-contract.md b/docs-sphinx/reference/smart-contract/vote-contract.md index 53077f4b99..9ab2089559 100644 --- a/docs-sphinx/reference/smart-contract/vote-contract.md +++ b/docs-sphinx/reference/smart-contract/vote-contract.md @@ -15,7 +15,7 @@ In this article, we will discuss: - How to create a voting event - How to vote for a voting event -- How aelf system contracts use the Vote Contract to achieve node election +- Application of Vote Contract in AElf Node Election - Vote Contract method explanation ## How to create a voting event @@ -80,17 +80,291 @@ aelf-command send AElf.ContractNames.Vote Register ? Enter the required param : true ? Enter the required param : 5 ? Enter the required param : ["A","B"] -? Enter the required param : false -? Enter the required param : ``` In this way, you have successfully created a voting event with options "A" and "B" that accepting users locking their ELF tokens for voting. -Run this command to get your `VotingItemId` for the voting event you just created: +Run this command to get your `VotingItemId` for the voting event you just created +from a `VotingItemRegistered` event: ``` aelf-command event -e ${endpoint} ${transactionId} ``` +From now on, as the sponsor of this voting event, +you can use the `TakeSnapshot` method at any time to save a snapshot of the current vote count for each option. + +The input type of `TaskSnapshot` method is: + +``` +message TakeSnapshotInput { + // The voting activity id. + aelf.Hash voting_item_id = 1; + // The snapshot number to take. + int64 snapshot_number = 2; +} +``` + +If you're using the **aelf-command** tool: + +``` +aelf-command send AElf.ContractNames.Vote TakeSnapshot '{"voteItemId": "${vote_item_id}", "snapshot_number": 1}' +``` + ## How to vote for a voting event + +### Vote + +Users can use `Vote` method to vote to an option of a certain voting event. + +The input type of `Vote` method is: + +``` +message VoteInput { + // The voting activity id. + aelf.Hash voting_item_id = 1; + // The address of voter. + aelf.Address voter = 2; + // The amount of vote. + int64 amount = 3; + // The option to vote. + string option = 4; + // The vote id. + aelf.Hash vote_id = 5; + // Whether vote others. + bool is_change_target = 6; +} +``` + +Among them, the fields `voter` and `vote_id` can be empty if you want to send the `Vote` transaction directly to the Vote Contract. +The `voter` will be the sender by default, and the `vote_id` can only be provided if you want to change your voting target(option). + +If you're using the **aelf-command** tool, +and it's the first time you're voting for this voting event: + +``` +aelf-command send AElf.ContractNames.Vote Vote +? Enter the required param : ${voting_item_id} +? Enter the required param : +? Enter the required param : 5 +? Enter the required param

GZ<;!yLjF{Q%c) zB2T#|JdPP^;K;FO+oea}rKRr4Bi^kfJlyal^Lm+&YwJT~I>*L4Q1j(|Wx@(VnaRxG z^nc*cpAl&8nS?}esN)d-Q-LW4CIT49Eaa;^dT-xAh6l&Avm;(eT<|NlEm9c#P}4w} zYVDRSC%nrmw|lV!5N~EYeg>W}&|86~WrVf-lBI2Y2RNUL+y1TKpo|#338a*iN ztxOHdk?|Ksm}#tP`-^9MXK)BhoIzUhBEhbV&s=kG!=+BgU+!s`Cxc7PZWa63@Q zkB4Fyo9Ya1AH<+(l2Jnc`M>|X|6_r6oHVJq&!A^Pz*PZE&`tA?&-%vn@9;eNlmCz; zktYEjn~WChu>3xB*%5dOS-MtHM&KELPXjMF1Jzwx*B@N8{Bskrt-#CBMTsIiR zF1Fv!Y8f`YH;KaWKTn0>lji?N`y}i8s-09+texpx2N**VqQ3?Wcx+!oyg#ujcP~Ii z{{vD;{v;?L;V^y`2hj_4&cgT|+<$jm!~P5gor>LZ%g|EOnFoUj=)OuAHHNI=mEzff zeov-8fRC|%TMGJ!Dhm+ffj4w;!;PWfXw(1vVxgd*<3Ho&JBE=6dgdhxP5TA()AiP! zCIt{W9nrOt=-&nNzfII*6(}9ZMz;GHI~l6l7ar?SBd`Kq`;)$F>-MRn%um22AQ9Q%?N+GRtNUoe_jT_)zgv%oyY27#F}o) z@ISIat`8eImUIe>Xl|6st?aLZdz9ytHV-h)wf>ABzM=DVBCF@c3r*K$tJzXqlgE-J z!QGDl^MO4IiCA1(RK1!Lr1Tpa)h2FwRdH z{`Up>=RNgTi<>IV4=5c@*57ZA?Rll!JKcm1EfEvUpDe~69P2dqpBZj7TnO$`+%$X4 zX*q06z2B^BDjADOcF&yZFuX4gqJG$THMcf*lhM_7b?V|G;&9#Le8IZ3=KctNhG8*J zt@X*(t7A3?(PqVyf#^28BMy3!@EhlERkj$;AH_x_Bnp_7>izkS4N%eIEmo1xAtUS? znib}8Nd0F$$}aDjwAMK-!!~RR?byRs_Dl=mZKy-_&qSg!SQRa>h6BfacTQoW)IYO; z!$NTVr0b@7P#SsZQV2}>f3ZPiAtR^M4d=8{jW25LHoyeIkY!rgKX>AiEHRiNu!Zjw z!;#0u3yr6D5dZTX6CaYEYu8wKP1F(tD@yXt6!&#Npvlfua>MZqa3V2O_ZAK8?2K0_ zM1PxqM-u_Ng7_8ttH&5U!O3&n)iz5sj!J)Kl$727=gWX6Sb&WaGNS$S&<_{6hps&d zg-JuLczh9FBLDSr{{CkzW3>I*bAQZ*G6i75{`39*S=vy@&pZGBTYt^W{~rnV|CcqP zTShF}^6Z)&5K>y{NG0q1&hdu;Rl*mm2qQreMEr22r6CWh*TYKKt$qeyM2A zo?mvPT;y@Nz2QcDfTV^q>80w*d-D7$K8t*m>UJN;?o3XsbdI)+*il6IIzcs%xKY6PAPK@javN%=aqXxkI;zYLiw$w2h$nY?ora z2JDD4n^cBz08jYGj*$Ml=CuKj`^UrlApXbN+-Cvb8`ppMSm{`-`Qjc92VT6vm)3LL zRL@>BDUl6_H>NTzlG~T~eK_KvI|j4LrWnlAfj$RM5H?`Qj+*x2Y4E~ri*&;FFvb^h z8kR^Wp?B;b=QsMLVU%pI-=-EyRLV^XHgI@RG`&2^nnlZ5n^+Ux5KKDT3Q30U@O76& zEwUz}_NJJ&>vFk#Jj+im_{V&&{0%NUwXkaXS()P47~Y{JiWA*jye)1}?bb@sDec5c zx80UG$<@k`2=Gp(ZW?S<;POSoNBIT22EWx+FCbF;3v2$kb>Clr7ySo4gc4yek3KG$ z1{80^ANXFp>NGPA#mFfrL5_a*48i+RV$U>IQu@B9rxFOCUk^Q6n_Q)qz;yEx9-3!bypC);95{m86!)OkvZ4 z=fIW}+k&ymEg9L5%1YDzh5Ii18R*ZHUS<7+7y^WUJ?rQ9}V5(+z(-M}Se zt3OZBi>#HW;l^8aA`>}PHJZqyj|%U+TiuR^7^BDLGr;-OY%k0{)}-Hu*Hy3-=~#|# z&%JF>yAqk1f2%`y2DzKMI=Y7uc{-c_QTxoqra-)bCU>YlL{Y2pu$oleO9|J6I=o7^ zvwnZEL}F=wr`1gdt_7PKl}Qv7?0iF>fi!}`Tw-SyH4HA%dH}We2lD-eTxqocU<9TH z`WoO$1^Oh070%+VSrskt&( z-n+D#c|x|}DWWm=0>jK>zo=+n!0Fh;e(-vzl|VY)3=M0R1hD;Nb%5@dB-AxjAOB54$U>uI+6} zh@zj9O?^&Zr0cE=RC?3ODZiL^TcnV*kCGy}D^?f?LHU-gn5Oa;UpNT*4gbVdz~lYF z``-BzGDs;CalNw@rnD;N&o#myPEAnrK>nl!{D0XuP-$WE5G~r0(1>mgGPUZ^Vs_bf z?;c3d<>Db9=C`)MRDbEHZYB6O*T_!+Q}zLmE2WfV)V*@hUCJ7j<(*D$1yEm_Yf)qF3sE zZjiaN)MtUasT)b@_{)nMFvv*01sXEam#BF!8Nm7aeJ#lxD4NHXZ&TvD>Iy1qy#_tt zX0J%1u=QlJRm%fG+jGxFL9TuM2O;q;%R@D~NaGieF$4QR~a?yZh6 z`>p|RMKZnM*Q;{0qKBSTqKWc?>4CpLN-=paQ=fL(!}*8r#tfa+J&|zH|B0Ty{%g)z|AuY8W6*zMtRP9y%HDp-BhI|Fqghj} z#j(fA_vgq7TA72~zwcRCQK}=igEcHe@Yf&E9`pLkblf)b`Y1C+|Z_@P**K3$OLO8iFN=?Br08!02*`SUi80? z*WsvSQ$f&HjOTi>#7d?_-nA(f+vjwm?J|FF=J(&)CJLbX+d7f91V5F|Tfebs6S?m& zv-QfMcXyqOyNH6jIQ@V!Bi)KRm|%}KZ#eyHT*tT_v%B-n(8k?1{et6-j)h5Q!?d-E zCvOFWa65oP&qU6EU1gw(a&9GLz7c(4njuPgn0)-n;lhOstKWu!bmpA!8}1pE-xEr< z#B$=fwP=lk8e7Mf?3QRa#+f*m=kqyQ_|g&E{h!!tZ2zcfMi)1g{7tOUkV_ zN~e$Dz}Z2m~qC#x0!)5nCJrG~|Ezqy`>x^KSU+QVY=`Q|^Y$+DI6~ z%o&G&=3+iLN%{=X@rt^|*vb(g-y4FBunl2w2)617CUmW^f%j|ku!>{v-d<(kPC!}w zT$h!zFz6}8V{di>7oDTZ$wD^aM>Ci(R+P)p@Do^y-wDJ@e9m{z;iO=7D04aP%ckRL zY*NaQn?L8QH#5d&ih;aoyoWyS9K=tt_NAXlzS?mCodIc5^sQ_r7^n+OI(`uTITU zI0Gu_(Sf_3&xZ4o5b3+GJpEphin6Oa<#f!LML*zIn_S_#JY9x*61c)$54kS+t~@TE zyVFnxgszMg1-`Dap;!|V44Ycw{Zjp$Qrf1OE3(-w8u{p8I}l?kJjmjk(#hVYl0=GC{C&rIAb{rEeG z9*|LbD72`t7BqQ~g_f9-lE)_zUakfASk~_%*A@AgJr*lRcm~{|1jud^_nbFF+Z?Y6 zpN7%cI)#l(&n@E~w-yB25Qcrk%-d1>jlk^snZEm#AQCK&v9xgXG8&9&KeQcLxpm`- z9Lj!9}59}DY+H7M7`-Yiq4%zs6$ z*W*-rnt8byS}_J1cbs3n$ia`rfu#*f69Qy-p0I+NS>W-KmnLtDuBQvMsmVYn{QmD= zqc|NKMsIQPbdL1geFIC+gr*1|PyG(KlVM<|m=`=sF!aRBb%w~zY)jM)_1SJ-T6Kyo zvR=haoKhvVrCBK6N%&<*H}06|fotRm8lp@u-U?KXm>25r#_>?~#Sb9FanhdXy!A4& zr3M(7!BYSm?seShAN%R05HZ;C>zb`phU{K5@B zcuzChKqZ*;d45sx>SChBZq2cpYw9kI!UOp?X9b(~@A0Bo^DQ7_EZ24UCKtq<9uUdT>`s_FASU0QyHnbOPY$$UH@=y_(&#(Y3|)pNFf zvCp}%?Nj)0ndn8&!Pi8JHzn)!P0YB)5=uJTT9q!5KOr&nZP)1gilDN#g)uaij%~}# z$}fF(?7Y$P>YXO;>YRPvy_u2VI?oFd7$pRlDgP_VWK6}^m#q-${b(=(p`8LCTTBe0k4WC2$LlIfdtV}7b_aWIo zA2>TU@&i(Pys{dbcp4L-cW;vy)!{)Bd?EY!B@C%|%(V~TAD-h|7hDZT&&fSkw9wErW<0AZ*aCKMpS_o5oBfE(1~~?FL+}D9 zjEhJfliR>Sv%MZ)Y2eBm5ButeI;%{hw^|UOaIn@Ng+2IiV>E53?CwIhr^N5K)!Jvx zRbC*XGrsz~ej9m-yh+)~GjoiM187i2&rB2n+hdn}Kp3pf!kEW1AwxNVx-f$p=D_qD zAw*p#+wRgM+k*9~;f!QE9h;4C>fjh%%{KbFo>JVRqazB$^dir=?}69LzqPoNNH zKR2scWVQi_qnPFxod7s*t}w&>jdh?rcjm~G+MrOL@{6M_QB;n)5>YY!Ui?VEPJ_Il zSTnsB=g{ChWSbe!%4W2?D-cjekkLnm>5twrj8-T~_&?d7Z=|nE%s>nLt+BDIRjCtWx~HIrIpL)TbZ?zlDk{fuj(N!nY~QvGspg5fCX-43?$1`= zy;E*1B|s?{NrpAplOJaJ*7*4MvP<9VQJd~WWdn~PV*Q$ufJ^ra{2ac=L?M}kdO899 zq7>x1N7*8QF%s}chXdr2h@q1F)Tf!R*a@190^J0hGm3Hd)mSp;`~}kXYXcnUOoc^q zVIMuvKWUV1JaI{!wck0(ql?#G{r?5eBMkioa!j2R4VHY zRlieUP-ic+r>gq4VNp=*OUgBs5UF($iQsA-? ztd|Y`Cf%`nq{At5hPk~dWV4|n7aIHOp-$CGz2)>nQC6<>i7=-k(>7^4nv!k%gZy-% z^_4x2!r&>)W10l*)NhK%sU=2TwkHW>u&Y*&d^IsI!bO?HSRLn=;S4f_DNe%!yT3QV zW{qySYC{=T{ZZ5;%psszTP62>RhP|>gSC`9cYcBW383;WdPRByA=}@b`%yz8oLDvj z1@VleR_!?TE*27GPbSBV(><}06n{KSoC@1kbMBBO`wS8neECgH!`P9M5r5=_#{cUX z9$hrI;Tt9A>uCYbRj{kD2i!i9+$u)`6yVQ#65uVNBaoyWc`=bfwea8_>+5nXid%kHs*O91NtOxgrA}GXyc9FYgTZjZ6!~kNQ=YssE6!HF=e6A z?9YAYO_xMlnr>zjMm>rlW6LQ=B%8B+8Lp&?87r{KllxYfIrWPTRZ_GEG;LkGIDRYw z0Sg}|UtF%YN_I0qP@1k5wB4IQ!wcbzoUcj^G_WX@6gDe%yY1d}fdCkTk(^?U=umuL z6C`DL`9Ax1b&Lcwy)j|!xu(4dr9hHkQfOy?@mTs#WiRrB+bU;PN^FhP$Y=88+8ix7 zq=f7VJjK~deYYHf@w)E?yutS`GUlycJilx?aT`~|6?k(?Fgr33po6;DwVIXdMd$&w zD|@_bV27A(UjIjaf#6hZlC5^>ZNjtUK{rmLc3Z*5$@JZL2e$+n!kD5!&&gbqZw1)a z1x45df~dPlWj|D_zz5iX6B5KAn9|^;%UQ(Y*kb3XAnuVGC2kQz@S#JvnDdpYG$LI~ zE?ARyWXbiphFj90oV~( zh95WbIkd@;yrsc%JjeOGXnH3y8l#c8|jiJDd zgq3{Jv|YACQN0ro1I#`5k-2G~?`H3$F<+Z!^-Fm6oJCp`oLsl_{h{cv9D&w}m=Xex zrulPslheXXna;H0`Eb%EF@fY~5=V5(?l*ZuZ1bi&Fz-e;LEx0r98F&H57c5hyY46! zpAoU#vexE>!6k*`LQ@882TKw=u$zPY4J>YL4$ zhAA{&D%5o$K2;YB5>KV`@;I2D&M?S{{^9n0uR2X}+unfJZ7J5yI1v#*}Dm4xI9%bb5I*a=*O{yIImZXU#*& zuUKq$`UBwP;s&x!2j4z<+?LG+m@?Qsgu}ao_QPbLAu$!wY9ARGkM|}d1HCW}N?m85 z#kiFG{hF0tYD(6Ks2V200JTbIWx?Q^CL5k81@;shb>Rf_SZDmYJ#!5Y;enO;=YgPh z6f*|13}s^nlx|c1s4kS+&^h!q8NBrBc{8@(!2|3Z+gy%DcsP;#0~5`QQrM5_gLT(xRbB-v*d5OL5r}QkKmta$FtCM@9>Ig@iX=d8T2?iT z2erZMy*`Kp3-hxFZ*mxHIa@?{yfDqpdU$uk@Cdz^tSj z!&})wPimcbsM2+NU7)_$DTR(?Q9Zaa>KrfeK5u0v>8=}D5GZH`Z1jbAfPoDRIpAai zN^Fx9_rupC|z2%NpPLPWAvJ0}Czmbz}Bt#hmHb zzb?515d);O+lkGVWqaDAn!C+G(u8cA>VO6qXm zRfcS2DHxS>k2WpXSwqvl*vfad;D!QcX%-hDG1{X+6w|umT@uS|7FV3<$G^~K1Yiiz*I46wt+2;(oelwBU`JIoc$RcGXnA?jjp!Mp{^b1{5pX` zl8`t9pdChH$~#@sM|bHc7G3Nr8QFG;4C&m6nnUmpj4eBma5MQ_Z;&r|;fe4EV6_Ft zg6hq!@w?};6P}%|$w-%v-tRIY4-$LhL8j3e;6_^hY+4WG0B{r$Cfy&&2C3BI*Tc$9 zi^mqS?gf9_o`qmI91Wn7nu0Uzlq+Fn>xAe( zOlb6|Q(9{yJ{Z%UJ-@&eiP`U|wNkadd#BS7Y&YX!25og7W zsGS{?kwxTwaiA=K$lHU~)>6{f5qBmkg9;FWtUJRe+Tm?@j8z1}BH`n4N9gTfy0G=b zBu=aNax@JCL7wjj*8aJvv%)%lH`s{yKLcPufN~elQ!;Zj#2fDRK?RUUV zl1j~?j%OD>W)p(1mSipoJXqDU11noKG_B!{kch1uXWax*5tFl3Pygm6b?1D>lo8?2 zpAAb16n=Re2-P%JR9C&Tm=htmrY-ULXzdl_F04ScIHobju4Kn13ks!Fen%=aH>SZB z(5W3aDLYI|(2E^DaPM+w=*~obu^`VijVLSF-`&1zVinmUt!eKTE$BXglf>I6s&P1i$m)plS7^S4 zAv5%zp{alRY0}rrP&abQCM-C)7-Dfe6#q!KgDoU5>P^471b>QJ?I(k~It{rm7D{u! zU+#*&f4->{YGL8`czdLv?x#&g2dK$5X)iu)3}y90B94AoC){!4GJW4;XxN@qE%6O` z0O;j!BJozA3Gp~)!;$VKy3hK2+0aIk$`$yTA(}7rh`n~tSJ9GgI2AP3*?s>c(QK^q z6X1$i3!7@NQ*#VM1`gvub>17PEzZpF(hd0>o$DBQ7~B*N^@T*Zj;G@HVmZM^u{>m; zWubBnrAOpl`jymYp)~pfSQnY7k%YObtFoKfo&Kqg7Z03%m60JqmwMal{@E*NS}BojZhu_!S{-$^(Efqz3+i8)VruZ4XkN*c7@2PVJ*kHcv^xV? zAXzC+;q;szvB{lQqef)VZ`s;Yjq-{96_q(%&NHO^OY@VL&y&<4MC;GT+AufA=Q+&| zw&Sloq}*BkB5KW52vgj7pPOe23y!V@V{O+Nn7z@TQ7}WA4SnXyYf14MF*|sd5N8bk z^rc5&*RlMh_bWlV+889_2qb>RnyMCng1iYkslo}PoS6O4MY}%R;v5#XRrd=Y9Jmp+ zeRUN%jIU~?XuUF2mWNrzM9yxXYh8ikK`*!)JJV>bUo!}u z^bDfm#*!(UD@hmr^{zN+y%PQBICNODTq2S0{(C4N^c~cmzO>#*V(9T1OymtFm!3Ug z(y}z-HHnO?kPq>>n%uy$o#u;eE#-4~u-M+s8BpjwN*th#`8(8tz4%v!&*io0FxPjd z=T@$zlzI|yQD|eiCo6SdvJ_%yGT{A$jlPy@39B$h&qP0w=!@ME8PnC@Z_(9)2+lWw zFbYx6Yxh{5SxTD#TobPJl1KJHBPpt19gN+XjZ7x_PNM7(?8Sxxa4Ck@K*f~hda**uwuL%!F za7aYMXm;&`0Q1&oi$mw{O}Wh=DT+Z(NK^UHO3zM*VIkn9z-`N(X3y4pZJk~YO$n38 zjhvST`bb~9z-k>>O(7{+DIEs1Q%npJ5s$5^%2MxE4r>m{AzfF9N~q5Hx<~ILep237ts!*ky1N6{5JbyE!H{rq2~heCrhu7m*F0h| zVBCxgX2)Yk_@XPh#`oQU4m$9?eX!A}4IrfV zv;k1?KYc#`$fEvJn!gaJThr(5(j#BAV3}Yu867z#(-9iXcwlWKDe^nScF4!u$9)05 zufZ55w&WQ#AC0+c6&O%_^iW#ah4ZoNh;({N{rm2*B|#RCMhV)*o4vN@uk&+4BiS_< zoq9n84|$i35c+V0>-`zopzWrW@*k z=c2PaWR*B5koaaEGlr?I98+Ziy?30csCv~dm)m&)si`Ed6+{|+E>A|uT%dA4Shv1~ zt%iPDug%k5y!CsV*5#Vn!8j@N)mA!Hd&uy4=~d;W9U0mc{kU710MkY$l|~!rbhAF< z>@qa!*N6FdNex%?w-V?MvNeUn7!Mr1LL!=5v9Krt6KQ?OmVH1|SFFnnM)pj03kF!7 zo@>H>^gxJ0wiqE)+Y}<;d(_*-@d_X`SsoB=8Q1w!}MNJOFF2S64N5tYBqzme=$q%?9uxYO3l{k;BDj1)j!=gDC@hYZP1 zE^>@QMjqvBuzF$iY(4?5x=yoDtxhA_#_6p*w95No0PmAfjzbIH52jl_=4j9#)yo7Q zsE)(Y^d|`H?^*34Ojk%Xn>5M^)KqVc6{R;@PX%Ycjx9=48lJ^!`T+ZhB6vNVYID%F z+DeO2{D{6V4S+B?_ymxCUNr5-}^%C(N1KJ*TZh9=b?!?L>qu!L2s)V zb#U+2fiRy4-`1P?8@A#xcpnA`hSX|EugrWDN+*|Os$64^G;I4-5h&7tR9M@G47{$_u5x#uX!O7#vI zmQf3X=0BHK2KfSI_{el!;Ly$W8{8d z)U=-t_(m*F-yB5ptN*7K0URRGf@aj3Zx(!+`*XIWVDEOFfSW1Dl3b=GL@u*f@iIf~ zY-R9lp5XCd9ogPDjSe-GMm@D-J0mgLl(pq@H}fsT-;W*W+A5Tq(%lfKuag1e2wgF3?}0}|TdcvnTLS8_C~P#X}!nt>7x zbpMJ>m_r=fwP+hz%IXzMguWI?wq{9+1~${Xk} z+ZqF=0Gi^kWCO5OoEK3^5=T^h*zzFU9FtQ9s7`;JvcmI-7mD&6QuyML+449ioFoJt zQ#Ah6c_ruXef6Xv!Cgun*}vSN@cxCY`8~l6`Ci}_-pp*P{+->d5%265aQ-!0 z<7>CktkK6BJGgtJTg~&@LynydkNgSsn11_ZVxiG!yc=kZ8Fmx}P7P#tM4*~xTWf}e zCmb{ZD$GX9oK?S!It7WNib{Y8#gPFL^#&P@ysB9X{V*iRw$n}{;&Burm$UNrM)>q- zZVo(*Fa7`mz`G^Td&vWuS`XA&tiHH%IFh{Cs5e@!mWRzkFF&>Ov+dKJ-dwc_a(Rt> zUVh3US{|znG*^Iiaw(f$y6{3yAa}vn>E6$Cf{U9oev!3{9*e*v5LHl`PDJF zXZ0rd+Icm^kj@^EnCCBL&RKG1%KjWBgHKUh=C9)%|KBLQ9!SX8m)r9Oqn2&uB9P)w z_id1ri~U{lBG6Cp{`+DEx6o7qlz00p?p9>YRTDbF7qJHSI`fwi`-Pot)9RO#S|3wI zFuF~M!ZSQRnn}Fsi(8l;JcY8_thmKp{LHfOpp_bHGesrGR7fFx+4aMhtq5XfJTBvA zT&WM+UrMTa$cj-dPSqMskKm#Ryo0(@bQ@QZEi7ky9jA2m=n7U|33@m_@A&D0M!w_n zgCSp^aJi=4lKIB|n0n^SY2MUgEG>0KqjmVxO!mm|9r6yj@BJ6lOdwA_pVRFuFZ9)t zBj5UDC{egUxX$=oZ{ikaW7gv8Y!`8{WFr{=om6;*Cj$mjEEGvqnWYHUfK0D>{OHfu zKpX>#852Pr*Yd!-9)3EN^Qd7DvQ~wIlCFYw8`&Sv=T{0XGQEJ5K(77RA)CWs6o@@t zliYiZbVo!49+gy7p>^)b#qGFp#W$Z(kpg+4z0s8S5r9sT)?Bgz!U3)-M zVZ?kRu|w|!lQbr#`m_NDC{P~h0znd&5xZHp*t25DhnjKiu72%gD+aHZ#sgn|pI$>t zDRR$f{ot1EbF$H}U}~E_Tl_kFqvEu?efNB<`Yo6()UN9@mT2;jJ=zny3Ix40{l*L& zM8k>%5PW-ZjUq{2PhXAcQar>-J`ZW5Y9;#hLJAjw!`m?3-h*Q{pxv=26FjN`$#u(} zlE6=qiELpGnS||YwC44abcmCYvNXiWl4xN7Xs&5DgM}lCz(h;nHSji9R>7{5Bs+?z z@FAJID_ho>RK|~g=a2XP)>4))D!DG10j8+)#p<_aAPr|ogsS~})Zd;aY{kQc`x36{ zAQd0ZA9S-U^%VA>I#)l{5C3nayW@_^;}oFb-1h= zPiHFvzghfI1QY~4FCX4-?1N5%Qw{O7^yju_+NOwJ4O zd@M)4igZQ-GVdu=?lZTORWpMyq9Oj#4$?42DtfX5ug}XH%6i8)(eVf9;QVI?1_PQM zJFA@MY#;CSugKAQsaWrjU9SmT`sD7D2_UBCzNO18(-{N=5&_a#U2Zv$1DMWR^ou_h z&}dfa2bgFX@SJiwE(hx61(pWW>YL|IRypEYahIQT-)*>ntrGxl{idPfB)!7Hhr?Tx z9snB(ZtCeBlD_pQ%@InY>0I?l&yO_&dr^LFRH{=Q1|T<+EQkaKI@tE|c(ZHqD4iWU zJCzW0K%jm=JI4MkI&TbHpv9TIDiFNMrFju^fyl8}+OW6nXeLystXrF9q3Ka(YZL|+ z=IT1~lE)M{!4@s#=cJzay$`3VwmpidG(t@)X(K#R!dc2Af$8wxgV)W%qq>GGGv2|T zB#R>zscL=i9T@KS8R%u^pp*-gIPuN5n?-}naCr@h+IU)FWwl4EX_D+p>0`Z~-X9bfeod$uTL=92u!;%^f~%#0*n6C7fF)ZgJH>xaym^jXkJ(xU0$*&;(!||K1T3n^n z9H!RBRa068dDGc%8)2fJy5$rtB~px52P4+aDV4T*k~)qO>KBIWEAVed9n?qF8LgE+ zdL1J9?=vfmA?tj|Hrv`x1}JhMnBP`795&J;zFx?kXvZ<%mk{F2`WzJG zW(h;Rpl7?b`ZytZX*xpv5;{ntHHo};;zpoYATV-Jq@}$7%qVL`@KMl2w=-K^&5!fV z+No#od6pBmVwR%=tn$kP-^M3>Z8H@!B^@uBMk_u9Qg=Vz<{Ud(ZHs2(+TSg`1mYx_ zIS!Z9l_R1TU#J@``#u9*Mkc~^U91ql(SI2lNgeaq#@$;j#rJj<^t6jj?@V{WLhR51 zXxb!Q$xp^MEo02$EMG3hFT)kaSlV`8TxWdC4WTNLqBjVq zQ;c>H46>v=&mqAvT^DWslIVavN-?#nqYnPDKPszFiD7BkhB!ueAO_3dZv2zDdR;91 zNqgekb~=ZZ#7u809Y3Gsf!EiY$r~CE=c9`BL+-VDb7QknxlgU}U;iV1pu`e=99?l~ zd#h~d)r5zHs3STNYZqPhgQhdq2rU*7uV0K0Hgr8D(9Ds#D;Kmo)#;C>go}WkP~LW4 zvNrXYbf!-rCMqf#eOY!{)R>>|>gwuf?6^$0a_iobk=0mS#CZ6<1=_?AJ|q_8;OGDc z^Iu5cN#^kPz{AMRDfP_GNb^w`;=1JV2_!Ug%L$By#BhQpI zIw8Ya=tD|s{BP~&TWye(-uAdjq^iQ7D^Vlzh-ujfi>S^=YJ%tn)M;1-(+FwJ8nq}t zamSjoiu^uYTEUE#kM|(6uL~4BLXHo~7oAyo{r4OT3Q(j}m)w8KEsBaRW5hw)y$oEu zQi7E62Q-h5ByfskxcM>!)YY|8$LltWZ7XlH=)V!qHu`?ka~AkOCKsmVR@$W1=ehIt z{tHZE-|VBv8|11NCwHX;Sl-}si$>u&$SuOgYCEHu58fnaG5KoHbC)SR^Fi*VJunio`9TRA!Hig2vXtNI${U~R32L;~Cdwp@IGi!;{Ae9g2esN^C$MGWm`wP`IX8Crc zRvy_Tai-NgCmJu3)d$IVr}4bU>RTMvtrd2PdbH9>$Tu7&1 zljx-l{}@?&COnyjh;Dq(+Od^<{bH?ncw53PHA)=TD>B+!Z#}X>e;;`%;#`3Q3z{H5GS0-e zoqR59muravy_%MVycl^G&+_@)G&EMTTaWcVp;{6nsLQ<=qvZHy{l}U-p=I&o#GF=4 z#8qUWN2k#U>5mn2G|?-bNcej<#-6q?r)poiN3|EvNRL2Ji=lkfHlh*B5=5<}+P5!o z`L`$Q^jp_cGx_L5W`%#;e5jU@QnS*YVqZT#c}%zdaf7;zAL&F6(XB6r`+bRXQRB_~ zvv$bN3z{du1gfaWO{@TQv0`*mqvLrK1nMW+`y*wlRw{|ZM}OtK$PY#o93xJP*x9K{ zJ^Vf*3t||kBFVW5bF>#;Pa+74SYdDeN*!41@m>S$K6JJbPpDL7LELoHMm|^PjN#s_ zFKk(97@}Awl)&*iKEUNq6S@0rWVW55hwouFBQ|CF9aHv*`pH~i_NfO6Ab8XGJGLSYbd_yRRV@xbnyITMHr)}i~(g$3e z$k(ud0~~YnpBnck(Al%K{8d%gD6Q}!y5s7gPZ1QjA^zhObCBaEPB_n4%N`T7eI^Qf z)s0r=F}sK`;^RJBw6N!MK_V}Pb33l;XlrdS9FC*xkWgzTQtf>M%qs=@t)_j zq76l@EBdo;b)}+f1PQfkmUkx7?F(w6(Vlv!{SLaX#UfS|#~zXD!bYt4nK(;oU7S9r zt2whm$(J8~BG`p0fa|SPQeLy_YCdn1Of;84))Wsxih3Rd*}Us$5zm4fo&L22XO$6n zc``&}?y0qSrWqrw0nG^4#FaNd15fF43_QDi*!ZBLzr5j6zBitAvcmYa3BiuOEKT>A zPLulra^bLg&2};qwn1(<^uvv}x4i7br(vb_;5Fu^RS#VGa?-g#A*riN4$f?-t(Ad5 zxpwm6FG%WPO-osM)Soo6{tH}TA@~(9sbLBC3$1d$<-h`{0k1+{X6UB=JuF!KfaA`y zn@`4cr}?8umd)pQzj4ua8l0U*%gM?7{#Mxh1uy@0h1oW5a`A{G<>;fl67`b7tZ_$! zl#WSwh3?#FV;Jp(qxCnG#2D*XwB`=22@1E+Jeh~)#bc>I>h~m{Gqk*dsysFBHxlXQ zW<`*<-V?Pf^Aet5FjNm4p4-aHXaGOxBFkm~7pzYZ_!f@|#D>wyx{Hb~TKFZ)ACY`N z;fesw|JpQ#`A({FmuY4a2P{*xS+3r?a4dhV^VugJe^AZkYhOj+hzI2y1dQBR*Ol6L z!_e-VntI-{vzrEcf4GOOSw;Y}i6>GZD}5*$W{3(^5bZ5+&0jE6aQdO86*=!xG0a|e zuW%jSRY`9d)n-4oe*3)>f4?{?h5uMGS7pO|y8oT*#_>F)NdD)aA8)8r5$NHoBZue~ zB@SiiYNjDy7E3PYJ&b2*zTT<6w69AsHPkF>nMqYSYqP>>Nx2z+$rFBRW+c$@!PAl{ z%~&hRgYeK}#=UYYn#H8RwP1V1QMyJ7?WG!_j2}a?arZqHJ$&B+&^lihCE0XJQwHm- zW8AZNM6LcpkfWT;R<2`1-fL7XEzJ&UR+hD8?c9{}WA+vex?4g8v#W8-D1$U+?&}aP#2|)Jk$b(lay_GTx#>*^4!4 z;7?J5M0HwnNs0mXf9s)ojyV$15Qik_ILLbC-q~F)WP{e!Vj_6=CtPhWl_{$xsqu0G zLrX8a0l86mO8@+_;Ss!hyfpuMgtLA+yjr<$%^rf2{^HU8=k5#2|Jlb?SC+&B)>IuY;Cl3CO|BjdgN()xvZZ>MWkS&s#+`cpDCziTUV{yOEt`6RI~zHldc%xcK36dc4_qAo zItZ@RVY`{c_MO5DaydC4hGlN{e~mOOaPiGNF}No}%0_EOa)V}EPtAiU&Y#K`OQl{S0;iKUSwlyYWm01J`FejqjQkj{W!-=_B1|ph%uP1f_46#3)dyd@oQG zR0ybci3>l4x2&DH73eAt7+?n?k#pDJa{L{l4cq@dE0N`(?`C+P;rbMeKSKc@7u>kq z8wye#dSK)pA9O+1?dwp;3~|2&KzN|57ZzMJ#|7~$X9GcF5+83Hp_O zAFM9~!~|^A*v(Z1Y#OgmsrS}v)5l-Dy0oI4C%eO}U4%C_=OL~wpGQQXu5o;%hvyQ< zD3F2d=646mhc?dwu2!(ogSbCFI#(@DkMM3w@VEW@dC)L{3QI%w#<|5WDAwccv{nR& zhiDHh0}tFuBS)zPkV`L}TSooX^B^kXLAFa>nk_=$D{B;2ei6#ldfTR1bVzTxRR3+G z;rBZa+l$r!^;Rt}s`jfrENgzsNO~~z)V*i0lI+~QJJqWN#$YG7up6`jA?<>$V9!ty zyaH)nM)tY=X`Y3Y>XIHhR&$J8M}z;vMMgstrGFqsV~E+-W9=1I6h{*;T@%g3zq62w zm%||AwBkqcV#G##5ZEdkLx@|q!zGmfOFelrF5oIfFn5Rl?b|eg5df(6gNg~1n;d|R z?R~O(trH-m->m~5zv9Wx)T-0wWS!_6Jx-?ES_zL~LP1`e>;2(U4I@mn{S6#FEm%1S zF<;amsjMD5=|stXe|GEp&tw4+!0&Y4Dg5Wz6Tr@9eo;inQDin?DrueebjZz-5o0v^ zO=dbtIFN~9p;GxM5l;+;pd;i&d>j{mAiAkkVd+lR*tvcL))Dv$)}q4tS*^O?n_YTy+3Fmv^Rb`8(jK z@WIGIZN-mD9S|#o+EbQZJewO$AutxbyN2_Xjcxd8dvFH6RevTu74G-Fw=3HG;Uk2h zg4%*N6u*IiFjQv#)2h%#eR99O0TroI5X1Rj+7{Q`OOxIaXp644MiI<|q=m3elu&P& z=fo^`@pfdgu{JqeJ7cm(E@rHpM_beIBFezicU#h$YT}Q^lQ)QaB9Yn(=@$E zeFd5~MwBY#c{1F0q<`4?!&!4}sYoZl@)_TqKc^5XtylO{<#1 zYY4}tjX+xbIe%A+HV5(+7-y^@In#2P>E#DJn~#y+PVwN(0t(#NqgIW$n2_Tb!@kQ* zO#kEJS7k&4qe3Zev3mYkQXyS1l~cpR3r}wEb*9YiyBd(HCVQrgC4oTZvs5alON;LKl2yd5T4^0Fg=Iz7a^dKh_Uo;J6&)lrT? z{Nf=ZiCYtsw)^$k4x~!oxu5JKXZoLFO$ErF<<9zyEK6C6=0Wef!UHB8)JiC&DKfViTI zEGM$~;V<8j{2zRW5d&zgx!GsD+{l*9L|HyMQ9`TT$iLR2_|+~{x@{RBea;}9Mr`|y z5}K$ZP;C^6m?`R|-b~3VH&l?3BTds07YX=W{aB2DzcAH2c+B(-KdpNG7N<`;kc4e? z6Do` zE*OW$n0{%yTzmlSXC#80bjFbs4p}Bsu!QS`h(pE8M8@Poq@`H|y;5qBmSPLBwAx6X zPyIMtv03C5yhI70S`v<|^)dj)^o0Ce7W1+aRM>U z*wcL&Fbc3k{(nK$N>yxcHGB(ib@ZBc^pvpG`VObnB<5o&xMMdVU?*R-3aS%4Tuv}s zcMhibp4i1* zTEb=Zc1^3?-EObc`d?VcBAq88!k0g9)mMCMAV6Nv%ZByfRr0g^OEqP|>ED%vTZEzn zhi6wXO{KEf%)_Ok1Tvru4j$9dH}uhf{;1hJ`K?!fa~@3wG|?SmH;X|To5Q`w4zg!0-h@Q8I2=44 z=8ucRPPFdBv%p`WZ3NVG+v1AYO81QHYhun#7GsYj!2DRx8W{^CcROD97YpMPY!G5s9$rpM2U zCgJ1!;+DHLyKof8mw5##yB>&BIHC1^Q<}o`FW2I&tc7?mdoD4@nu@S(%)S(i=FvSP zSe6%EQxV$HCeOF=JHFkEps?vog6B6z!%kN^Fx3`oOCR>wxsDt*&~w&uXqD%J10w9t z5jghb4&|KK;^%*Pv5$XyvG{lJm=7->R!Tp$EpdJ7SdD1RoR9yMsk8Q4I0Gdsz`yJ| zx$L?@P`7y01lcJji? z&9|~|J|O$~Ga-TsKdpBCYx=EBQ9t89nFM~LmxKm-L2N`TI&4U4Lj1TZuBO=jzGsFm zIBR;WGHHtjQx(vlS?6@fv$u^AgyqdPr0&)F+y@wP98&2sj`h|oBp4#N3b_U3?irQD ze}#DTe_Ry}9BOS?o!g>1tNF0{n8Deo&E1TI&1rn+=^3lxfY*jYQ--VX{lc+|V%eu# zkG)-(d8?vOv*+PuVg78{y)f+jrW%@`uG@NXJ2kmK>zU!|`v2!)HxJi*0o2cnV!Zl; zVhz$?c@BNgW<1~@!S3re(Q#fHAO=E4?icMsKCktAl3$Y>Pg*4-e5kp9*1<;Cv=#Gz zdp7@OowNDXEo%;C@*?dn<~AO;L%Ps&4&Rv<^ykL|P@KO+5P&}-5x~pa0d6POiF6P+Qm&*}QK&+|jZ(@LYRtY9%Hp^Uj1r7KN`P@9K$r68N zo+%I_uG~$w0{;{kUm5*lrWbG~%MA`SAWnlr^)aI}VN4$?@|p+a&x^|aYwJGO^ku!( zWKUZUd9qE=lRYG!43_m|q_HQ%>;RS%IR~uu|K&0CQTrgdj>{X11%&Ogd)3vL84OVO$6z z#ZoI0e~^wRIjjo=alM$}=*6qr-L~#EG>-M#gPwNI;9on3DuyyI0uP3xA9z${2RJE0 zJgCZq5nYs~S{2KCtbZ5Jd&$lhV6aBEs8R|5-Fhx|EmYSIYt|tBTcA^gD^LxVpbrf* zjC-OnthPYZ1|$bfhG(KGvrj1rIoD2jrS-pLF}Z6$B=VYH6_|ffISiF||2Q3f__2>q zlE~ZFRi$<(#7Kyb!&+@LR+~~F294JEv10)McXLEbAL1O`du;*HUst7{|;b(Yb~C1pHW43$bq=|w}_nAgeklq`PXE| zDwsjLqrg89(1!eLKGCCiHZ;8c@j(1-0?608nl56db1(}ifFuuCV`2CM0*X0$o$5#E zU(y(jA}CZ{HH0S((wek$xj{32_vBMIQ2vH(rZga_Ycd5Orm6xtnXZT@4IuFp4*1Z> zI?F&E#DMMp6zBn*_YcJ>qy)Vv(Sp3T4y6D|t=c5o8Um8yD*)YwXbqr=_87BzEGIM} z5qGkhK7aZWgRI|ZqPYsGTHP*~c;VQLPX^Xs5BNKLpW}E}eUhtuvct2dh5QdYD4imb z=Ya3NR0aA;TLTb39^>2Zfv=5ifZM%d-U+^GuWEO-=`v9qskmo96gCJS_N0nBA_IR> z;g3_qvBEHZ5LEYs9T98h=Y1D`1s|<*Y|*%a`ara}6KWAUp9V&>k zErgWU&0c7I?$iSpiPS=N+w1x|k}xuD`qKzEF&a15Bsh;h;MSEof@3Re#?vh28Z4Jz zOSP0vaQqtWW2@G&Fy_H_dYIS&gu`-dz9+`tj%D71^w49AH?WuRY(u+?eJXJSDn145 z{14{8nRIR_$iHg|@Du~siu%fE(Ice_1bNhe)>fCB3i`bOe6UXEvaj%~hEz_CPp$y~ z#9H$j^nCEqyC4yh-yQh-c^yItT!8{CrU*`--s7t+xd;+tfH_Hy8HCWt+F5=RLs&@A zw-pOP`Hncz%NlKCKjBA`qT#gC3DHD|aQX{LuUYmz4*U6{c3Fg}Z~_P2byCm>#>Cp@ z^D|H(pP+b-7AX{q(^^}DUuXH~R|}MhDc&eGkB7955}+_X%%fYiR?#f6EV>-i(6wE} zrG0l^!xW3e<6@nR@_B*YDD&g-BEmw;o;BSB)k)WteaX>O;Cd-LC#0drc;>9}bt(9< z_D3~s^s8*k2&bt6T-yi(pX@H4eY%e2gxMU|Wrw#o&VLk$B@SLQTH?h;b@V3`D+bY7 zAHm@(6eCFdLOQpg(K|Bzu(ndX&?zt|^UWr^mTY^fN2b!0bjcR2W_iAa^=b(AkS#ZQ zafL-nH+`(}V2PhWxoz~}3QCmrc8vccZaNMxm=|Bf*%Cw0)xfyUL|UF;T&K;{15uk# z0G+gzk4V_ffOD8fZlA{f5S)t4NOl0J)t$o2%lPPXV|tVr%DGicdW7PJaIN~fxdkxm z>;Do+XuOfg^S%QP$QF=G`QqQKG<;)Pqt)DG-9`TUMgU2n@E>gjWVo7u4C}{pbo`8@ z5>XW&USSARNyT$y=tVgX>q{^Sn`<@$->7n(sO|O*2k_=t=7d_DDqB`ltZe@0m5T4A z-MFr=rGF6U02owo$;;@&JDKav#v(PP4Ce?3f)&lS$7W7MFcQjpp;A{yG3tjmnN-p` zMV$|;dRJDRhF2TB)7Ev(sgSBNXHpK+Hmtadjp_#)=nA~NPBn2h+^1b{1=PFfgJRG9>Bx%#^(7;-5wwV%oP{$ zq;8I3MJkJAF;A}kGOg}Y)|L9|9tfWXHO9bPdqX;@AE|J@k7pQT(DXjA0~?7If+n^F z+ni*5|c-yqIb3;GGjZV!bOpHEyRa*?MZ#s~- zz4V%u-+Z}MF=EHbB4hbj(II9d2a%lk_0rbiQCQq+Fsu?$GIcO<<(1s$E7{Qbq>qIlVsV8+IAXuE8cM7qoA% zc7LCim0gpx|6JC}`pt;LP}r_n2Kj0rI)6t){)jjJ5fMtIbed$O`%u)#<)mF4s*$xa zp6tnZ%&r$2hA+_rIn*wdVH8_lNwv)}Td(}EpR@+#-ytXI$`Qrkv09iuwLO03NvVffJaN}H>dP@B7zBb;cZp9SGeYf+WOHK&W}Rat2Nfb2+3)#w4UZ#r(eRn}lq`JK6T0!oI2 zHDr_FM`k0&^BF-Ac(@b}`}IW@auR2j!4`uZ<5P-?E5h&%)k;QG^h{X=f#RBP7y4M` z%>L^p0m}FP(W0!_>jS$3g%MyId(TmUX6DohjS$fWkiUXm_!uvT;+%p5E){9hPy7S0 zLXMrOQi00@nNFMpNdOWq_y%nbzb}Wqyu?`jtLM$JP9yCb39YLv<^ z`cuToRe>47sb##FbH^_D?r^dhNG|G&67=}#ycTbc{Bz1bo!ExoLEq&!_jeb$aaq00 zUcVsOd=qu=6GMF!;t_(y5fe_0MT08{p?z*?h;AWYgns4NN#MrF(LBPR2p(+xBF$Tb zwC}XF%baPn@s3kX0j>{wPi=WNb}#Cj=35$svI;rEZT0@+Vj{@K?H?*RcKM#^J8U-H+YjSn7ug7} zHyuuj!(OqQ*LkP4^Qj_-O3by4&I|{BjQc>gmfB=uM!W1(9iyLE1%TLpl6bUW!O=TF zD*;IS|H5@opbvm#0MZ-GXJpHQ^~2*qxv*Net$c_%*4tl!vNFBF4`c{-SyEq|f%os( z52JiIK5)vGN0!JKVB38aD7eF2Q&DbnBI^Ct>1k{u%qgI}ETgagi-{}%)%d9QPYc4tNpicCNK`LEvRfy8M-E~9z+1VXpaH%nG zYB1L~LheSd&<$%PgSu+ZxZC9t%7ANP##@3y3S!4X?TuLU`;{jmpmRmviu%s5~8L@v~;ekCP|W7 z9758HF_|eY<-<23`2toyw*8;BNi=vS+xIp;b3;Yp6ukK*k_$lUO91O3KoQ>mFfrP2 z=0Rpx0&tZl%trx-+8rV?ipk2M-iBWs7;ED<&OpBxE&2_M5YAuAevOZx9(l}B^Ym;) zcE96cRRbHYT+Tk(;P)WHEG*XqO;*q4Iz1jh6nHI5tWl{aYS&)(63^$f>>KzEQ1?H4 ze+#aSwnYmep_Y7$T>YYaF>%f7B9xX%&%+Vd-d7&S&P zJ-;v!on33#s^@8jvcgmQQZ+`s{$%s!TB-Ow@5{sVVpYlbVrBs3k^Bqf5u+2g!lK`5 zd=H@+D%e&_x6u{SVM0+CJk}?8{f{jpN!GQ?YFtXKY<`u<6Hz z?dm?Nr}J;i6cmKGv0zcNW_jC$5`ORnyM*V7(lwJfP>9LgsR!UQX1y(_BH*f;^>Z?ql)^xduPK&*^732{71`8Y|C~WiM-j}p$GSwIF-Kjxbu~3r)u5(M7$FE z=vQn8?7jF(Hdi{=N3DC`Y)Ia`kz7DqWsd&pD+ZAXHrcjb#@=ygXnKZz;`zUvVWNG{ zS9>EXA=Kx!#MJrIXj&)GcmzgQ(#_TPE~>(D>K4~8Bv;??Hcz%!!_;L6gED(+K5@w; zMOB9D6F-qMKr0|dcP>>Q_w>ee^AISQ;eo6n0{|@m1&|+wO&VQZZ{|1**VD4g0grd7 zapS#v1IlLpiLul&xb%Jy*W0x^oCT!+qZ^eZE` zUl(R&n%?R>o0V8Ekgna`Wg>n&-y`|3W}?jHosHoj4?iqPFsW7jVsVU9rHyC5HzpD1 z=ru0eFKvg&HeCDfqB9GTO5;eGwg_@?!FxH`dH{thf3!rS<&Aekm|Rt?RLrbQWwqwg z>=k%zE@n{Dm7{htG66R=gHgHs+?){${dhcykJ9~OWHoZ6k9N&Uf>`6YdW8Hvyb_rJ zJnH^S3Xtiwt<{ok%Ts2o%9{KQZ^wjlXC+iXiPE!wrP(J4?H#L^o5&iP&nfI(KBJ#&-mqXe|9R9aH|z^l z)KhK0WHp%t?`T|c@O6x}2W04|TLvA_9E;ud)(%u1E8i?_J_aeTqh?mq-zwGZ&iYF_9%@qx3&6kkg_ zs_Cp@v(f69zQQRNV=w(hJWVKP>E$w-f9v!)mRdu{U4zfccDE3!(kYm0NHdRfRCwG` z_`(p#A8x3pTFmRUB}B5%HMm2?8s@rKb^mo>#xJSi~5S2 z(V!`^mgO56H*_BR^iRBREop+_yIX($%2UkfE<_=s>8 zdlj8kL%w)7m57Zd>e}FpNJ97LhYVcb0{n2Oq~^U%YR@s!_Y}^g+106BTIapPs@RQ&*+Nll?=vid@%(WET zrq;OhR5Lcni$jy?X6B_`bbb?9cUDF$jq|YxE{3efU`K~Cg4THNZBvsO=b##|Wkt1F zOBpRZ^nDga#$L7YwOv29o9B=-N(_q}5LpOJG}zKOuWt3*ue^{(T}z!k+B8t^}R3_<69Hihf^gZRX{c4)sH(f%s4(spK>* z!}BdF!*u>%sXqA>T?aZxOgI6kUbSK)Zpry~;> z0#Ni2B6LwXSL{goZU@=aYxR0vuGszOKh^61uJK{|hJ4||Zy{j`!2rF5Dl2fN_WG+w zF_1lqv(c%Vsa5;xkz(=FTEIj|Lh1MJ{VD@yL_@MU^JK?R8LVF1b@r2u)9f3B0|6$_f*-rtr&6;)67(aOm3o+NU#BtcLKq7M=l zmO*KJQRt(gOiQAb0U{*ShubN|r+o!i;EzR%*O2L#QGrMz*NA%2o_7o_9{RJ!wbOA!LzgR`-M!TTInKvjlNJ4@R(&JvSZ3UR(xRz`6%~TI=%VHTy*LvbB0UPDvne_jPs~q zM!JdTk9bkg844B#&QtPqphrBH7Dxc=p^3VMzrDb-xzwJ1YYCT-CnZ#2RsAUd$c0U5sOD*0BcMD*;li6 zCqq~iReo3|IE4U4yfxL@FFcDq5x&5&lDKN^KsxF0=v+K#+8yOuDA@d z|4cxe`>)aw+O!Z%??@4}81nuhb{PQGjH>6;SKD>utVV&L`O+>&KTc$b~}XncQYnypqFbe^WH7w?h&p zHf2IPTl|uoAH!Rp$a8F_me%Ha!0B^|wSeA9j}CdBt{i2o$r4E((~9W+_D~#|-;Th? zI29fuUlBqy5Xc+!R#Hrrw)7#j=6$ZKODaVdD^NE6BuEWNg0d|u!&!bud!5##*I@dN zob)~h`pW$1B%2g++a?zvc}5QTq%tln5K!~x+i}NX2Yi^_>QNX{Dg~4yD>ZvtKhKne2o=p5&!>3X%JAs(NfnUgyUL^<_?Dth|9nnO0)woGsl zM48h>O`@%K|Ib0vj#d<(?K8#DlXw#>0sx9_y*gcqxI!fdcPh2GsY@^U(L)6KI1F1pKLbzF@p4r{hhQd}&Owba>h> z+RpkO)Ztl+m`O$d9_i0g5ep|>xfQPrGaxOFH%W@^G^?LxeaSsZO%oO`D7^}OsYH!g zgEMJB$eX7j93S=>b4K6T2At~QniKpc|B-2bo9`2ln<4uY1DDy&p(8IjN%fF2r?d{KR5@b-^^jhEq3jY%vIN(ro+`))9?LpQ<<+YBT+xT1P zb2>jpK2%ULC|T5f(Utw0n8WJb(XTZMqw5t6#nMm@r|qz(XVJT^8zz1rB00ON@8pGi zT?_~a2x;!r8dshQkoxX;6(a}Nmy|AvlOxh(W4s?+#gjIhys%kh{oS!HAT}0Vlp$6| z>VfIOjjkXdMugWYw#EU#Wfsq><)aLh;guMjj|t(5$x4ul$xPsnMZ7|pS2cH;;7pWy zPk80CuGv|dx?c{XNm?gBz;J!@3GpENxdL>Q+G@XTE9~;Co&jt)vZlF+EfgvCq~mVK z1GEv}Bj)Lv00OkB%D9C{%--YS?&&qc%J77TtnAqmj?#jbU&OdEq^%Cr!^YEf zF6lHt+UVwATB96)jtrkAc z=pR-gq$hG&wE3@<%*`WeaBU4`Ky2ZVe{Q=RNWAx^%x9#kSq+M}$HzZe$$;*BIc@#8`cR8JmHn!7M&N`kK|B8}u{Mv8!7>frp-&~i&QCJO#Ue>TyD~amZ;`w zVrfgg@0e0W1oRDwT23#_(SMdlW6NtO`GWb+jpn7)KDM66z(-GeA$%-;K+Cw_SZNrU z57ame#+0urU2Z}oXN1%kTkA0iI=S%_xTL;R#AV~>jyAZMD6sh*bzv1c77J^>z;Hmu zlx{LKMnkm}3R^G<;R9eq(Ee-hkG(-T<}69s+2$t20xFoQ8rgDp;!0JXGH^R@lu;Of z`cHiRSrwSX7mQ99?r~h3sTnH`s5SSn&q7=W{8;9}iHj;hlA6rQ;E>WH266&MF5gYc z_{VAWcpoEOzE&Yv1r4aVqFhQFO9!Cg-2bBCKRB@9$8727eZE}DVM=@{{KUDT##5av zw#|5)ZE1PH;eGH)mB$BN?LHwpK-&6>bmZgxt6&9*X-%|htu_-EG7>@@=oO;mq8ND* zr?;!hXb#`PS|rU@(z6*n8&Y^oYlL3Of7CPD<#rf@`AqKKLHdA07Q6IGcp@bGmZ08~ z>%EB04m;u&^YXiK!HSt$j#+o=+1mEKlE#l_9(L(E+k*Q)7lj7JR4p_8f9$F&8!B}X ziuzFfY+w(6%BTWr+Uw3Y%xQA)2opoV$BdqV*BrpxQPh(3Tonh zn^mn=Vt8nRiDYT}5M7ELcjBS2j9F%rH`gV>nU76^XdkE495N4~3fL#pW}D^E)>1Ny zPs`{nnnD;YI+M`wj$oE_N$j#r6?VAbk**j^_dC35Dbi4+I@t2zw(-I^t(uOK>Xnfe znOU#8c~Jjoi;amET~gkcx)!OVFZEkop(4p3{}^svc+44;+nWG^M)Bp1=`##smFs$! zZYVi!laiF~3wgGja@HF&YM_6i^UnFwl`|NPkr#Px3km49T$ysw;_|Zj7I7sOPVhcXv2zxUgv*X3%aW{OZiSJCV&p2W_zOW_;ztg z(>WO$Z^F9NypUe+nNFU(Jgi~UZs(5&-eHe+2fu4FaAk}3?q0B1J#r!wCs5mL`qr{$ z-?A;N^Z90r6TAp99~{2S-|t0*#01^T7aRyXk?FJM+;s+s;=eV;y}RNU zBB?P5moP-F41w=4DY72IQPkAtmEF^W)$t$DGDHPyWby4*WNO38 z7UfI6T{>)1MFQ`bTa>wo$_tsU6R_GQMU%*xBXip zUpvwLwrO$`6g4V$8r~Yb&n$PpGsrheTzC_}J-xCSLXvWe=7h6l*cBTCVOpYV`}A3W zribzx7|#Q*=K8x_qcyyu=*`y!{tvw?aBnPRr!mXSOeQ&;1cLdKJx(RYqdro&J=FmZ zax2D$?RZqQV6o;5hdeFyac5@aK8Jy#E`|8Xq9e@oJ69}JvP&a3m+~Wy8)wc~)rUh) zwJmgo0z<3IVH=x`CjgwAhL z8-jJGPg4~L72FY;;<}sw4 z3zDk{ecOp`u?^(UFs#C^l5@?0l_XKc58P*Lr>P}pogZy}D3J3PRd{`xlEqwamQ-87 zvxB2U2@PKN{ctPU@Gw#6gyLJ<0Gu(1M8F3Ie16P^rt}ybtgE zGMyXBDP#ex{I{1^f5eF0iFE&rsyS`5FuOlRdL{9aKhX!~lo1y?trl5;kkS^|#{GSy z$I+m{SV9>}5FlDA>@cLkvXtx4-}{63_z1rWdW)y+>RW^?-D~Wx(IGHqc*&DI+8s zPaN3SZl=r}E3u)#=#?38xX3MZxJ0;`bHzKNX*iYd`M;N5ARVx1Lfm2b&liQBzsLtB+yT{B|8O;j8nxuMq!~5AF;*ctO)?=YI*ReSq z?-ckeI#<52ADB!erVx500yh|1PJLY)dJ+Qj!{I7>iao;AR@_6k!gjG^C5niv;by6g zVk9Qr&3k#^gsIBpEdJb;xYg>JO8haOqx^SRhLtgXW_TNySyYlGWl6CDeNIFQNW?a$ z(1ea*bK1K3{d6iE=PzLFU&+HZFCq-nJyHoHB1nN}N1es~tLHwdV0Ue3)gH}F(Ew1( z1P+6vRuPYm8LB7;XA-m@&BI7izbznR*Ehr9^jqBoJyDY^@JVY zM9%Kz!>nCdz&)%6Q?Oj26AQWb)t%}~3^EA{q6^>bYk$5!5-lB&$G~6u3tGoei!f+7 zE74h8+17t|?;;v;I2Q;fg0QFf)F&=Pc!nW?NTeZ~(j2sL65>_jhIrC=bUs`EC^oQq zY2Xc{VsntB!JYc`+Qa*EaEyO((`&Gu_f;FttcFw}=+m?Uxd{HH`=1Pz@DNkxd@~lh zQG*A(4Vuq(B5>+2)o^l{vw?%cvgM6m^OAQV8)TO+%oxh1E>vBJzZ&|rX1E?7AvIJt zo&V*2Rg_cm0otckz!|CKAHFj1Gc!Ee#cFA+B-ba0*l>ym%;mzJZ0FF>f7FP|xOO|J~DKcNZ{PP|nT`0v?5 zg=1_a{n-eW!4KBR_|1aa7pnT6?qAZ8{%!vheMLWO#{59s*Ban>a(!=>Sx4T>5=|;V@cfR!w(dsv& zaKt`wQSCY7@(`(KZxJoUbpEQTAl1@S0O3Y}j*;)5$eOxOvl{nqr=DJ)lV`W4BEVT< z9TgN;?(+}Mj0u%&{tHRSa*3nf=S*4HA`uwoKCW5aaum&~<1W8OJiYx1MO=*p2=T1R zuHFv8owdTKUP8XFyGpzTfORfgZJk*C7$=2dD>JYGuPv}6>N#rt2B!Qk^|@estDa)G zBMgq(9LBuo@~z=`hc-o96(y|46xf1iS~PQKwXMP!=uOTFHR2b&f=vCrsMNACn<%;~ zb6%ZbyRq&B`P-w%a5SB-#lU-i7NJN)&dyf5b1*b2Y}Q2kS^>H#Pw)pC9oJPy?LR+< z&0D`tM?rK|B49C2SR5}NfWR*Q4xuE4xj-zJAzSIhptIVg3gDm4o>fttB{BZgwYKA9 z&A*#V?Vccf9ht2ML|J?Fp}ow)mo{bx5+CgW-F?UB!mS=t^ZPWJ_GG$Q3@L8QI<<}GcGTc{el zXLLakhJ?siz;4SM>H`qK^1|$WLs$E9ScV5%^t*4zIlK4Y@|9nZsB8RXe=V=$SDQeC z4l*MC<;m$cV^-j6l!NZaPm$%|CWF8xB>ty+8U?nL)l!W2yd74gG5nLR7=k0v$WzK1 zmwym`81s{3G*z<6>3;PISG8j%iLtJ#y;TC!mdzAND{m8El?y^fNbf;<)(eq)&=EgJ zL8CKSR?bRdg8Vz=D;opcV<}2pL&H&iL$;?_n~PV81qPotEJhRgY07P{O2<8WAOt&My)(c93d*ublmCf?Z3 z@|Qr724ljK3nRT;lbHv(l?bxe$MslEk=z`{N2h!i6BY93BwKWY%cfJCMW&U>Gmv1f zhnsbtm9^@ZUg`7clEW1ciJXl7o^_d!<*yMg;}%y=xoPv;>F@7Ic6gVp*nKhH3LXaY zXag%BqNR%iIwka8$)3-JcY&K;o?X-KXClxW$$ULovVpyFnkY}MMyJ0QrN!GUu7knA z4_lGrseh8E9^uj=aZ$75;x+l^^jrt`uy?YdJm7Td6DfHUGJ1tXqP1;TR#x|=vK84oCd^}s!njh4&DFY{T&fTjXJpj34VzQjm&T_-FgEjuWqKLfl5p+t^7I~{cHrIlXz%Np^3inYd)v~*_w&r4S3r}K&*9xa`UEtk>cQ?01HF?K!Wif_?8=ckw#Pm!p{yB1S) zI_x?0sP$2>U*77~w{yrfh&b;(qHu^(czlzEu*G88*L7*2-c3$b<=($PG?jE5jFyY; zW4g4qC4Jr_VLK3JmtyGl!`5tE+#3z+Dm;j+j;5jzRdT7BFY(S-z65fyJV);>K^MP; z!)^%#@v-ar_3Zm=%mv!W`PEW=ZPib&iJmk@N1+7qCVgD~psgBXS z{UWyPdI7b34lMSnDRD|gGA#0^h3&J6P_qN1(AksodW4;f!tgEtXLVN67aP9B5yp=S z2@IZdltZ*#P&U&;RHkD?G`xSec*g}`P?l``NBjHjhv1S_K=+uFEjo7zV}!LA(yVPm zU@*_0>X)qGDoICzYL^_zg>yOEoo1H7W~Q-#KZXkXI2jZ#vtPOsvo6cGq<$DxQWXC9rXM4GPvazr9Cp}Xt203;Jt^Mv4+sWPFkA~ts5rLWT6k7vyjVjMb;@AZK1(Er0= z(j|hCL-a$9+I9^2t)BHbUCxOQpm#!(zphS!MU0e$ey$0PbEmdz7EM*BV)%q!oE2|g zJ2943Sl9hg!fnxagav$Wrbelh1zl_9{-4Lna5Ry`^hMSqo_6-Ee1*rNFzk7eX<|;P#Caquq#Ts5Mx)2axR?HAcZSmhS?O+5 zs>HKn3*+;LnJ>m44mV9tgKymu(`rR`jMTegJLGt7aMzp zYp0AepJJW!Xw^gZm8!Dm=vF!mC8t8z7bM)3H8=ir9|M`W`l`nBtnwuq(s5GM%UyN8 zQ%8R4>XhvZ{f%d@?X=63$F%&PC;T31`f_*FtG8Qi*py*+*sX@5K(1idf4_Nnc2)fA z$%e3wMB0{LNlriz#-3h}2StKTB1R+D>}w~D((~|lqyKayCIDp;cXx(u$wi8~rDnt; z>%Z{@&%>OsAQZ4Dd5fDoU==$+Vx(cjL*bcb{^Vg`+ko3wP0d=2DFiZZsT` zGz5-u?b$s+%Py9IJ4J~8e?OSxBcLw3!r&h2O@Jv)>^g%fP!Q5l3$t~M{m0tz&C@a{ zJ$()GITZ;HwCI}qI*KAD%uDg4e;U8Ztwfw zt{Am0X-(P3*!gKC8bh(7%{ciOL<5eoj&s3-u=};&#RC7uFTbPL|Fl-L7xJ&$Ai2Er zG`F|E4fv((_DCcD*l#aN?xHf*`|td&#e5%xLJScRGYwp7ZM!m|ie&=$73*CJp7c<~ zSvURPokRn9rJ6!(L7^|9vaIVt%rPKwV3v#r7-KuA_%qQw-8{LD7WhS4rs^fSk!`3D z7Wyz<&$}Mf#29y=c^~W#^ZE`NHFZh(yvi0sMhTRxAD_1LbdSI@>&G3$J^^B!z;F2M zBM8ermMK*7v>U5{kzvd%0HRxj1C zp+CK+J#*{ysp6>YX(g{(#e(LgEB8LZKWFBAp)n{9YssIjI*3*p_g7Y2vF$3heG(|y`Et8 zg0-r(kQI-hIOJNF5&D10gnvL7k2g6cd9`*3E)qJV!N%)bMB#s5f@#&c=bmIE@lc|T zGfR9{3{G5U3g<zT61TEBvN< z*f97E`{$l9g8pn=gQQB^y?QJ6Vo21_2D~aeY=I?MiFoJ|o7?lmWWCvOMtvybY6X67 zO^7KHL_N>i4!#h9mg6Ggb?I3xww*m2176}ZjqMcEsd)}P?=OX=rvp*rZ|4I?dgkWk zit@E?{mhJ?hTrDd8x;)c;Sk#JZ0x52o?h2MjQ~h$afSoabiW$4Fu23mpd-L*i8wsJfj(5N9GuFwQkp6 zQ-pheef$UGedjWdGo$%J_Sibck8_xDd^CSLQcU?D{`j|4Q0<-VoV$f)5%t^oRYNwzb^~WJHyIbwG-=i zZ8%hlTo|+sckYO8$BM|>2}X2xC_*>`h1g>jb)b=C(r#a-dxovEAEUOK%_ZI+<_Y&^ zg(QWaXWRDmNahaU)r^VZo)M?K@{i@Q-BfVDfR~+oABTR|u?S`lQpc9nU5m6}%9LJ8 z(Gmx5aHCxSE8sT#>`i=6{H18VpW`N;WF%Z9`;?-Ueu&*Rk9j8_K&MT*y5oI}_hD#g zQB8r&D#nam>USp9qalZY8u>mY_D}f7c&=oSktBss63pbxrQ9}owY@4%p}GV0UH9pQ#(9XOjZK z!cw+36FpbeQR2gNIqKMd1MDYhH}iYW1g!TX?sFE_pKDTaZ8ol42uFTx@02VIXQhra z?2u3Kj0h+TsjR^U%YQS5R7CZ$sh@kmm=qtK^+IsOeuQ9}n7s^oYEU$UpvBu8Io`WxDZGhFfU9fb~ zv?FRU^7i1o?K4V~(G`?T)Qfg zj`h6`YU$^7l2VCbD|8$%+8$}(B*^v{!@pb;+pJ-)KKIrCJ-8|D57pg);MheTGiYgt zJE%7^Vjmu1`}t)3L6;;HdNUCg{)h<6Ee&-};`3hMSsjF3TD!QR69GdGKrKM3Rr7cT z{9Zr>7nNl!ZH?$JDZ;2=PkiFgI#t?$a$wYKLjo*^FME$n2vl{%NQhe_+=w^%N)J0K zyi=Oe^4}Z0Tv>y;)k=YR6{$wkJYUs|x>=mdw{b&*xreo~E63`eA0OcFh_Jp{ZT06w zUBk?ead7CiwPM2PFl+i{tR5wa+HQ7kjkR_A@Fuj!z%v1w*msq+L2&qYwBgjHWCM2f z#;(m4DS(ZfMxtQ?(7}lGB3Muvc&iIz&_E!fY>iMB+;YoeWBb-KW6|HWJ8&z!tjX2u ztlH_U5doX&?D2Edn;#LH5|-CCFnSSg*4}RL@tGP$Z)bYuuM$F*aVu&T=t-p*LD$Dr z&X`IEXxMXQuzKN5&21!^aPwL7*`lNmYGIu^3X}#j8a1}*XbT(3%m#vuP~$U`{UzK>58*ty!D zy}ao!mY+-BEA*hBLg4u9^*?yO zRVl|Z?5Npr0x|x*Z(uJ<JQ`F&F$bRzPIDTXU8CscTti=80Me5IC z_>KjwT`Y9&drZQX19lXoe3;qimrx@7jC!AkGu$ZOaN?){EaroCX9zzum}gDl zHrvtIo~*?ewxCFV{{%jnP1fG1q5TBUIk0+Ga3n~7b-h94jWEP?!*q}*(D|TP4hzot@yh_`Xc0ti{fPJ<9CiM~E zz#Ivlo>*&y@LaFc)Xce<< zChpj|Z|lJ#Fv3yZ`XX;My2Fv!*m}mGKqNds4?{sLpO6~P45`;3rEE5%4~_fOLYW%H zeN7~rR^6?U597|PadYZG<)v=4XnG;eg6;J>+A*inMsmbFferU)a#GtaC|tDR`NCr- zR_UG5l!S_i^Eol~TS)RVZC>kWSUnO*(@!6Vb%dE9WHkX?52HpkeR2K8+f~z89$O|& zIHc3rR*=saygrA6s6qi@F=}J!yk>YQWCYSIYvdIIpVUAutxwKYZ5uHn3+0ctu(5QrqoP#R} zf~hit0y5{0PP6IazmCU?VlWv#FG7cBW%u9wOE4(mg}OR&dw!ZGtC3Cf1|vOnImh~m zD-p^4@pLFd{ON{}7~vAWJb=9?xoUb$}W%Mw2zfvAvE)W@Vyo)XMQ(DxwB3t5#&e~# zq6Y=Od-R=iH^eT#B$xqiA(K?m?N5)kpYeq!?TzMs0@hm z)dx0&@TpZ$I`qtDWJtTJ^!0OHEIqYA;UCWv6x3iQ6$J!`+^7-U!={STMis}GsK>>h zQGM74L12|dgGq~xNc_|KN=7sH$nHss7w6TR=`*Uqu~TxHMIU9v*fW3sk zq4zXS$My>A11(2<%Ar7d0Qf&T}zW5hc(`uR_uiZ6Z6G7J-6`orfCBr_}R z{JW$l;wtFAJ9h`u}#25}Ni0m8fq|Dq^Q1o?jA6GGwP$axySC>LRcoDdxAT5`kgju@W8=WKH8^*P5G^Rt}D2d2!lJS=RP!9O4KOxGikqe)6Zh+LP*8(Kme z5%V?vO7o4_P}He8sMLe5SPRZv^XB=ZDf{DQw+QtXT5KxJtW9jhT8XEMuK!-*ye=8T zqczWp)dE)q5rWY(f~;P}${uVMBU%dQY5(aUG&J?b;+%_s9zs6Oc%!QvMAt7cSCDel zgR8M?Ak6<+CZ<2-n4}Vo8@d2e4}flIoRis2rTKe@uw0dvX1#JJz@*Y!5`^UW2Nte` z-3W)+-A2JUfj~F>$u~|S!L8JSC}mWCT|{P9pD6o)d&bI9e)Y9inYHf}ak1WvC z%kV>7NFMDuF#EE#0!UT`<6xZo_=mRKYrdq&sMN!*Bstbixk67DGj15tMX$L5uMq^x z{W_dQq<;F!E0oAT7Fe2#Rp?EO>(^NDd;b-2wvIS@Vu|`KIKM2npf=Dcj!*C+LN^%A za(9UOtyM=0bwh{b`pxGrYgPxLf;}D281_}f&RCH25y>V>*7+9A{iSnE%Og<|=-g|$ znJ|!jymI~PPrco?ic}R`KI`_$NWe?s+Z>%ge?>0UaB~#qi6jf<18~I{LfgFYp4Uj% zXHQye&+l|Pq3;~1mPj8ujwuRJ&!PLss3VL59IJi%jbQi1D7z|q5XCC*H zM#G|~q)Y()K74IK98Y!*HmIrp$AwOLo@&2B|4uHAk2+KQP*2_+fs-QPeU2zze^3NPh2zT_l z+KFAqoLJNCU>P?U9$Ti5OUBH22Ol0vQ^~S8e4JlUW~lMFz@?ymC#IXnCuz*k;!1r9<<4ZwX5@ zlkGa~Z4zjV9BywX-#!btL?d2%^}a2}z7@;MmSnjslR`V^b1>B@Le8opW?Kt9Gb~Wh z#Xr4r{EUK}qu{+z*6OR<8XF&9p`&`l(ldhIZuR8=ez^OnQ~QXRf)y;5E)cP_VUT8N zsC1nlR;TG3l<+wxe^$XhrhzS|4DN5>G^Ws!QsD)P{kP+j9qIIvw@9)61hh6F{QIOr zffjIK<=_qHtZ9CoTqxuGlv$DeGoSF4F=7(z2zx$rPW8vbHR-SL7N%4!D=L1Uf$Si` z-MZaPeqS)DL6QUXl`sf+=eH5P1rv94Hx!6H>%!I=j(+NwTk$&#`slNAd{%(1azOGY zc?L3h-hF(6_Ys8rhR=cZ3~ybx$We>e-^)WifM@)D;36svvSS9HXk7^&4bW4kBUjkyPPoOLf(Y){r*!(GQ#j^=ppuW;Uh+=9F?vxqkUy`tgqKBnwbA3e!6_T-o;)UI#P_4K|iinUYRE}qaCge9s()zVTNM5 zU_Y8cq5~7%o5SU(*oF>=8v-34=)I0Ed=x8**&lfbBvqkqWPsHZwf2N*#%=GDW`^p| zjwaLegu&x`8&kb9mvN75e@Lw8HQb>Lm}l?aDqtKlOV!-D@p7F9J;;Nx#;pT%cqH$$A;V2Jm_OQmT zbmMFe7+m%t#3IhS^~q>rNa&F5*qt65PW$eE9!aGyQ~-oZeO5m7*a|%ZL8($+uu?<~ z`xh|&fczV4kD6{M>OsW&Al8?@UCoA@Wb;%0w;qe0Gz&kqvQ-is%Nem$O1N+j8 zLRjFe4?)_70(no_Q7?%hEJ?e#l2cx8HT@WpfZvKaepU{goD>?GMM;UOwlg2nuH?7N z4$(709((oK5&Z1Ldq1EBXPqXU(4NvJ{K%&CyROPFmm%Y9!=wi9smRJ;7FWmdj+yGD zON@_Z5x$*MkT<=T29zs?ks{c9(Gt4z-Evoez%)%#b$sk`S5Gk#ipB5F@vd_&b%5BT-ifC{pl3i z;!-nvi{~r`9lU=xd(O)&DsBwFAZ-h{)&h4}NWH~6F_;%LL$k$8xJYP^Da^ZhoMTzn zDoX%XihbuwDtCL6fL)9Dj>L8ap+!8MC#9&pYn8TMk1h6CH@iaTJ0k9sXTSeSXB9@o zV+QC}C*?Ch;Nz#A$7>@Sql|Q(N7|tv(suZOoDHs@hU-Uh({0OV+zBn>OWA1f^z>hY zxQGSRDr{s^n2gH&y}pQ(T{;e(s;5X&qj9D)rLc=s`aAqY>ps!U`#kCUM9H-M-PJSk zy)hwdfwww?<2Vn`nKM$EdMyb}ISRi5 z%ykm5Yn1;q?_??X>CR7<*EAeF=yfC{E*>?~QVXQG*M+gcA?{-EOY~TfG%qX%kzGN4 zfhUazvutu?IBThE?`jqELqC{6E!E;5@LM{9gHxNb4`@Qor|;FSw^nlRC+Tmx%3JpD zhc#tGjUhJ~@1+Ngar~W)@M~q_y~alGv`Y&egQaQ?#FxK|3kvpT5LYSDXABC0)`%>g zY7W&;R1(-d&S{-S(A_B`D(r8^4z`{GxD@9J%E^cHF>Z|eg4lLF+_k-8FLk9}BL8;& z9>}y{UK@$Ie_$DW7drOa>s?F|#_A7`G~mDG!Iw5PnMQ#jRILq_y6cxCT_}|N`6Irt z*vCKFlj#fjv9q*xyB;X|O?GatA0?3cpNJ%;U1%V|<_HnOhHpYDHhys=7&Pb6SF4x$ zUlrMah(c9PMN*o!KWj6&;cs^B32t_XLEkj)$wKLK>)EGQ{V1>t>T zfYw?{9P|H{4cM1w@Jxo9-=hHhI|7Il&DlyQ17xP6fo0;TlLh7UOc}qi#)z@hQJTPi zrSzM}OqIBgPAbIGfl#Hdw$KBQ-*OlOhLU z+yGA-ktIAlB!C4~2mK7-XkB3O=-~L>Z9lD2lk4YzlU3c^s|bIA_|!cFlALztaDMS0 z(vv5@QS)br(uN=@O*dDlV@C5T^5@jTy@eckzrSbqe|d9ir1auUnm_CH4IY+t6wwB{ zsNQc^CK>kR@d2Wb7qGhr4?>tgr5GohMW|(V$oR3 zI$;^!)r#NV=4kQ?Z>gVD{ys|a@qt)8N-yuX>TsbZvcG$~>1RVytxql^pynty`LrK| zYoeeFNz)YY<97cu#RL_U4cM`a7a+BAnzH(mNPWjC0648iOkQ7=dtisHRh~Vtfwfd0 zwI(*pN zBIxfam28pCpHMHKHGhLcH>cXqpJO!I!#TZ-sUxc%t$;3=S;HE0EdVakZMJ^U^}=oE z38xKTxLoR(659PR!EzUi8v=tcoVZIuR0~4hkK0|X)}}TQ&oN5t$pH$cj}qq+qsgWH zB^sacn!hagQ@|IiHGX_L8rcXF9bsrq;!`BAn(s)r;}xpMX6r8J5eqUxfcl2m*55_` zg(_s)x|9$6!J{eJTA>`e>ykAiOK^y8=Bg%j4rYy6+K>o^`lMNNoX}J#mV7*84EBie z9MUMqI8i`-+!F7k>;9`xv&r4aCWkowNW$P5ds&v3W1|4bTuP%2sS!k+kvQ^y*iScj zfdF3(sGix_quQ>|VQWMc#+dP`MI2=SzYo0;aRJ<2-QxfQb%4cga5X*eCrHS>xbfqjTLf0`6iEL3w^be&yMSw$c;6iG<5+{pgO#R z&Qm#fuamSb)}+HUq*ElikVu?vO=uvWWV!ZZdLe($puLNsZP4`g`d||e@9TDm{^zw< z^vyO)j8>G;${U)@+-m($ClB${SWoeC6c8Vv;V;ZDb#?T*7WHdW70R*VJO^|)ad^BJ ze`ZC8H9OZd|68@b{{To+fS%XS$%U-IF4TfE>Epmf{wK1J!wl0FH{M5PXR)$I!Td^5Qn5h6-?_~tL0)nLngk`N zQN5kE+UAj!&1_sPUnosL^v1JyHTN@nHXwgiTTeg zQEfD07dcvKXqeyOggkr91;s+t%dSL!Rc5pj6lLT~W%0>HDg~%;--e5Ugm|;o5EVtN zCIQ7GLCIpe@TlkQOJQ+<@QYXg{81uQ?{r(}0wh!opEn-yNW#(k%IAYbmLj7_c5kvp z0-f%0Tc}Ho$3Moen$1*EGS1~7>7C`sJdM)$cG55@UTxxGT1OXlhz~J};j&aIi{i3m z>ke>*Zyq7x6H-7B@yD0cb)yZHrFi|oE8Ha->CEPwK5;05wK%ON4T6oY6?p^m3lV_u zNiO8#_{MAnKk+F=!`4B*qyb6hH}QYkx4ld>@4gCO)Wme_M7VSW8o+xXf@5uiubPnFA$8GSh)mFzYW(By&j!z- z`w|}iO(p;z$b>67GnokRw^=7q0-%+fsTOss%g2HchZ8~3@wY-AuE|_#uyhhfvf{m- z{pU=?kxPn}NA3{%yvMH{uqWd;K=aEI zybyEY?Lia9-U8bKF4W!7*m&HBLRIXxH>~-1cg{plA6Wx@@n36mD`M-rS$6@Z&nBh?olVhocvw@N*m){;%TagIt zm%jxG#=?-UiFfW$z%4Z@wjw2UL zhkZB@aiJz|dPWex-!jTgf@5pEnkC8jHbm1S2K@Lc$Z%iWb`37>l&Xpvu$+*({aa_i z(zmf0I6`I(@hY3?(gY}r2i$#&d{7z}c92nkj~Hn=wKaqwx*>+=<7$Dp=gM92do)SY za+qP3CUnA96*d^(_91FWy$|}9?r=o5YFbpQ9?wHFAs8O7G#J+88mY1aSurO4-Et8o zNZW5S?a?@Bm`Qy=9gE~x%Nc^bDPH=f)-3tm*O91(=O3WO0mboVaEz2Fy^X{hvBm%c z4pWv4+D=sJN=A6pz3>fT3`E5SymvQ7pK-qtT~boYfx%@tmGWgb-=xJ*sc#`RFHVVT zG6oPoZSOwOMA%qW<;a(`PI)>7&0OY-uCqEVw7)a=qnso&qRAl9^f&)ZJmn}i!mnPk z-7z;z9cs1(SBU#ZJ!l@G7H00RASEsmGg}iUmNKfM&CZ zxVNqELf`i>pym5RMdPXTzx}3aCe{cBtm80kPaxucTr5zP16Vu}?AA}ww}CN4*iCTz zf-G~WK-`HvOe7!FH;un8WBeJ-(*K+^Eic_I`t*7CXf!g$7{{uaA(R>$&XWrUtc@1l# z$EA65`{`yE{JC1CYVB!mHUFs_;Q}dFEw%iPDevD_Ed3hXERFxpav#^|WVq4zqiJl{ zFU^p!>kQ!a1~LIK7-Dz(3|P&lwN=8nWa%pyb@Lo5X#LHhCZS%S$_q5X+^+VzdwmZ_ zSc#f%idnl>D)5|4JRtRCtyg+f$ zmTBFhRXimhxf}4qq6B1uvFwqOoyWLP^B02HLs@snI_=hWe7v3=PoU~EU}A3bk`J## z9M`^L(@MQQr(z21k+3qn`fvG!f8D=!X?A`ly8{tHs+Q5HLma?=;A-}cLFnDkRv{F1 zzk7iygnPlyr69r8V56>W4dvHQ??R1VCQqn5Ux{YqpfLe0^&wVsV|uSk#4X>rR)NHT}upQoDXutQ@J_pASw71~hAz&`@p0*`NI{HDqM z=y4JHq5)$FJEXe2M=td~ z7h(OI!%0;}kF zCeq&Xv`f)6o6*BbRS)^JHgo37V}GW89yu`Fxn#H$wUonSSfiRb^{I(AbfTC}7GE+! zkdMTv!(|_r{wkiYh9HI7>F;{)6Wtg4swBQ^WElJ##WQlCDM@EfT>MVU`+>GKv491t zb2Iwoi+ED2`VVId%IQxD{L!?(I0)Py#4=b1pedS;H9Vo_jhZt3W%edYn6z)!PCKLA z{8ki>&3}L}c&}8x;R*MbP+6-LK!=5$F6yzbNDmdB9d%LDx$@xtV8Gq#^oYO}&mD9( z1!30Oul%Vu>fqwC-f}#HRWy70P}h)Sz6MnvX~9H(Q4%ZJqH`l5tdO$m7WTQAaK1a9AAyz)5<`_$R6J=z$l=TWz?Pl~ zebntUYTg0#Qf@GZ6?|~iS`l+3wT4GU))-ZkLVz!mryip6%>#|@%hc+`lD~f9^`178 zk0mc2pLIY|a<%K9{0UzJzRkWR6zbyz4~Zfd<0l45&ENH?8GhqLv;KN#*~?-%@B!bc zqZk?7wo9ZY6(R70L84g>-g=m9?(lvC-gzS-6@ZR z9V9C+JGY3kl}~D4+D;zYaq&cdA1rOiS8b`|Kq{7eABa@oGIl_K=?_@=pr1z@#yb1? zYy#-=Ax2**nTTGs5cqJ*wkGX5QK8fd2e>K$vDI3`Sccl3hg ztkyQP1hi16@|1)4k2SFUK&Ac`f&llYDCC>{{)^Rp6#k=t?4Iv^D^|m2 z`{#8Jl(;*WM^geQ&}A=gTJx{leXAJ-eA!RfuL~^?wWD*O!rk80Fd`fU?#e&V3nR4o z8*(QTMFZex#4zzh{RFt`;Xzvq4|t)rHOVqQ^);_jHk2rmM_`6u`?H`UCGag~NPXpV|Z$JkwpIJy;p zT1=<_Jz}eFTJNFUJ?Mz(Su&N}l+qEf%|fhj^|SNTO$cG@QIC!%Il(T*_9C{p|EcmG zH^2tx$bOMZlHX~$@+%AXFMW7MGx;Tbw0y`NZM80W=^I2%YVi3aWTUXu3DKKmV_uFu z+*b-j@*$L7ZWUnj7m}I1@Bem2Cly(75eZ)k&n|XB3Ur7O`LXoJu8*c>(IBci{3vrQ z;A6_WOPeWAybsYYW8cmPbmvo_{nWDc(#p~6d#YiV{YEEE%1EeNbq7j0O7#sR?ZSd+ zp&4vQ=@@H?_i~ouHvjoaWUq0qD4br2`bX?FX2EnrX0C^Zfsq zdJC?oyRct)Xi$*`0qGJ@5Rh)^?k?#DX&4x0q`N~vx}~LaP*S>)mWH7_hJiEQ&-0%5 zd;r#et>A_>Ff7hir9)tX@(=DuH6L4S@_eSi+7v2Z?Lhj;ySkJg`8TF%a1nrv0hXu_xD7Ba8dk8NISN}fGqL|gOx2Fn!=04w>~ z9@ayfWhNBv{HMR+xw~GNe=DxEK9Y%9wJ|s5eCB=k2aA3mSJ9a5Id{bPcUR<8pw59m z#vmcLSZUF$y%4@`I_!q(qZS`^{(|s%nTz(1!x}}CXPxd`!8SSfP*^oss}3yIVTLuR zY!&aJer@*uAhj*T`v@{0QA$oL%U1V@P_4|V+AD!E>z!gZ$ zL(VsMK(roQp_2mMl+Pf%=fB0mdm?3qm%V{&JmT8#pIXRGK30{iui+ES_Edl!9X8i6 z$=25#mf-w7;zsnwDvzUdAsk%-=m{Ps-zsXI(AC8T6NN4{GN11m19hx}0h-oG5@NTI zoYu)8nQlWhK#&F#s2Vg~w z7{9Hfg9s2RU6m7UiV;cNldDv_8Q|n;d~^7$DXt;6M{($?w#T-Cq|lAwt6JTX-|8V8 zY5yRFw$J_X^fIdf7b*vqn~I8x8{FxpKvobEl?)gUz)avopSZi&t!j3vc`gGWAtlvB zzAn^Sl_Tmu)#i18tPd&w+PXU(diOI(N!q-)bbv3<)F0ZLz^b|Pw9)rPwqku)KX>O#nNw>Hdc#rMOV4Z!zd4^@*y72PdiOLa2Olo zcbe-pu8uzF@?1vhCo@gY{*85NASbMVGJ)ba$UPco zun-s_$#ZQrVjLP`mEu=QPrVU&U#PyTw&*tXpzDI#F4IbH1BuRFGfqTE*~&jZWINc5 zJxLHNSb14A+k10g=^EZw(Rxzr<+tI_FvowID9T*`JH;x(kZU^xm^^&!{ge5-`B$Gn zP_@aBwPX`XDcEVz)|4Ld`mW+1K@}*7p1?r%(fIL*fC05{d+lSug=?eJ1LZZ0`>y#K zC}@VDyl=Q~-arJ;LUm}sCW(*l`o^HMctp;>pl$HxF~{dl4@=>F_s!i0Dd1pmm+JL) z@Z(%->cs)R1ewwQ0+#wVsMxfO1-=eCNst|?a&APXU~wY-XMkc{T*}|#I~9K>fS8%M zK>ANz$gZU?4@*Ev5s-mH5|eMq zLrLGS4A^Ha22cloGI*~$cTw~9csrK#s8zEY1z#?+(gUNu?D-fsfmgV!5@jY1ZCuED ziYgNer|2V5mlqZBodmp4x_^8n(wo6QJD zyp{p`A{j!528g$>0SopA1Mc8?B>7VAQ*H-G*X-u?s))XRt~Qe2f8VMZ0T9X+jzD?J z9=3SV4Zf*wv89Kcf7}oF2>_lhX7(GXuwg7`Figj4oAZxj|ClAamRx%=NEX6V&gG*G zXeQb!oy_Qv+q>wf$PmzQ=Wu0{t1(xxaH6HH?W%cYkn6mtK5}O(=&?VryxI@cWBuDT zMx}Daet@2!@=Tzjj0ZBo(VyGO*XR5YG8?`OS z$Rb4yS(&?Bh&wms56dE^O`*h}cYh2_oM2R8mp>7k2d^;%>eaG70*fHiTLG_^{8&Qw zCryD-Q9#$X7mdyyW z1a*LX`3^#mX5uJ%2<XyaZY(yc+BavSkaN z3^xo4#b$IGzSN_g>i*yZaoIa>S_|9NsQORI8p~<4t7_?A--J<}?)VIlWK;*2$+Wt( zuW_wP^b1V5WX-Y|dw7OF;`## zYte2h8@SvqJ99+4U9wH=_8<~p^9E7qlVj7)El{!=HFme6ka|HDjXWR3ze$NB1xdEX zp{6-;{DN+utvc_t8oW+K8UF0#1>-bacMB44o;DFUyR@;lRJej3%2LKEL)Pn|J|UVDM8yZ=21uF z!N$gevL%Y~O{s%Wg7i}+%C;(!`~wINRdu#g&j(vo#q)T|Ws5)K*yT}EEjE#SB(ct{ zTdJ`e`&69)Ks}B2i2wAQA!$HqD{9Keuz+#&Q?qltm$?x)SLqTCfspHQI)v*GG%#ZG z+WH(6SU`z_4u42mTA1z1arjP&%|7YvK2v<@{8OGR(UP8iC)WO#w~MAs;kZZj)|=?< z=6UWzHz$(@^zP@Glt*ZQaeeVHc=+QE@#p<*EURlaWFAB`&{UJ;{QN||yp zZ@!;znTJ*|8Zr8ETp<{sf;a7m$?Jy0G+@IGUF>6)c;r8N_BV$7Sks+|YGo?Tg%A&b zlVL_PB)0mmSRR9CUxwfW&DF~qN`|YMqiXupIB}ZsdtYI+!MEJj%K&Cb$`N%-K6^4{ z#IIy)iq8nnAN?Ae6z-!Vs+!ONbv)!|^rhpM$VQ;Mwsli(rX1__Ma0_aecu<%L^nG> z#-)v$j0O+}#zO?TH=j+#8ptI;AF zkM^uNbK=fAuuu(egBkK=YJIE5_#20sWb7&*|F;?FD2KOwffZH^l1K3G zOhrhYP?m2vWKVp_Iy7UXOEwtPc(1^@HQf??;o+OT}V8 zF_(S^u}|q+KzS3rJ3%hQ3c(YK6*_&1t01LFiQ}+dBQzuIH$42|Gl=vcoIhbQ{chC4 z%TC}P3KJe z)%>^l{YQ@Kdn5N`LK;y+g;VbYl0iNK34n+eJ&N&|We_Slx`YN~lU8Ib=c{b+rN`&b zx&!MvXD`AQW%0RwZow%J`v@dtV$F&nSvj;`?=`y@@FgbKk=4SM(mbHXWxv0h2PWG% zxtCn2Ae2ux5Xj-meb7VjtYD;RK=LhwG3t{<7c_^t(nSYy!gEXBe?on>MaYg4GUK<7 z%L^0-1-aZjej_~?US=H4ixeCC$hPnUQReDX;o_;|v0Maf%6rN`I)(Lu$*m&y$Q)&M*ZDWh(uD$aHC5?=$2zYw?dG7v z=g`>kxI)t)RT0LsuLRk_cW1JIjOkKVRP0Hm+UGD@w*9T^pCV?oN~dIeIXueO&n-41 zF*IqIKfXoI=0O_Ewi?K)vARx@=yGwZvigd8AZv+95L4L4@%v=B9OHWV4gmqL6j0uu zkHA~BlPpn!YGsTbNn2nX<9RPX+R1&_(rB8`?~*NjN&Aa6>NoMfw-jFA$HuzvLv7qB zxvJNh5n8^=zL;6&)IOX&U8qzM{C+eB7Ih z2td&7D-`sgmy8tHsCv%?)KKl7*vM0Fw(F!}3z{(0_Hk;%#5j@p@U9VZHS!AJoh+ic*A4f&3L<)6BY5=vM8; z2_Jt7!b$vS(&ovPGny;DR_3wMi?i75N`rxkd0y{*w0PztFNs1L?K+Pq{vh%5=TBKm z=)?K*H6QG}DKn%#X)u%+BMHS51rp5fcSZvW!2F}l3zsXbT%w%PfoWas5xjVXqWsYh zUD6Xoz`zcpsh*K2vp=PMw;o9K@_5-HH6Ae_6FpiCo>EWdvANB zXmt}j(kse~_Iw?==fX*YQxa*vaXi+$zNn{63>q)9ox?q9?WcPxc&GES;8Mq1cFFho zqOlnc%yD62R25vF4(p-w8_Go<#eaOm*2kztpPoKbHbmAX#_bEJmd=_h-Qn7lIN77~ z2c#>U>(n)u^l0r;Oazg&T%kdhEBT7#XsyfR#lkzp zKvZ0G`d`Zn7)7=ySMX0@pbI?&plHfrH5yE0*CU0~aF_pP@mBqVXlE_u3U?t>BaWwx zi|31py#r%%)~#&7$EP`M*OGBlh$?c7kp2881;f_?c~xyc|H(l~;hb)g$)bmh?V?V| zZ6O~Mq2Z7;!klc^E1FfJ-!ER_38C6R@(R|N!Dmh}uhyDdg9VGT=?zOReG=)WwJ6+) zN93>y$(8x&v6O9#TZ$nSwBve`aE+r6z@0JEA8T@icG|`|3^K3BJnooTWaegZXr&nz z7UX0yzb(%MXU?WvOyyus?{AMmhQf&QL<}Q&n`@@4P`G5{?+U;q+=x|)IF%$GQjc@6q%~Vs zgE7sWfF>{RyX-x!HuVh?C_Y}XE70eq*UsX#*0td#+rt2@q*0x34 z1#<}JB%x2>wIZM3_V0;Jv8OV!Z*cT`)|u>v5l^-MbV>=x4?>D+6yIahE)joDKyEhC zK`&6{31;3jAN|%h4W|vcsZq2F!m~$TTjmK_oSmI7WZqRCxP}@?n$>{dw;o)$%R_3Uq^qnHyMnaDukFL0w2!g9C^DsWB_zB-{`}Ff`Vdrg0(#f z7Na8~-ovPoR7P3!@DjO1mn_Rlz{RLBjS%3E1`^{)ef&44KeC|+1j|!bjWbR;gd~vW zDryWovQNk7zrZGO6cy#oxQ}a&C10*v=1fh2Reb`OahwiM3~0W*IUNB)dqJdnrVBsE zymxkW{YmDl8OThKYuMpG{N%heq8T*9c>Q=psYmYW-=N?G3gfhxj0R~odBrzN_Yt$U z<+3Zj8>_BGDFW^!RO0*Gx3$QW1ueIUiTY!p4r`o2?A zCbmTS`{2t|dZqLLHPkXcbzIo|wtLSp{#;>@Q@vE4EX`|W8+_9oCPKOL$m46t4@tw! zgn#=xPRtS|aKG<)=>6;jkxVuKBXhnhtBr;RiV5?D-Z!}=O6dA~x>jgdl`2-61<3v3 z`zfE@1UB%0)-n_LZrwkC6O7q?b{8xK!r2{@2U)&3YW*@(n|Vlvtifw2ZJe#&=}Lb| zf%VB~>BIL!=+e2aN@0!Pt2BkWzA6JEfgy%NKrG&oFlDpt% z?d;JoO*~!O&$fz86{%2D`~p>Y=cnJ}^4?6pdFoqt;>>tiB?L+qP8iM`oART`%?*8g zzve)VE4*hBFuzN1kw@=dTMZq{l1|=Sndcq)-qteT8G0*v0vp)EnuF-z#XN74&6I2i zUyGbt4@*q*a#8g!tC8AkuyG^fh%aMl_Y&~;WU=R`^Ur~eUW5pu{`_DZA0#DuvAn^v z^QJ5dqeg%Phs-GB7OStH780M&c)6d*t7FMi}7ckRtKmQQ>FAz$I;?wgNe~} z$f1|0bfu+~{0=Xy>vJk4L`c$06NGbCjY>PK|&SlLBs z>BFKO^_peAIYCDTU!N)I`RvPH8?hKS19)BFQ*^OD++Ut6j>UzhUnaZf8OJajJiL&?!vql5zqZNxP zbC-cIhSY^~h&@}(nb9khEjVc*1*~Gd|7{5wPOJC&T#e(|;+-% zW&iC`_8+ZHZN~|s-Qn)8-5*JNX>JsaZOhir<)?=zMpfqadZf5VGX%Fuu*qY5?wr%r zos8`H_ukJc0~U(p&+e>kD-|4z7e4w<;vBK@{TXkC=jBd`-$ z$A=oR{884<_m5nP7Uc3vsi8ai^F^L`cFmcUmZFl%agEp2TxXdJE9uMw_8l%WZFbrU zg?>`Jz}*RLib*LEq8nN7X-^9b+cpS#RDRVB|8{+%I@wiioY2g)-Bot1UEi-yJ*qS( zCwWA)ifaNxzD>NiQ3+Qm)dEY*rhk0qEk~IQn1;UdeEz&TzAJ|{9c%f)!7W2-)5t_IoFyZy_S|{{}D=@rksEdMPv2$VwS|QGU>(j z{i?!DXQHvve5BvwJ1EPI573_zIgobxLPf}iMfCKAbE#mx9?@=yq?Z6FtGr z<|_j@^4~n)iJwt#Kg~?R=k#i}#%zsNX+%0fu%O=veL{tQrT2zS=ex8x;xgH74M-=1 zz1<%}zUhrrh+G}7EFE=m>S=2e&*Nfa=ec&>^&e&YPe0B(ex>(QiNr?$Og~8CvBF5m9>*YXX)S zmR>S1S~Vv!mSoUz(7IYBf4n|SSo(sp;2}t~zZJKh(rAv|dAXr3lqG7K#OTK?O1zL% zI!SX^_4QJMam?R-bFWj1_0pN|FfU!td*a|LQlSK(v!*(X_5e@#{G78IT1b&TDUDyZ zV>p-5=>^3Q1L%j#gDri#@LOpkMY3nOXH)kPntO!| zo2<4ypN5t`q>K+~Abv3mxMEssTfI0aO_r#=${2}EY3vg3taC({i!TG}Pw&xqRNNzw z${Wd%?lj~lcf~IF@d|%^BfnhhAi&i4X_dN4GY+L@4ZhGdT@ceAF(K^i@<#_{2uD8Z z(N0fi9DEiv&&qvnbvZ33*FSL<8+reV52niuCz=3N6WnvkuXVv%GYt>hwU}qo7)9jbx{qwa&OzF$mf+y0LMD%Z6 zbCr_{iZ#E8^yhotcpL$MyQk=;92C<8rd%m76tKbE4%wvpg+_8zLUVT|v z!KQ7F5N~{G^o*)-ui{(Xc;iFh+l9 z@HGFRet#{GZ~d-DA%i`05(}P?^BH^T2LABoUQj&g>W*>O!9l}llc%ZrwO;c4KN(9S zQpN&KKDgYUew{sCX}}XK(0ce|I3~pf`gmXQ4uzP8X8dNc!G1HXX*BcKJ36{A!;N;6 zzm8g)i9h$5IL=jaT^cmIWM6SPFSks}tL)-SFtsDcoW$H2!TYwspgN@`R?+BJSyu*p*yJ?**0xHHM%Dzg zVq@X8Xg?0`=li@zeN#~U^m_%O$(8Kqy!?<*<$wJ@u9mnCuYA`%_cPX3DvjF(i>~C7 zHyr<%=j^iHjX7J6oN0%QTi01so4)PPRYQ6yt*2|t>1%Wm&4cGsaWN7@U)Zh|KsFP;CZLjCtk$Nos3&>nbP|k&b z5F>DzIv&Hz4^h@;BA|&QRHzdCrlACvXTJjWqwD@2UP#+rRBG>1bv?a%oZi7#a`h<< z;G(u~neBQ3MD2EELR}6SsH&l(h63yVi##g$&c?<8D_a5DzL75it zZAY4<%kTR24EX;%XC!$Us=FO?9e{2-V?JjmMHLq-)l#+nLgR>(hiszoWRlZBui?n~ zTT{|Sd!hxl5Nl^;xSJ8i_;&su89=63)ZOW^dd}0y@*&&NHCm0)A8Pt5?eOGb@0oi| ztU$}hnXg-P2ktJhXrs=aXUsBH2j@s{;D3hZA!r#06^{Ctw&P>UHVL8;D-=J3YW%X5 z$iwQo5xF*VXud(CqdBLJ6&)|kPLhv{dBzPV8fl!Yjs(;$t>qKJyjLzbyjCyb>NpF& z4U2>HDrw$F>(I>j-0`QIag={jwySBl)(WJ13-^EYk@MktWPX)?Hih!YhA7I5TNp4{ zdK+2BoBw#kbi_7aa@UnfvsWtC6P~dv87q@I(5BhseFFzSh%-ZGOuyO$aO40qw^Q|V zGZ+!HrC!5B%d!g@l&ss41gf<79i{cLeBe>80(>tb`o z=`VZ<`P9_;ltKbb&osccise@8JLqmGtUDiFRuBk5@$;dbr_fQiIm5Iv?2~?(qKZW+ zv55KR3Sihdd&8X8;HkTQA%!H?#@PzYcO){Neb?e?ub1e!bd;vv-xw8>Ss?R@nw)1c zJsfauN82nWIBI^yx^mx4l-w!e$ur)Vex+3uanFYF zdU2<1(t#ps_FyZ5_E6U$q*3njRTBN*Jm$in5u5xO!cn}KKbqXqiHHs5GXGu zRNQtu#`C-k@GG31Vp*K4CIKNe<%?g9z7C$*>7{0QK;QD8nSEfq@Sw;%W3`XGkiQ@j zVp8S7W_NznEPPEQB`6MT*kxw!M2WjvKBuq;u_Ti6e)*Md`~LH$#(-vx{O`Nadm9k@ z5td0PVk4fE`*biQ6j-rLslb#Y6)wL=BA9sP0R2^z-byWI8@vTKsLVd`6R9l~oq$pP z4F>`k!;3)5XPjM%lbl_$ll!@?qgw5UG^|_~Z*kWU%vS-vM2&4;Cb`3LMp*cUCIniJCmpHS~dB0qy1URPvV+=IW*=bdTgp5lhOH*7}yV!f7^Jk z4Y)Ultn=wbpOb%bn+rHA(gOd6y0@yivliQppgRpT+TbHU^_Rt=`RLvHnk=?LJ|=tp zg4(4?j;!IzdpfG}0a#(qg#}N}20Gj|H``SKOepw8NW^cV-Xsel8sOJ4K7~Q}y_99b*%#qd2DxHkqkKA|4*G(?S z6fC66^a2JK*$J%~CFXaMVlLjCFr%#gG^0GLtzT^(0A+E@DB&ErG8G&~Fi`&LE2OH} zDu`j6=}@#^Y%F&jDa{7;`f8`78yI_YeCh1CGG|Y+JLAixwtQ!E4w1>85XIOXMqOV}O zTtD|&7zc<&M>76^&CY&LHwZCRzONi*I65Yi_y5E{@57+2AH@s-*l>Mf_dIEQM7Jjh zmU*HpnsriItQx**Uf8DGcH7TQPIHg-ol{H-d1dQ$)~ulR48$DlCG#}FzW#@-DD-lA zU`o3way%jPNdDsFi??XpuQM6-i7iSGfrS5%4b-Ue+aF3uV>2`w5T|M*rchdcTwL!rf3bjm z{{EtbS^^WBP61H$89NW$tK++lorfyUOpR~; zTGvU4v)hL7`-fc|8q(bPaPPOXdvV&a)SbGUCv)yD7EGEcNF*w%D*JiD>d;PLWKqa< zGt3z&o;>3wHL9zgPnvmGcuQz+tpqSpr?PH`?oTS@jK3?myetS_YCF~38BY^Gk228H z?W|l=VmdxpXcPBkf+&M3guZ>}5D&Wf6QkqiIsQPJlBpfLA#9%_R7NQJ*_mDFR+$)- z%sV&qxl53OY2}caYLhIn$6L#0Ti8d>i877C7~;=J8`h3D zlA`EDTrc$_RI`O9WlIZR&D5@UqtrO{iRI=`~V%c{`llPlX>Dg4zZmSheeOOO05c=0RuTqv-|d;@@uPH zQiM~;&%D`v%*aXqec8BG4WafWCAIZ}=!Hi@Wslgk3WPGCyaJ>KAOhn0a%4+N7n99} z!2{Z1C^1w0#++YD|8`yX8WIFu*B-xmWpeu7zA-adcfl-5KUbw1JOdc??PMHDDWW{2 zUW{*Wk&>@i&>nNlR*wQ5zY3*EE{{FUnsW#pI@dpVMT8b!g^OA?txANlWle=h{$J^) z`W@LJdAe$=3?T)tl-E;r|4G-0-*L0dT5}SQ_x33jT(P;4B?L?)))Xbq3-%R0Aj!HW zx1Z-E`w>(qW(<#CE}S(rS|%6&Zk94|0vvqK!f3AE$?9eD@NGHkomXXG>3r~bJ^1b1hnoKk7GQ@Z;bI5Lr)zQ8eIaXq^%74Kqlmm(hnGJeHYUV z3f19C4$saQs?1;A#DA#QkpRp_PQa%S#5+WsRob|WN1E$IXp0_xBhKBaH&LxFZ*%zx zuYfOzj${Vie$tp;VMFmz2?wR-!DTfbED-myGGZ4boK1X|oRRbMpVSQN&LcvrGke50 zY*pw-1YYb;PuoTK`?JC^rUYA!uYf#}j38M82?KKf<@+zlsDpot>}PZ&O7{jl?mFO1 zZX5o}){>ZEwRO zTlreQ>8dxv`k_aTthu%{lUo(~^O0BW;lza%lFDv|f@<`m?D_l7Aj7VT`##vd%<`N@ zP9Uj)X_?6G8_qZeL>EyIl-q*L)_lFA;J(B=;OhxtlwP~Q29oUfcaKr`ezW9$kS7oq z7YF|Rf+gUvi|mqx<6`ib-x)}qG=+8M2m6ozLol>mcM8{A@r97d+4C>u2*!+$BeXc|w@V2>MFFJ$wm zCBAlVigT;S-vbP8-&xQhZou-B{;S(S*pUuCkuSRur9gJWke9;2%sA47qryYKY3ai9 z;Xs7w6ap7>^6)x)fhuq+jRQO@~3 zZ!yHj?En`~oW1Cy5$JL5CLOB&%IQ^tAt7+N;xR95@p6@a!7NEl7rtH@EW5xR8~dG- z9oBdB1QC~`Vc+8K)*$sV=TA4q#qG3sIaJpd{bLVr_u^Akcid>0Z%s1Y_Dm>RJyTx-dGo^bmiruuZCPSg-87TLbb|L_jsAPz5j9hl!LD^h)WG