ERC-20
Overview
Max Total Supply
0.015718671107867418 SLP
Holders
332
Market
Price
-
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000051201022676 SLPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
SyncSwapClassicPool
Compiler Version
v0.8.23+commit.f704f362
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later and MIT // ___ ___ ___ ___ ___ ___ // / /\ __ / /\ / /\ / /\ / /\ / /\ ___ // / /::\ | |\ / /::| / /::\ / /::\ / /:/_ / /::\ / /\ // /__/:/\:\ | |:| / /:|:| / /:/\:\ /__/:/\:\ / /:/ /\ / /:/\:\ / /::\ // _\_ \:\ \:\ | |:| / /:/|:|__ / /:/ \:\ _\_ \:\ \:\ / /:/ /:/_ / /::\ \:\ / /:/\:\ // /__/\ \:\ \:\ |__|:|__ /__/:/ |:| /\ /__/:/ \ \:\ /__/\ \:\ \:\ /__/:/ /:/ /\ /__/:/\:\_\:\ / /::\ \:\ // \ \:\ \:\_\/ / /::::\ \__\/ |:|/:/ \ \:\ \__\/ \ \:\ \:\_\/ \ \:\/:/ /:/ \__\/ \:\/:/ /__/:/\:\_\:\ // \ \:\_\:\ / /:/~~~~ | |:/:/ \ \:\ \ \:\_\:\ \ \::/ /:/ \__\::/ \__\/ \:\/:/ // \ \:\/:/ /__/:/ |__|::/ \ \:\ \ \:\/:/ \ \:\/:/ / /:/ \ \::/ // \ \::/ \__\/ /__/:/ \ \:\ \ \::/ \ \::/ /__/:/ \__\/ // \__\/ \__\/ \__\/ \__\/ \__\/ \__\/ // // Welcome to the SyncSwap protocol! // // File contracts/interfaces/factory/IPoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IPoolFactory { function master() external view returns (address); function getDeployData() external view returns (bytes memory); function createPool(bytes calldata data) external returns (address pool); } // File contracts/interfaces/factory/IBasePoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IBasePoolFactory is IPoolFactory { event PoolCreated( address indexed token0, address indexed token1, address pool ); function getPool(address tokenA, address tokenB) external view returns (address pool); function getSwapFee( address pool, address sender, address tokenIn, address tokenOut, bytes calldata data ) external view returns (uint24 swapFee); } // File contracts/interfaces/master/IFeeManager.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; /// @notice The manager contract to control fees. /// Management functions are omitted. interface IFeeManager { function getSwapFee( address pool, address sender, address tokenIn, address tokenOut, bytes calldata data ) external view returns (uint24); function getProtocolFee(address pool) external view returns (uint24); function getFeeRecipient() external view returns (address); } // File contracts/interfaces/master/IForwarderRegistry.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IForwarderRegistry { function isForwarder(address forwarder) external view returns (bool); } // File contracts/interfaces/master/IPoolMaster.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; /// @dev The master contract to create pools and manage whitelisted factories. /// Inheriting the fee manager interface to support fee queries. interface IPoolMaster is IFeeManager, IForwarderRegistry { event SetFactoryWhitelisted(address indexed factory, bool whitelisted); event RegisterPool( address indexed factory, address indexed pool, uint16 indexed poolType, bytes data ); event UpdateForwarderRegistry(address indexed newForwarderRegistry); event UpdateFeeManager(address indexed newFeeManager); function wETH() external view returns (address); function vault() external view returns (address); function feeManager() external view returns (address); function pools(uint) external view returns (address); function poolsLength() external view returns (uint); // Forwarder Registry function setForwarderRegistry(address) external; // Fees function setFeeManager(address) external; // Factories function isFactoryWhitelisted(address) external view returns (bool); function setFactoryWhitelisted(address factory, bool whitelisted) external; // Pools function isPool(address) external view returns (bool); function getPool(bytes32) external view returns (address); function createPool(address factory, bytes calldata data) external returns (address pool); function registerPool(address pool, uint16 poolType, bytes calldata data, address token0, address token1) external; } // File contracts/interfaces/pool/IPool.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IPool { struct TokenAmount { address token; uint amount; } /// @dev Returns the address of pool master. function master() external view returns (address); /// @dev Returns the vault. function vault() external view returns (address); /// @dev Returns the pool type. function poolType() external view returns (uint16); /// @dev Returns the assets of the pool. function getAssets() external view returns (address[] memory assets); /// @dev Returns the swap fee of the pool. function getSwapFee(address sender, address tokenIn, address tokenOut, bytes calldata data) external view returns (uint24 swapFee); /// @dev Returns the protocol fee of the pool. function getProtocolFee() external view returns (uint24 protocolFee); /// @dev Mints liquidity. function mint( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (uint liquidity); /// @dev Burns liquidity. function burn( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (TokenAmount[] memory tokenAmounts); /// @dev Burns liquidity with single output token. function burnSingle( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (TokenAmount memory tokenAmount); /// @dev Swaps between tokens. function swap( bytes calldata data, address sender, address callback, bytes calldata callbackData ) external returns (TokenAmount memory tokenAmount); } // File contracts/interfaces/token/IERC20Base.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20Base { function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint amount) external returns (bool); function transfer(address to, uint amount) external returns (bool); function transferFrom(address from, address to, uint amount) external returns (bool); event Approval(address indexed owner, address indexed spender, uint amount); event Transfer(address indexed from, address indexed to, uint amount); } // File contracts/interfaces/token/IERC20.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20 is IERC20Base { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } // File contracts/interfaces/token/IERC20Permit.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20Permit is IERC20 { function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; function nonces(address owner) external view returns (uint); function DOMAIN_SEPARATOR() external view returns (bytes32); } // File contracts/interfaces/token/IERC20Permit2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC20Permit2 is IERC20Permit { function permit2(address owner, address spender, uint amount, uint deadline, bytes calldata signature) external; } // File contracts/interfaces/pool/IBasePool.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IBasePool is IPool, IERC20Permit2 { function token0() external view returns (address); function token1() external view returns (address); function reserve0() external view returns (uint); function reserve1() external view returns (uint); function invariantLast() external view returns (uint); function getReserves() external view returns (uint, uint); function getAmountOut(address tokenIn, uint amountIn, address sender) external view returns (uint amountOut); function getAmountIn(address tokenOut, uint amountOut, address sender) external view returns (uint amountIn); event Mint( address indexed sender, uint amount0, uint amount1, uint liquidity, address indexed to ); event Burn( address indexed sender, uint amount0, uint amount1, uint liquidity, address indexed to ); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync( uint reserve0, uint reserve1 ); } // File contracts/interfaces/pool/IBasePoolV2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IBasePoolV2 is IBasePool { function poolVersion() external view returns (uint); function sync() external; event MintProtocolFee( address indexed feeRecipient, uint24 protocolFee, uint liquidity, uint totalSupply ); event Swapped( address indexed sender, address indexed user, address indexed tokenOut, uint amountIn, uint amountOut, uint24 swapFee, address to ); event Fee( uint amount0, uint amount1 ); } // File contracts/interfaces/pool/IClassicPoolV2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IClassicPoolV2 is IBasePoolV2 { } // File contracts/interfaces/vault/IERC3156FlashBorrower.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC3156FlashBorrower { /** * @dev Receive a flash loan. * @param initiator The initiator of the loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @param fee The additional amount of tokens to repay. * @param data Arbitrary data structure, intended to contain user-defined parameters. * @return The keccak256 hash of "ERC3156FlashBorrower.onFlashLoan" */ function onFlashLoan( address initiator, address token, uint256 amount, uint256 fee, bytes calldata data ) external returns (bytes32); } // File contracts/interfaces/vault/IERC3156FlashLender.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC3156FlashLender { /** * @dev The amount of currency available to be lent. * @param token The loan currency. * @return The amount of `token` that can be borrowed. */ function maxFlashLoan( address token ) external view returns (uint256); /** * @dev The fee to be charged for a given loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @return The amount of `token` to be charged for the loan, on top of the returned principal. */ function flashFee( address token, uint256 amount ) external view returns (uint256); /** * @dev Initiate a flash loan. * @param receiver The receiver of the tokens in the loan, and the receiver of the callback. * @param token The loan currency. * @param amount The amount of tokens lent. * @param data Arbitrary data structure, intended to contain user-defined parameters. */ function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) external returns (bool); } // File contracts/interfaces/pool/IPoolFlashLoan.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IPoolFlashLoan is IERC3156FlashLender { /** * @dev Emitted for each individual flash loan performed by `flashLoan`. */ event FlashLoan(address indexed recipient, address indexed token, uint amount, uint feeAmount); } // File contracts/interfaces/vault/IFlashLoanRecipient.sol // Original license: SPDX_License_Identifier: GPL-3.0-or-later pragma solidity >=0.7.0 <0.9.0; // Inspired by Aave Protocol's IFlashLoanReceiver. interface IFlashLoanRecipient { /** * @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient. * * At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this * call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the * Vault, or else the entire flash loan will revert. * * `userData` is the same value passed in the `IVault.flashLoan` call. */ function receiveFlashLoan( address[] memory tokens, uint[] memory amounts, uint[] memory feeAmounts, bytes memory userData ) external; } // File contracts/interfaces/vault/IFlashLoan.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IFlashLoan is IERC3156FlashLender { function flashLoanFeePercentage() external view returns (uint); /** * @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it, * and then reverting unless the tokens plus a proportional protocol fee have been returned. * * The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount * for each token contract. `tokens` must be sorted in ascending order. * * The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the * `receiveFlashLoan` call. * * Emits `FlashLoan` events. */ function flashLoanMultiple( IFlashLoanRecipient recipient, address[] memory tokens, uint[] memory amounts, bytes memory userData ) external; /** * @dev Emitted for each individual flash loan performed by `flashLoan`. */ event FlashLoan(address indexed recipient, address indexed token, uint amount, uint feeAmount); } // File contracts/interfaces/vault/IVault.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IVault is IFlashLoan { function wETH() external view returns (address); function reserves(address token) external view returns (uint reserve); function balanceOf(address token, address owner) external view returns (uint balance); function deposit(address token, address to) external payable returns (uint amount); function depositETH(address to) external payable returns (uint amount); function transferAndDeposit(address token, address to, uint amount) external payable returns (uint); function transfer(address token, address to, uint amount) external; function withdraw(address token, address to, uint amount) external; function withdrawAlternative(address token, address to, uint amount, uint8 mode) external; function withdrawETH(address to, uint amount) external; } // File contracts/interfaces/token/IERC165.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); } // File contracts/libraries/ECDSA.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. * * Based on OpenZeppelin's ECDSA library. * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/561d1061fc568f04c7a65853538e834a889751e8/contracts/utils/cryptography/ECDSA.sol */ library ECDSA { /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { // Check the signature length if (signature.length != 65) { return address(0); } // Divide the signature in r, s and v variables bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. /// @solidity memory-safe-assembly // solhint-disable-next-line no-inline-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return address(0); } return ecrecover(hash, v, r, s); } } // File contracts/libraries/SignatureChecker.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /** * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA * signatures from externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets like * Argent and Gnosis Safe. * * Based on OpenZeppelin's SignatureChecker library. * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/561d1061fc568f04c7a65853538e834a889751e8/contracts/utils/cryptography/SignatureChecker.sol */ library SignatureChecker { bytes4 constant internal MAGICVALUE = 0x1626ba7e; // bytes4(keccak256("isValidSignature(bytes32,bytes)") /** * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the * signature is validated against that smart contract using ERC1271, otherwise it's validated using `ECDSA.recover`. * * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus * change through time. It could return true at block N and false at block N+1 (or the opposite). */ function isValidSignatureNow( address signer, bytes32 hash, bytes memory signature ) internal view returns (bool) { (address recovered) = ECDSA.recover(hash, signature); if (recovered == signer) { if (recovered != address(0)) { return true; } } (bool success, bytes memory result) = signer.staticcall( abi.encodeWithSelector(MAGICVALUE, hash, signature) ); return ( success && result.length == 32 && abi.decode(result, (bytes32)) == bytes32(MAGICVALUE) ); } } // File contracts/libraries/ERC20Permit2.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; error Expired(); error InvalidSignature(); /** * @dev A simple ERC20 implementation for pool's liquidity token, supports permit by both ECDSA signatures from * externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets like Argent. * * Based on Solmate's ERC20. * https://github.com/transmissions11/solmate/blob/bff24e835192470ed38bf15dbed6084c2d723ace/src/tokens/ERC20.sol */ contract ERC20Permit2 is IERC165, IERC20Permit2 { uint8 public immutable override decimals = 18; uint public override totalSupply; mapping(address => uint) public override balanceOf; mapping(address => mapping(address => uint)) public override allowance; bytes32 private constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)") mapping(address => uint) public override nonces; // These members are actually immutable as // `_initialize` will only indent to be called once. string public override name; string public override symbol; uint private INITIAL_CHAIN_ID; bytes32 private INITIAL_DOMAIN_SEPARATOR; function _initialize(string memory _name, string memory _symbol) internal { name = _name; symbol = _symbol; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = _computeDomainSeparator(); } function supportsInterface(bytes4 interfaceID) external pure override returns (bool) { return interfaceID == this.supportsInterface.selector || // ERC-165 interfaceID == this.permit.selector || // ERC-2612 interfaceID == this.permit2.selector; // Permit2 } function DOMAIN_SEPARATOR() public view override returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : _computeDomainSeparator(); } function _computeDomainSeparator() private view returns (bytes32) { return keccak256( abi.encode( // keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)") 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f, keccak256(bytes(name)), // keccak256(bytes("1")) 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6, block.chainid, address(this) ) ); } function _approve(address _owner, address _spender, uint _amount) private { allowance[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } function approve(address _spender, uint _amount) public override returns (bool) { _approve(msg.sender, _spender, _amount); return true; } function transfer(address _to, uint _amount) public override returns (bool) { balanceOf[msg.sender] -= _amount; // Cannot overflow because the sum of all user balances can't exceed the max uint256 value. unchecked { balanceOf[_to] += _amount; } emit Transfer(msg.sender, _to, _amount); return true; } function transferFrom(address _from, address _to, uint _amount) public override returns (bool) { uint256 _allowed = allowance[_from][msg.sender]; // Saves gas for limited approvals. if (_allowed != type(uint).max) { allowance[_from][msg.sender] = _allowed - _amount; } balanceOf[_from] -= _amount; // Cannot overflow because the sum of all user balances can't exceed the max uint256 value. unchecked { balanceOf[_to] += _amount; } emit Transfer(_from, _to, _amount); return true; } function _mint(address _to, uint _amount) internal { totalSupply += _amount; // Cannot overflow because the sum of all user balances can't exceed the max uint256 value. unchecked { balanceOf[_to] += _amount; } emit Transfer(address(0), _to, _amount); } function _burn(address _from, uint _amount) internal { balanceOf[_from] -= _amount; // Cannot underflow because a user's balance will never be larger than the total supply. unchecked { totalSupply -= _amount; } emit Transfer(_from, address(0), _amount); } modifier ensures(uint _deadline) { // solhint-disable-next-line not-rely-on-time if (block.timestamp > _deadline) { revert Expired(); } _; } function _permitHash( address _owner, address _spender, uint _amount, uint _deadline ) private returns (bytes32) { return keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256(abi.encode(PERMIT_TYPEHASH, _owner, _spender, _amount, nonces[_owner]++, _deadline)) ) ); } function permit( address _owner, address _spender, uint _amount, uint _deadline, uint8 _v, bytes32 _r, bytes32 _s ) public override ensures(_deadline) { bytes32 _hash = _permitHash(_owner, _spender, _amount, _deadline); address _recoveredAddress = ecrecover(_hash, _v, _r, _s); if (_recoveredAddress != _owner) { revert InvalidSignature(); } if (_recoveredAddress == address(0)) { revert InvalidSignature(); } _approve(_owner, _spender, _amount); } function permit2( address _owner, address _spender, uint _amount, uint _deadline, bytes calldata _signature ) public override ensures(_deadline) { bytes32 _hash = _permitHash(_owner, _spender, _amount, _deadline); if (!SignatureChecker.isValidSignatureNow(_owner, _hash, _signature)) { revert InvalidSignature(); } _approve(_owner, _spender, _amount); } } // File contracts/pool/BasePoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; error InvalidTokens(); abstract contract BasePoolFactory is IBasePoolFactory { /// @dev The pool master that control fees and registry. address public immutable master; /// @dev Pools by its two pool tokens. mapping(address => mapping(address => address)) public override getPool; bytes internal cachedDeployData; constructor(address _master) { master = _master; } function getDeployData() external view override returns (bytes memory deployData) { deployData = cachedDeployData; } function getSwapFee( address pool, address sender, address tokenIn, address tokenOut, bytes calldata data ) external view override returns (uint24 swapFee) { swapFee = IPoolMaster(master).getSwapFee(pool, sender, tokenIn, tokenOut, data); } function createPool(bytes calldata data) external override returns (address pool) { (address tokenA, address tokenB) = abi.decode(data, (address, address)); // Perform safety checks. if (tokenA == tokenB) { revert InvalidTokens(); } // Sort tokens. if (tokenB < tokenA) { (tokenA, tokenB) = (tokenB, tokenA); } if (tokenA == address(0)) { revert InvalidTokens(); } // Underlying implementation to deploy the pools and register them. pool = _createPool(tokenA, tokenB); // Populate mapping in both directions. // Not necessary as existence of the master, but keep them for better compatibility. getPool[tokenA][tokenB] = pool; getPool[tokenB][tokenA] = pool; emit PoolCreated(tokenA, tokenB, pool); } function _createPool(address tokenA, address tokenB) internal virtual returns (address) { } } // File contracts/interfaces/ICallback.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; /// @dev The callback interface for SyncSwap base pool operations. /// Note additional checks will be required for some callbacks, see below for more information. /// Visit the documentation https://syncswap.gitbook.io/api-documentation/ for more details. interface ICallback { struct BaseMintCallbackParams { address sender; address to; uint reserve0; uint reserve1; uint balance0; uint balance1; uint amount0; uint amount1; uint fee0; uint fee1; uint newInvariant; uint oldInvariant; uint totalSupply; uint liquidity; uint24 swapFee; bytes callbackData; } function syncSwapBaseMintCallback(BaseMintCallbackParams calldata params) external; struct BaseBurnCallbackParams { address sender; address to; uint balance0; uint balance1; uint liquidity; uint totalSupply; uint amount0; uint amount1; uint8 withdrawMode; bytes callbackData; } function syncSwapBaseBurnCallback(BaseBurnCallbackParams calldata params) external; struct BaseBurnSingleCallbackParams { address sender; address to; address tokenIn; address tokenOut; uint balance0; uint balance1; uint liquidity; uint totalSupply; uint amount0; uint amount1; uint amountOut; uint amountSwapped; uint feeIn; uint24 swapFee; uint8 withdrawMode; bytes callbackData; } function syncSwapBaseBurnSingleCallback(BaseBurnSingleCallbackParams calldata params) external; struct BaseSwapCallbackParams { address sender; address to; address tokenIn; address tokenOut; uint reserve0; uint reserve1; uint balance0; uint balance1; uint amountIn; uint amountOut; uint feeIn; uint24 swapFee; uint8 withdrawMode; bytes callbackData; } function syncSwapBaseSwapCallback(BaseSwapCallbackParams calldata params) external; } // File contracts/interfaces/IOwnable.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IOwnable { function owner() external view returns (address); } // File contracts/interfaces/IWETH.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function withdraw(uint) external; } // File contracts/interfaces/master/IFeeRecipient.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity >=0.5.0; interface IFeeRecipient { /// @dev Notifies the fee recipient after sent fees. function notifyFees( uint16 feeType, address token, uint amount, uint feeRate, bytes calldata data ) external; } // File contracts/libraries/Math.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /// @dev Math functions. /// @dev Modified from Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/FixedPointMathLib.sol) library Math { function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function sqrtInt(uint256 x) internal pure returns (uint256) { if (x == 0) { return 0; } uint z = (x + 1e18) / 2; uint y = x; for (uint i; i < 256; ) { if (z == y) { return y; } y = z; z = (x * 1e18 / z + z) / 2; unchecked { ++i; } } revert(); } function geometricMean(uint a, uint b) internal pure returns (uint) { return Math.sqrt(a * b); } /// @notice Compares a and b and returns 'true' if the difference between a and b /// is less than 1 or equal to each other. /// @param a uint256 to compare with. /// @param b uint256 to compare with. function within1(uint256 a, uint256 b) internal pure returns (bool) { unchecked { if (a > b) { return a - b <= 1; } return b - a <= 1; } } /// @dev Returns the square root of `x`. function sqrt(uint256 x) internal pure returns (uint256 z) { /// @solidity memory-safe-assembly assembly { // `floor(sqrt(2**15)) = 181`. `sqrt(2**15) - 181 = 2.84`. z := 181 // The "correct" value is 1, but this saves a multiplication later. // This segment is to get a reasonable initial estimate for the Babylonian method. With a bad // start, the correct # of bits increases ~linearly each iteration instead of ~quadratically. // Let `y = x / 2**r`. // We check `y >= 2**(k + 8)` but shift right by `k` bits // each branch to ensure that if `x >= 256`, then `y >= 256`. let r := shl(7, lt(0xffffffffffffffffffffffffffffffffff, x)) r := or(r, shl(6, lt(0xffffffffffffffffff, shr(r, x)))) r := or(r, shl(5, lt(0xffffffffff, shr(r, x)))) r := or(r, shl(4, lt(0xffffff, shr(r, x)))) z := shl(shr(1, r), z) // Goal was to get `z*z*y` within a small factor of `x`. More iterations could // get y in a tighter range. Currently, we will have y in `[256, 256*(2**16))`. // We ensured `y >= 256` so that the relative difference between `y` and `y+1` is small. // That's not possible if `x < 256` but we can just verify those cases exhaustively. // Now, `z*z*y <= x < z*z*(y+1)`, and `y <= 2**(16+8)`, and either `y >= 256`, or `x < 256`. // Correctness can be checked exhaustively for `x < 256`, so we assume `y >= 256`. // Then `z*sqrt(y)` is within `sqrt(257)/sqrt(256)` of `sqrt(x)`, or about 20bps. // For `s` in the range `[1/256, 256]`, the estimate `f(s) = (181/1024) * (s+1)` // is in the range `(1/2.84 * sqrt(s), 2.84 * sqrt(s))`, // with largest error when `s = 1` and when `s = 256` or `1/256`. // Since `y` is in `[256, 256*(2**16))`, let `a = y/65536`, so that `a` is in `[1/256, 256)`. // Then we can estimate `sqrt(y)` using // `sqrt(65536) * 181/1024 * (a + 1) = 181/4 * (y + 65536)/65536 = 181 * (y + 65536)/2**18`. // There is no overflow risk here since `y < 2**136` after the first branch above. z := shr(18, mul(z, add(shr(r, x), 65536))) // A `mul()` is saved from starting `z` at 181. // Given the worst case multiplicative error of 2.84 above, 7 iterations should be enough. z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) z := shr(1, add(z, div(x, z))) // If `x+1` is a perfect square, the Babylonian method cycles between // `floor(sqrt(x))` and `ceil(sqrt(x))`. This statement ensures we return floor. // See: https://en.wikipedia.org/wiki/Integer_square_root#Using_only_integer_division // Since the ceil is rare, we save gas on the assignment and repeat division in the rare case. // If you don't care whether the floor or ceil square root is returned, you can remove this statement. z := sub(z, lt(div(x, z), z)) } } // Mul Div /// @dev Rounded down. function mulDiv( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(denominator != 0 && (x == 0 || (x * y) / x == y)) if iszero(and(iszero(iszero(denominator)), or(iszero(x), eq(div(z, x), y)))) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } /// @dev Rounded down. /// This function assumes that `x` is not zero, and must be checked externally. /// Reverts if x is zero. function mulDivUnsafeFirst( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(denominator != 0 && (x * y) / x == y) if iszero(and(iszero(iszero(denominator)), eq(div(z, x), y))) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } /// @dev Rounded down. /// This function assumes that `denominator` is not zero, and must be checked externally. /// This allows x to be zero. function mulDivUnsafeLast( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(x == 0 || (x * y) / x == y) if iszero(or(iszero(x), eq(div(z, x), y))) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } /// @dev Rounded down. /// This function assumes that both `x` and `denominator` are not zero, and must be checked externally. /// Reverts if x is zero. function mulDivUnsafeFirstLast( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require((x * y) / x == y) if iszero(eq(div(z, x), y)) { revert(0, 0) } // Divide z by the denominator. z := div(z, denominator) } } // Mul /// @dev Optimized safe multiplication operation for minimal gas cost. /// Equivalent to * function mul( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require(x == 0 || (x * y) / x == y) if iszero(or(iszero(x), eq(div(z, x), y))) { revert(0, 0) } } } /// @dev Optimized unsafe multiplication operation for minimal gas cost. /// This function assumes that `x` is not zero, and must be checked externally. /// Reverts if x is zero. function mulUnsafeFirst( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) // Equivalent to require((x * y) / x == y) if iszero(eq(div(z, x), y)) { revert(0, 0) } } } function mulUnsafe( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x * y in z for now. z := mul(x, y) } } // Div /// @dev Optimized safe division operation for minimal gas cost. /// Equivalent to / function div( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { // Store x / y in z for now. z := div(x, y) // Equivalent to require(y != 0) if iszero(y) { revert(0, 0) } } } /// @dev Optimized unsafe division operation for minimal gas cost. /// Division by 0 will not reverts and returns 0, and must be checked externally. function divUnsafeLast( uint256 x, uint256 y ) internal pure returns (uint256 z) { assembly { z := div(x, y) } } } // File contracts/libraries/MetadataHelper.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; library MetadataHelper { /** * @dev Returns symbol of the token. * * @param token The address of a ERC20 token. * * Return boolean indicating the status and the symbol as string; * * NOTE: Symbol is not the standard interface and some tokens may not support it. * Calling against these tokens will not success, with an empty result. */ function getSymbol(address token) internal view returns (bool, string memory) { // bytes4(keccak256(bytes("symbol()"))) (bool success, bytes memory returndata) = token.staticcall(abi.encodeWithSelector(0x95d89b41)); if (success) { return (true, abi.decode(returndata, (string))); } else { return (false, ""); } } } // File contracts/libraries/TransferHelper.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; /// @dev The ETH transfer has failed. error ETHTransferFailed(); /// @dev The ERC20 `transferFrom` has failed. error TransferFromFailed(); /// @dev The ERC20 `transfer` has failed. error TransferFailed(); /// @dev The ERC20 `approve` has failed. error ApproveFailed(); /// @dev Helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true / false. library TransferHelper { function safeApprove( address token, address to, uint value ) internal { // bytes4(keccak256(bytes("approve(address,uint256)"))); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); if (!success || (data.length != 0 && !abi.decode(data, (bool)))) { revert ApproveFailed(); } } function safeTransfer( address token, address to, uint value ) internal { // bytes4(keccak256(bytes("transfer(address,uint256)"))); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); if (!success || (data.length != 0 && !abi.decode(data, (bool)))) { revert TransferFailed(); } } function safeTransferFrom( address token, address from, address to, uint value ) internal { // bytes4(keccak256(bytes("transferFrom(address,address,uint256)"))); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); if (!success || (data.length != 0 && !abi.decode(data, (bool)))) { revert TransferFromFailed(); } } function safeTransferETH(address to, uint value) internal { // solhint-disable-next-line avoid-low-level-calls (bool success, ) = to.call{value: value}(""); if (!success) { revert ETHTransferFailed(); } } } // File contracts/libraries/ReentrancyGuard.sol // Original license: SPDX_License_Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { /// @dev Public to allow external contracts to read the status. uint256 public reentrantStatus = 1; /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(reentrantStatus == 1); // Any calls to nonReentrant after this point will fail reentrantStatus = 2; _; reentrantStatus = 1; } } // File contracts/pool/PoolFlashLoans.sol // Original license: SPDX_License_Identifier: GPL-3.0-or-later pragma solidity ^0.8.0; /** * @dev Handles Flash Loans through the Pool. */ abstract contract PoolFlashLoans is IPoolFlashLoan, ReentrancyGuard { uint private constant FLASH_LOAN_FEE = 5e15; // 0.5% bytes32 private constant ERC3156_CALLBACK_SUCCESS = keccak256("ERC3156FlashBorrower.onFlashLoan"); /** * @dev Returns the protocol fee amount to charge for a flash loan of `amount`. */ function _calculateFlashLoanFeeAmount(uint amount) private pure returns (uint) { return amount * FLASH_LOAN_FEE / 1e18; } function _payFeeAmount(address token, uint amount) private { if (amount != 0) { address _feeRecipient = _getFeeRecipient(); if (_feeRecipient != address(0)) { TransferHelper.safeTransfer(token, _feeRecipient, amount); IFeeRecipient(_feeRecipient).notifyFees(10, token, amount, FLASH_LOAN_FEE, abi.encode(2)); } } } function _getFeeRecipient() internal virtual view returns (address) {} // EIP-3156 Implementations /** * @dev The amount of currency available to be lent. * @param token The loan currency. * @return The amount of `token` that can be borrowed. */ function maxFlashLoan(address token) external view override returns (uint256) { return IERC20(token).balanceOf(address(this)); } /** * @dev The fee to be charged for a given loan. * @param amount The amount of tokens lent. * @return The amount of `token` to be charged for the loan, on top of the returned principal. */ function flashFee(address /*token*/, uint256 amount) external pure override returns (uint256) { return _calculateFlashLoanFeeAmount(amount); } /** * @dev Initiate a flash loan. * @param receiver The receiver of the tokens in the loan, and the receiver of the callback. * @param token The loan currency. * @param amount The amount of tokens lent. * @param userData Arbitrary data structure, intended to contain user-defined parameters. */ function flashLoan( IERC3156FlashBorrower receiver, address token, uint amount, bytes memory userData ) external override nonReentrant returns (bool) { uint preLoanBalance = IERC20(token).balanceOf(address(this)); uint feeAmount = _calculateFlashLoanFeeAmount(amount); require(preLoanBalance >= amount, "INSUFFICIENT_FLASH_LOAN_BALANCE"); TransferHelper.safeTransfer(token, address(receiver), amount); require( receiver.onFlashLoan(msg.sender, token, amount, feeAmount, userData) == ERC3156_CALLBACK_SUCCESS, "IERC3156_CALLBACK_FAILED" ); // Checking for loan repayment first (without accounting for fees) makes for simpler debugging, and results // in more accurate revert reasons if the flash loan protocol fee percentage is zero. uint postLoanBalance = IERC20(token).balanceOf(address(this)); require(postLoanBalance >= preLoanBalance, "INVALID_POST_LOAN_BALANCE"); // No need for checked arithmetic since we know the loan was fully repaid. uint receivedFeeAmount = postLoanBalance - preLoanBalance; require(receivedFeeAmount >= feeAmount, "INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT"); _payFeeAmount(token, receivedFeeAmount); emit FlashLoan(address(receiver), token, amount, receivedFeeAmount); return true; } } // File contracts/pool/classic/SyncSwapClassicPool.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; //import "../../libraries/ReentrancyGuard.sol"; error Overflow(); error InsufficientLiquidityMinted(); contract SyncSwapClassicPool is IClassicPoolV2, ERC20Permit2, PoolFlashLoans { using Math for uint; uint private constant MINIMUM_LIQUIDITY = 1000; uint private constant MAX_FEE = 1e5; /// @dev 100%. address private immutable wETH; uint public constant override poolVersion = 2; /// @dev Pool type `1` for classic pools. uint16 public constant override poolType = 1; address public immutable override vault; address public immutable override master; address public immutable override token0; address public immutable override token1; /// @dev Pool reserve of each pool token as of immediately after the most recent balance event. /// The value is used to measure growth in invariant on mints and input tokens on swaps. uint128 private reserve0_; uint128 private reserve1_; function reserve0() external view override returns (uint _reserve0) { _reserve0 = reserve0_; } function reserve1() external view override returns (uint _reserve1) { _reserve1 = reserve1_; } /// @dev Invariant of the pool as of immediately after the most recent liquidity event. /// The value is used to measure growth in invariant when protocol fee is enabled, /// and will be reset to zero if protocol fee is disabled. uint public override invariantLast; receive() external payable {} /// @dev Factory must ensures that the parameters are valid. constructor() { (bytes memory _deployData) = IPoolFactory(msg.sender).getDeployData(); (address _token0, address _token1) = abi.decode(_deployData, (address, address)); address _master = IPoolFactory(msg.sender).master(); master = _master; wETH = IPoolMaster(_master).wETH(); vault = IPoolMaster(_master).vault(); (token0, token1) = (_token0, _token1); // try to set symbols for the LP token (bool _success0, string memory _symbol0) = MetadataHelper.getSymbol(_token0); (bool _success1, string memory _symbol1) = MetadataHelper.getSymbol(_token1); if (_success0 && _success1) { _initialize( string(abi.encodePacked("SyncSwap Classic LP")), string(abi.encodePacked(_symbol0, "/", _symbol1, "-C")) ); } else { _initialize("SLP", "SLP"); } } function getAssets() external view override returns (address[] memory assets) { assets = new address[](2); assets[0] = token0; assets[1] = token1; } /// @dev Returns the verified sender address otherwise `address(0)`. function _getVerifiedSender(address _sender) private view returns (address) { if (_sender != msg.sender) { // The sender from non-forwarder is invalid. try IPoolMaster(master).isForwarder(msg.sender) returns (bool _isTrustedForwarder) { return _isTrustedForwarder ? _sender : msg.sender; } catch { return msg.sender; } } return msg.sender; } /// @dev Mints LP tokens - should be called via the router after transferring pool tokens. /// The router should ensure that sufficient LP tokens are minted. function mint( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (uint) { ICallback.BaseMintCallbackParams memory params; (params.to) = abi.decode(_data, (address)); (params.reserve0, params.reserve1) = getReserves(); (params.balance0, params.balance1) = _balances(); params.newInvariant = _computeInvariant(params.balance0, params.balance1); params.amount0 = params.balance0 - params.reserve0; params.amount1 = params.balance1 - params.reserve1; // Gets swap fee for the sender. _sender = _getVerifiedSender(_sender); uint _amount1Optimal = params.reserve0 == 0 ? 0 : Math.mulDivUnsafeLast(params.amount0, params.reserve1, params.reserve0); bool _swap0For1 = params.amount1 < _amount1Optimal; if (_swap0For1) { params.swapFee = _getSwapFee(_sender, token0, token1); } else { params.swapFee = _getSwapFee(_sender, token1, token0); } // Adds mint fee to reserves (applies to invariant increase) if unbalanced. (params.fee0, params.fee1) = _unbalancedMintFee(params.swapFee, params.amount0, params.amount1, _amount1Optimal, params.reserve0, params.reserve1); params.reserve0 += params.fee0; params.reserve1 += params.fee1; emit Fee(params.fee0, params.fee1); // Calculates old invariant (where unbalanced fee added to) and, mint protocol fee if any. params.oldInvariant = _computeInvariant(params.reserve0, params.reserve1); bool _feeOn; (_feeOn, params.totalSupply) = _mintProtocolFee(0, 0, params.oldInvariant); if (params.totalSupply == 0) { params.liquidity = params.newInvariant - MINIMUM_LIQUIDITY; _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock on first mint. } else { // Calculates liquidity proportional to invariant growth. params.liquidity = Math.mulDivUnsafeFirst(params.totalSupply, params.newInvariant - params.oldInvariant, params.oldInvariant); } // Mints liquidity for recipient. if (params.liquidity == 0) { revert InsufficientLiquidityMinted(); } _mint(params.to, params.liquidity); // Updates reserves and last invariant with new balances. _updateReserves(params.balance0, params.balance1); if (_feeOn) { invariantLast = params.newInvariant; } // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _sender; params.callbackData = _callbackData; ICallback(_callback).syncSwapBaseMintCallback(params); } emit Mint(msg.sender, params.amount0, params.amount1, params.liquidity, params.to); return params.liquidity; } /// @dev Burns LP tokens sent to this contract. /// The router should ensure that sufficient pool tokens are received. function burn( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (TokenAmount[] memory _amounts) { ICallback.BaseBurnCallbackParams memory params; (params.to, params.withdrawMode) = abi.decode(_data, (address, uint8)); (params.balance0, params.balance1) = _balances(); params.liquidity = balanceOf[address(this)]; // Mints protocol fee if any. bool _feeOn; (_feeOn, params.totalSupply) = _mintProtocolFee(params.balance0, params.balance1, 0); // Calculates amounts of pool tokens proportional to balances. // require(params.liquidity != 0); params.amount0 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance0, params.totalSupply); params.amount1 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance1, params.totalSupply); // Burns liquidity. _burn(address(this), params.liquidity); // Updates balances. /// @dev Cannot underflow because amounts are lesser figures derived from balances. unchecked { params.balance0 -= params.amount0; params.balance1 -= params.amount1; } // Updates reserves and last invariant with up-to-date balances (after transfers). _updateReserves(params.balance0, params.balance1); if (_feeOn) { invariantLast = _computeInvariant(params.balance0, params.balance1); } // Transfers pool tokens. _transferTokens(token0, params.to, params.amount0, params.withdrawMode); _transferTokens(token1, params.to, params.amount1, params.withdrawMode); // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _getVerifiedSender(_sender); params.callbackData = _callbackData; ICallback(_callback).syncSwapBaseBurnCallback(params); } _amounts = new TokenAmount[](2); _amounts[0] = TokenAmount(token0, params.amount0); _amounts[1] = TokenAmount(token1, params.amount1); emit Burn(msg.sender, params.amount0, params.amount1, params.liquidity, params.to); } /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another /// - i.e., the user gets a single token out by burning LP tokens. /// The router should ensure that sufficient pool tokens are received. function burnSingle( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (TokenAmount memory _tokenAmount) { ICallback.BaseBurnSingleCallbackParams memory params; (params.tokenOut, params.to, params.withdrawMode) = abi.decode(_data, (address, address, uint8)); (params.balance0, params.balance1) = _balances(); params.liquidity = balanceOf[address(this)]; // Mints protocol fee if any. bool _feeOn; (_feeOn, params.totalSupply) = _mintProtocolFee(params.balance0, params.balance1, 0); // Calculates amounts of pool tokens proportional to balances. require(params.liquidity != 0); params.amount0 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance0, params.totalSupply); params.amount1 = Math.mulDivUnsafeFirstLast(params.liquidity, params.balance1, params.totalSupply); // Burns liquidity. _burn(address(this), params.liquidity); // Gets swap fee for the sender. _sender = _getVerifiedSender(_sender); // Swaps one token for another, transfers desired tokens, and update context values. /// @dev Calculate `amountOut` as if the user first withdraw balanced liquidity and then swapped from one token for another. if (params.tokenOut == token1) { // Swaps `token0` for `token1`. params.swapFee = _getSwapFee(_sender, token0, token1); params.tokenIn = token0; (params.amountSwapped, params.feeIn) = _getAmountOut( params.swapFee, params.amount0, params.balance0 - params.amount0, params.balance1 - params.amount1, true ); params.amount1 += params.amountSwapped; params.amountOut = params.amount1; params.amount0 = 0; params.balance1 -= params.amount1; emit Fee(params.feeIn, 0); } else { // Swaps `token1` for `token0`. require(params.tokenOut == token0); params.swapFee = _getSwapFee(_sender, token1, token0); params.tokenIn = token1; (params.amountSwapped, params.feeIn) = _getAmountOut( params.swapFee, params.amount1, params.balance0 - params.amount0, params.balance1 - params.amount1, false ); params.amount0 += params.amountSwapped; params.amountOut = params.amount0; params.amount1 = 0; params.balance0 -= params.amount0; emit Fee(0, params.feeIn); } require(params.amountOut != 0); // Updates reserves and last invariant with up-to-date balances (updated above). _updateReserves(params.balance0, params.balance1); if (_feeOn) { invariantLast = _computeInvariant(params.balance0, params.balance1); } // Transfers output tokens. _transferTokens(params.tokenOut, params.to, params.amountOut, params.withdrawMode); // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _sender; params.callbackData = _callbackData; /// @dev Note the `tokenOut` parameter can be decided by the caller, and the correctness is not guaranteed. /// Additional checks MUST be performed in callback to ensure the `tokenOut` is one of the pools tokens if the sender /// is not a trusted source to avoid potential issues. ICallback(_callback).syncSwapBaseBurnSingleCallback(params); } _tokenAmount = TokenAmount(params.tokenOut, params.amountOut); emit Burn(msg.sender, params.amount0, params.amount1, params.liquidity, params.to); } /// @dev Swaps one token for another - should be called via the router after transferring input tokens. /// The router should ensure that sufficient output tokens are received. function swap( bytes calldata _data, address _sender, address _callback, bytes calldata _callbackData ) external override nonReentrant returns (TokenAmount memory _tokenAmount) { ICallback.BaseSwapCallbackParams memory params; (params.tokenIn, params.to, params.withdrawMode) = abi.decode(_data, (address, address, uint8)); (params.reserve0, params.reserve1) = getReserves(); (params.balance0, params.balance1) = _balances(); // Gets swap fee for the sender. _sender = _getVerifiedSender(_sender); // Calculates output amount, update context values and emit event. if (params.tokenIn == token0) { params.swapFee = _getSwapFee(_sender, token0, token1); params.tokenOut = token1; params.amountIn = params.balance0 - params.reserve0; (params.amountOut, params.feeIn) = _getAmountOut( params.swapFee, params.amountIn, params.reserve0, params.reserve1, true ); params.balance1 -= params.amountOut; emit Swap(msg.sender, params.amountIn, 0, 0, params.amountOut, params.to); emit Fee(params.feeIn, 0); } else { require(params.tokenIn == token1); params.swapFee = _getSwapFee(_sender, token1, token0); params.tokenOut = token0; params.amountIn = params.balance1 - params.reserve1; (params.amountOut, params.feeIn) = _getAmountOut( params.swapFee, params.amountIn, params.reserve0, params.reserve1, false ); params.balance0 -= params.amountOut; emit Swap(msg.sender, 0, params.amountIn, params.amountOut, 0, params.to); emit Fee(0, params.feeIn); } require(params.amountIn != 0 && params.amountOut != 0); // Updates reserves with up-to-date balances (updated above). _updateReserves(params.balance0, params.balance1); // Transfers output tokens. _transferTokens(params.tokenOut, params.to, params.amountOut, params.withdrawMode); // Calls callback with data. if (_callback != address(0)) { // Fills additional values for callback params. params.sender = _sender; params.callbackData = _callbackData; ICallback(_callback).syncSwapBaseSwapCallback(params); } _tokenAmount.token = params.tokenOut; _tokenAmount.amount = params.amountOut; emit Swapped( msg.sender, _sender, params.tokenOut, params.amountIn, params.amountOut, params.swapFee, params.to ); } function _getSwapFee(address _sender, address _tokenIn, address _tokenOut) private view returns (uint24 _swapFee) { _swapFee = getSwapFee(_sender, _tokenIn, _tokenOut, abi.encode(msg.sender)); } /// @dev This function doesn't check the forwarder. function getSwapFee(address _sender, address _tokenIn, address _tokenOut, bytes memory data) public view override returns (uint24) { try IPoolMaster(master).getSwapFee(address(this), _sender, _tokenIn, _tokenOut, data) returns (uint24 _swapFee) { return _swapFee; } catch { return 290; // 0.29% } //_swapFee = IPoolMaster(master).getSwapFee(address(this), _sender, _tokenIn, _tokenOut, data); } function getProtocolFee() public view override returns (uint24) { try IPoolMaster(master).getProtocolFee(address(this)) returns (uint24 _protocolFee) { return _protocolFee; } catch { return 30000; // 30% } //_protocolFee = IPoolMaster(master).getProtocolFee(address(this)); } function _updateReserves(uint _balance0, uint _balance1) private { if (_balance0 > type(uint128).max) { revert Overflow(); } if (_balance1 > type(uint128).max) { revert Overflow(); } (reserve0_, reserve1_) = (uint128(_balance0), uint128(_balance1)); emit Sync(_balance0, _balance1); } function _transferTokens(address token, address to, uint amount, uint8 withdrawMode) private { //TransferHelper.safeTransfer(token, to, amount); if (withdrawMode == 0) { TransferHelper.safeTransfer(token, vault, amount); IVault(vault).deposit(token, to); } else { if (withdrawMode == 1 && token == wETH) { IWETH(wETH).withdraw(amount); TransferHelper.safeTransferETH(to, amount); } else { TransferHelper.safeTransfer(token, to, amount); } } } function _balances() private view returns (uint _balance0, uint _balance1) { _balance0 = IERC20(token0).balanceOf(address(this)); _balance1 = IERC20(token1).balanceOf(address(this)); } /// @dev This fee is charged to cover for the swap fee when users adding unbalanced liquidity. function _unbalancedMintFee( uint _swapFee, uint _amount0, uint _amount1, uint _amount1Optimal, uint _reserve0, uint _reserve1 ) private pure returns (uint _token0Fee, uint _token1Fee) { if (_reserve0 != 0) { if (_amount1 >= _amount1Optimal) { unchecked { _token1Fee = Math.mulDivUnsafeLast(_swapFee, _amount1 - _amount1Optimal, MAX_FEE); } } else { uint _amount0Optimal = Math.mulDivUnsafeLast(_amount1, _reserve0, _reserve1); _token0Fee = Math.mulDivUnsafeLast(_swapFee, _amount0 - _amount0Optimal, MAX_FEE); } } } function _getFeeRecipient() internal view override returns (address) { try IPoolMaster(master).getFeeRecipient() returns (address _feeRecipient) { return _feeRecipient; } catch { return address(0); } } function _mintProtocolFee(uint _reserve0, uint _reserve1, uint _invariant) private returns (bool _feeOn, uint _totalSupply) { _totalSupply = totalSupply; address _feeRecipient = _getFeeRecipient(); _feeOn = (_feeRecipient != address(0)); uint _invariantLast = invariantLast; if (_invariantLast != 0) { if (_feeOn) { if (_invariant == 0) { _invariant = _computeInvariant(_reserve0, _reserve1); } if (_invariant > _invariantLast) { /// @dev Mints `protocolFee` % of growth in liquidity (invariant). uint24 _protocolFee = getProtocolFee(); uint _numerator = _totalSupply * (_invariant - _invariantLast) * _protocolFee; uint _denominator = (MAX_FEE - _protocolFee) * _invariant + _protocolFee * _invariantLast; uint _liquidity = _numerator / _denominator; if (_liquidity != 0) { _mint(_feeRecipient, _liquidity); // Notifies the fee recipient. try IFeeRecipient(_feeRecipient).notifyFees(1, address(this), _liquidity, _protocolFee, abi.encode(2)) {} catch {} _totalSupply += _liquidity; // update cached value. emit MintProtocolFee(_feeRecipient, _protocolFee, _liquidity, _totalSupply); } } } else { /// @dev Resets last invariant to clear measured growth if protocol fee is not enabled. invariantLast = 0; } } } function getReserves() public view override returns (uint _reserve0, uint _reserve1) { (_reserve0, _reserve1) = (reserve0_, reserve1_); } function getAmountOut(address _tokenIn, uint _amountIn, address _sender) external view override returns (uint _amountOut) { (uint _reserve0, uint _reserve1) = getReserves(); bool _swap0For1 = _tokenIn == token0; address _tokenOut = _swap0For1 ? token1 : token0; (_amountOut,) = _getAmountOut(_getSwapFee(_sender, _tokenIn, _tokenOut), _amountIn, _reserve0, _reserve1, _swap0For1); } function getAmountIn(address, uint, address) external pure override returns (uint) { revert(); } function _getAmountOut( uint _swapFee, uint _amountIn, uint _reserve0, uint _reserve1, bool _token0In ) private pure returns (uint _dy, uint _feeIn) { if (_amountIn != 0) { uint _amountInWithFee = Math.mulUnsafeFirst(_amountIn, MAX_FEE - _swapFee); _feeIn = Math.mulDivUnsafeFirstLast(_amountIn, _swapFee, MAX_FEE); if (_token0In) { _dy = Math.mulDiv(_amountInWithFee, _reserve1, Math.mulUnsafeFirst(MAX_FEE, _reserve0) + _amountInWithFee); } else { _dy = Math.mulDiv(_amountInWithFee, _reserve0, Math.mulUnsafeFirst(MAX_FEE, _reserve1) + _amountInWithFee); } } } function _computeInvariant(uint _reserve0, uint _reserve1) private pure returns (uint _invariant) { _invariant = (_reserve0 * _reserve1).sqrt(); } modifier onlyGovernance { require(IOwnable(master).owner() == msg.sender); _; } // force reserves to match balances function sync() external nonReentrant onlyGovernance { (uint _balance0, uint _balance1) = _balances(); _updateReserves(_balance0, _balance1); } // force balances to match reserves function skim(address to) external nonReentrant onlyGovernance { TransferHelper.safeTransfer(token0, to, IERC20(token0).balanceOf(address(this)) - reserve0_); TransferHelper.safeTransfer(token1, to, IERC20(token1).balanceOf(address(this)) - reserve1_); } } // File contracts/pool/classic/SyncSwapClassicPoolFactory.sol // Original license: SPDX_License_Identifier: AGPL-3.0-or-later pragma solidity ^0.8.0; contract SyncSwapClassicPoolFactory is BasePoolFactory { constructor(address _master) BasePoolFactory(_master) { } function _createPool(address token0, address token1) internal override returns (address pool) { // Perform sanity checks. // IERC20(token0).balanceOf(address(this)); // IERC20(token1).balanceOf(address(this)); bytes memory deployData = abi.encode(token0, token1); cachedDeployData = deployData; // The salt is same with deployment data. bytes32 salt = keccak256(deployData); pool = address(new SyncSwapClassicPool{salt: salt}()); // this will prevent duplicated pools. // Register the pool. The config is same with deployment data. IPoolMaster(master).registerPool(pool, 1, deployData, token0, token1); } }
{ "viaIR": true, "optimizer": { "enabled": true, "mode": "3" }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "isSystem": false, "forceEvmla": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETHTransferFailed","type":"error"},{"inputs":[],"name":"Expired","type":"error"},{"inputs":[],"name":"InsufficientLiquidityMinted","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"Overflow","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Fee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeRecipient","type":"address"},{"indexed":false,"internalType":"uint24","name":"protocolFee","type":"uint24"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"MintProtocolFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"},{"indexed":false,"internalType":"uint24","name":"swapFee","type":"uint24"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"Swapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reserve0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reserve1","type":"uint256"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"burn","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPool.TokenAmount[]","name":"_amounts","type":"tuple[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"burnSingle","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPool.TokenAmount","name":"_tokenAmount","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"uint256","name":"_amountIn","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"_amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssets","outputs":[{"internalType":"address[]","name":"assets","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256","name":"_reserve0","type":"uint256"},{"internalType":"uint256","name":"_reserve1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"getSwapFee","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"invariantLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"permit2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"poolType","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reentrantStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve0","outputs":[{"internalType":"uint256","name":"_reserve0","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve1","outputs":[{"internalType":"uint256","name":"_reserve1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_callback","type":"address"},{"internalType":"bytes","name":"_callbackData","type":"bytes"}],"name":"swap","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IPool.TokenAmount","name":"_tokenAmount","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
13b8683f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000072af9f169b619d85a47dfa8fefbcd39de55c567d0000000000000000000000009aa0f72392b5784ad86c6f3e899bcc053d00db4f
Deployed Bytecode
0x00040000000000020019000000000002000000600310027000000adc0030019d00000adc0430019700030000004103550002000000010355000000000341034f0000000100200190000000250000c13d0000008002000039000000400020043f000000040040008c000000370000413d000000000201043b000000e00220027000000aef0020009c0000006a0000a13d00000af00020009c000000cd0000213d00000afe0020009c0000017e0000213d00000b050020009c000002500000a13d00000b060020009c0000078a0000613d00000b070020009c000006ee0000613d00000b080020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d00000000010400192b6a23670000040f000000000100001900002b6c000104300000014008000039000000400080043f0000000001000416000000000001004b00000e910000c13d0000001201000039000000800010043f00000001010000390000000802000039000000000012041b00000add01000041000001400010043f0000000001000414000000000b0004110000000400b0008c0000003b0000c13d00000001040000310000004a0000013d000000000004004b00000e910000c13d000000000100001900002b6b0001042e00000adc0010009c00000adc01008041000000c00110021000000ade011001c700000000020b00192b6a2b650000040f000000000301034f000000600110027000010adc0010019d00000adc0410019700030000000303550000000100200190000000ef0000613d000000000b000411000001400800003900000b7c024001980000001f0540018f0000014001200039000000530000613d000000000603034f000000006706043c0000000008780436000000000018004b0000004f0000c13d000000000005004b000000600000613d000000000223034f0000000303500210000000000501043300000000053501cf000000000535022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000252019f00000000002104350000001f0140003900000b7c0110019700000ae00010009c0000007f0000413d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c0001043000000b0b0020009c0000010d0000a13d00000b0c0020009c000001be0000213d00000b130020009c000004710000a13d00000b140020009c000008a10000613d00000b150020009c0000085e0000613d00000b160020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000901000039000000000101041a00000b2901100197000000800010043f00000b2d0100004100002b6b0001042e0000014002100039000000400020043f00000ae10040009c00000e910000213d000000200040008c00000e910000413d000001400500043d00000ae20050009c00000e910000213d00000140064000390000015f03500039000000000063004b000000000700001900000ae30700804100000ae30860019700000ae303300197000000000983013f000000000083004b000000000300001900000ae30300404100000ae30090009c000000000307c019000000000003004b00000e910000c13d0000014003500039000000000303043300000ae20030009c000000640000213d0000001f0730003900000b7c077001970000003f0770003900000b7c07700197000000000827001900000ae20080009c000000640000213d0000016007500039000000400080043f00000000003204350000000005730019000000000065004b00000e910000213d0000016005100039000000000003004b000000b30000613d000000000600001900000000085600190000000009760019000000000909043300000000009804350000002006600039000000000036004b000000ac0000413d00000000035300190000000000030435000000000202043300000ae10020009c00000e910000213d000000400020008c00000e910000413d0000000002050433000d00000002001d00000ae40020009c00000e910000213d00000180011000390000000001010433000c00000001001d00000ae40010009c00000e910000213d000000400c00043d00000ae50100004100000000001c043500000000010004140000000400b0008c00000a1c0000c13d000000200040008c0000002003000039000000000304401900000a490000013d00000af10020009c000001910000213d00000af80020009c000002640000a13d00000af90020009c000007ab0000613d00000afa0020009c000007020000613d00000afb0020009c00000e910000c13d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b00000ae40020009c00000e910000213d0000002401100370000000000101043b000d00000001001d00000ae40010009c00000e910000213d000000000020043f0000000201000039000000200010043f000000400200003900000000010000192b6a2b2d0000040f0000000d020000292b6a23570000040f000000000101041a000008620000013d0000001f0540018f00000adf06400198000000400100043d0000000002610019000000fa0000613d000000000703034f0000000008010019000000007907043c0000000008980436000000000028004b000000f60000c13d000000000005004b000001070000613d000000000363034f0000000305500210000000000602043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f0000000000320435000000600240021000000adc0010009c00000adc010080410000004001100210000000000121019f00002b6c0001043000000b190020009c000001d20000a13d00000b1a0020009c0000045e0000a13d00000b1b0020009c000008900000613d00000b1c0020009c000007ca0000613d00000b1d0020009c00000e910000c13d000000640040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000004401100370000000000101043b000b00000001001d0000000d01000029000000000010043f0000000201000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000200041100000ae402200197000a00000002001d000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000101041a00000b7d0010009c00000c060000c13d0000000d01000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000b0220006c0000028f0000413d000000000021041b0000000c01000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000b030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b30040000410000000d050000290000000c06000029000009a40000013d00000aff0020009c0000026d0000a13d00000b000020009c000007b80000613d00000b010020009c000007090000613d00000b020020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000001000412001300000001001d001200a00000003d000080050100003900000044030000390000000004000415000000130440008a0000089a0000013d00000af20020009c000002950000a13d00000af30020009c000007bf0000613d00000af40020009c000007350000613d00000af50020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000801000039000000000101041a000000010010008c00000e910000c13d00000002010000390000000802000039000000000012041b00000b2501000041000000800010043f00000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000009490000c13d0000000103000031000000200030008c000000200400003900000000040340190000096e0000013d00000b0d0020009c000005910000a13d00000b0e0020009c000008b20000613d00000b0f0020009c000008690000613d00000b100020009c00000e910000c13d000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000101043b00000ae40010009c00000e910000213d000000000010043f00000001010000390000025f0000013d00000b200020009c000004520000213d00000b230020009c000006bd0000613d00000b240020009c00000e910000c13d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000b00000006001d00000ae20060009c00000e910000213d0000002406500039000a00000006001d0009000b0060002d000000090040006b00000e910000213d0000000804000039000000000404041a000000010040008c00000e910000c13d00000002050000390000000804000039000000000054041b0000028004000039000000400040043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f0000006004000039000002600040043f000000200030008c00000e910000413d0000002002200039000000000121034f000000000101043b00000ae40010009c00000e910000213d000000a00010043f0000000901000039000000000101041a0000008002100270000000e00020043f00000b2901100197000000c00010043f00000b4901000041000002800010043f000000000100041000000ae401100197000800000001001d000002840010043f00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c00000e650000c13d0000000103000031000000200030008c0000002004000039000000000403401900000e8a0000013d00000b090020009c000005f40000613d00000b0a0020009c00000e910000c13d000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000101043b00000ae40010009c00000e910000213d000000000010043f0000000301000039000000200010043f000000400200003900000000010000192b6a2b2d0000040f0000045a0000013d00000afc0020009c0000067c0000613d00000afd0020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d00000008010000390000045a0000013d00000b030020009c000006ac0000613d00000b040020009c00000e910000c13d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002401100370000000000101043b000c00000001001d0000000001000411000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000c0220006c000009810000813d00000b5801000041000000000010043f0000001101000039000000040010043f00000b4a0100004100002b6c0001043000000af60020009c000006b20000613d00000af70020009c00000e910000c13d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000a00000006001d00000ae20060009c00000e910000213d0000002406500039000800000006001d0009000a0060002d000000090040006b00000e910000213d0000000804000039000000000404041a000000010040008c00000e910000c13d00000002050000390000000804000039000000000054041b000001c004000039000000400040043f000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f0000006004000039000001a00040043f000000400030008c00000e910000413d0000002003200039000000000231034f000000000202043b00000ae40020009c00000e910000213d0000002003300039000000000131034f000000000101043b000000ff0010008c00000e910000213d000001800010043f000000a00020043f2b6a250e0000040f000000e00020043f000000c00010043f000000000100041000000ae401100197000700000001001d000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000101041a000001000010043f000000e00200043d000000c00100043d2b6a26720000040f000600000001001d000001200020043f000000c00300043d000001000400043d00000000014300a9000b00000004001d000000000004004b00000000040000190000000b0400c029000000000441c0d9000000000034004b00000e910000c13d000000000002004b0000000003000019000000000321c0d9000001400030043f000000e00300043d0000000b013000b90000000b0000006b00000000040000190000000b0400c029000000000441c0d9000000000034004b00000e910000c13d000000000002004b0000000003000019000000000321c0d9000001600030043f0000000701000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000b0220006c0000028f0000413d000000000021041b000000000100041a0000000b020000290000000001210049000000000010041b000000400100043d000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000070500002900000000060000192b6a2b600000040f000000010020019000000e910000613d000001400100043d000000c00200043d0000000001120049000000c00010043f000001600200043d000000e00300043d0000000002230049000000e00020043f00000b290010009c00001a0b0000213d00000b290020009c00001a0b0000213d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d020000390000000103000039000b00000003001d00000b31040000412b6a2b600000040f000000010020019000000e910000613d000000060000006b000003ab0000613d000000e00200043d000000c00300043d00000000013200a9000000000003004b000003770000613d00000000033100d9000000000023004b0000028f0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a900000012022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000023004b000000010220408a0000000a01000039000000000021041b00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000001400300043d000001800400043d000000a00200043d00000ae402200197000000ff0440018f000700000001001d2b6a281f0000040f00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000001600300043d000001800400043d000000a00200043d00000ae402200197000000ff0440018f000600000001001d2b6a281f0000040f0000000c0000006b000015cb0000c13d000000400100043d000d00000001001d0000000d0100002900000b390010009c000000640000213d0000000d020000290000006001200039000000400010043f000000020100003900000000011204360000000003000019000000400400043d00000aea0040009c000000640000213d0000004005400039000000400050043f000000200540003900000000000504350000000003130019000000000004043500000000004304350000000b030000290000000100300190000b00000000001d0000002003000039000003e60000c13d000000400200043d00000aea0020009c000000640000213d0000004003200039000001400400043d000000400030043f00000020032000390000000000430435000000070300002900000ae40330019700000000003204350000000d030000290000000003030433000000000003004b0000088a0000613d0000000000210435000000400100043d00000aea0010009c000000640000213d0000004002100039000001600300043d000000400020043f00000020021000390000000000320435000000060200002900000ae40220019700000000002104350000000d020000290000000002020433000000020020008c0000088a0000413d0000000d0200002900000040022000390000000000120435000000400100043d0000004002100039000000a00300043d000001400400043d000001600500043d000001000600043d000000000062043500000020021000390000000000520435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c700000ae4063001970000800d020000390000000303000039000000000500041100000b3b040000412b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b0000002002000039000000400100043d00000000032104360000000d02000029000000000202043300000000002304350000004003100039000000000002004b000004500000613d0000000004000019000000000501001900000000060300190000000d030000290000002003300039000d00000003001d0000000003030433000000007303043400000ae403300197000000000036043500000060035000390000000005070433000000000053043500000040036000390000000104400039000000000024004b0000000005060019000004400000413d0000000002130049000009110000013d00000b210020009c000006d00000613d00000b220020009c00000e910000c13d0000000001000416000000000001004b00000e910000c13d0000000a01000039000000000101041a000000800010043f00000b2d0100004100002b6b0001042e00000b1e0020009c0000077f0000613d00000b1f0020009c00000e910000c13d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b00000ae40020009c00000e910000213d0000002401100370000000000301043b00000000010004112b6a27e60000040f0000000101000039000008620000013d00000b170020009c000007d10000613d00000b180020009c00000e910000c13d000000a40040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000006402100370000000000202043b000b00000002001d0000004402100370000000000202043b000a00000002001d0000008402100370000000000202043b00000ae20020009c00000e910000213d0000002303200039000000000043004b00000e910000813d000800040020003d0000000801100360000000000101043b000900000001001d00000ae20010009c00000e910000213d0000000901200029000700240010003d000000070040006b00000e910000213d00000b3c010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b0000000b0010006c000006a40000213d0000000601000039000000000101041a000600000001001d00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000500000001001d000000060010006c00000d7d0000c13d0000000701000039000000000101041a000500000001001d0000000d0100002900000ae401100197000600000001001d000000000010043f0000000301000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a000000010320003a0000028f0000613d000000000031041b000000400100043d000000c0031000390000000b040000290000000000430435000000a003100039000000000023043500000080021000390000000a0300002900000000003204350000000c0200002900000ae40220019700000060031000390000000000230435000000400210003900000006030000290000000000320435000000c002000039000000000221043600000b4403000041000000000032043500000b450010009c000000640000213d000000e003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000400100043d00000042031000390000000000230435000000200210003900000b460300004100000000003204350000002203100039000000050400002900000000004304350000004203000039000000000031043500000b470010009c000000640000213d0000008003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d00000009020000290000001f0220003900000b7c022001970000003f0220003900000b7c02200197000000000101043b000400000001001d000000400300043d0000000001230019000b00000003001d000000000031004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f00000009010000290000000b030000290000000001130436000500000001001d0000000701000029000000000010007c00000e910000213d000000090100002900000b7c021001980000001f0310018f0000000501200029000000080400002900000020044000390000000204400367000005450000613d000000000504034f0000000506000029000000005705043c0000000006760436000000000016004b000005410000c13d000000000003004b000005520000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000000502000029000000090120002900000000000104350000000b010000290000000001010433000000410010008c0000055e0000c13d0000000b010000290000004001100039000000000101043300000b680010009c0000137e0000a13d000000400200043d000000440120003900000040030000390000000000310435000000200120003900000b690300004100000000003104350000002403200039000000040400002900000000004304350000000b030000290000000003030433000000640420003900000000003404350000008404200039000000000003004b0000000508000029000005780000613d000000000500001900000000064500190000000007850019000000000707043300000000007604350000002005500039000000000035004b000005710000413d000000000443001900000000000404350000001f0330003900000b7c0330019700000064043000390000000000420435000000a30330003900000b7c043001970000000003240019000000000043004b0000000004000039000000010400403900000ae20030009c000000640000213d0000000100400190000000640000c13d000000400030043f000000000302043300000000020004140000000d04000029000000040040008c000013bf0000c13d00000001020000390000000104000031000013d10000013d00000b110020009c000008550000613d00000b120020009c00000e910000c13d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000004402100370000000000202043b000b00000002001d0000006402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000406500039000000000261034f000000000202043b00000ae20020009c000000640000213d0000001f0720003900000b7c077001970000003f0770003900000b7c0770019700000b470070009c000000640000213d00000024055000390000008007700039000000400070043f000000800020043f0000000005520019000000000045004b00000e910000213d0000002004600039000000000441034f00000b7c052001980000001f0620018f000000a001500039000005cc0000613d000000a007000039000000000804034f000000008908043c0000000007970436000000000017004b000005c80000c13d000000000006004b000005d90000613d000000000454034f0000000305600210000000000601043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000410435000000a00120003900000000000104350000000801000039000000000101041a000000010010008c00000e910000c13d00000002020000390000000801000039000000000021041b00000b4901000041000000400400043d0000000000140435000000000100041000000ae402100197000a00000004001d0000000401400039000900000002001d000000000021043500000000010004140000000c02000029000000040020008c00000c780000c13d0000000104000031000000200040008c0000002001000039000000000104401900000ca40000013d000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000b00000006001d00000ae20060009c00000e910000213d0000002406500039000a00000006001d0009000b0060002d000000090040006b00000e910000213d000000c004000039000000400040043f000000800000043f000000a00000043f0000000804000039000000000404041a000000010040008c00000e910000c13d00000002040000390000000805000039000000000045041b0000028004000039000000400040043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f0000006004000039000800000004001d000002600040043f000000600030008c00000e910000413d0000002003200039000000000231034f000000000202043b00000ae40020009c00000e910000213d0000002004300039000000000341034f000000000303043b00000ae40030009c00000e910000213d0000002004400039000000000141034f000000000101043b000000ff0010008c00000e910000213d000002400010043f000000e00030043f000001000020043f0000000901000039000000000101041a0000008002100270000001600020043f00000b2901100197000001400010043f00000b4901000041000002800010043f000000000100041000000ae401100197000700000001001d000002840010043f00000b26010000410000000000100443000000000100041200000004001004430000008001000039000600000001001d0000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c00000fc10000c13d0000000103000031000000200030008c0000002004000039000000000403401900000fe60000013d000000e40040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000006402100370000000000202043b000b00000002001d0000004402100370000000000202043b000a00000002001d0000008401100370000000000101043b000900000001001d000000ff0010008c00000e910000213d00000b3c010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b0000000b0010006c00000b2c0000a13d000000400100043d00000b6b02000041000000000021043500000adc0010009c00000adc01008041000000400110021000000ae6011001c700002b6c000104300000000001000416000000000001004b00000e910000c13d2b6a249d0000040f00000b2a01100197000008620000013d0000000001000416000000000001004b00000e910000c13d0000000001000412001100000001001d001000600000003d000080050100003900000044030000390000000004000415000000110440008a0000089a0000013d000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000201043b00000b780020019800000e910000c13d000000010100003900000b790020009c0000089e0000613d00000b7a0020009c0000089e0000613d00000b7b0020009c000000000100c019000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d0000000403000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000054004b000006fc0000c13d000000800010043f000000000004004b000008d80000613d000000000030043f000000000001004b0000000002000019000008dd0000613d00000b3f030000410000000002000019000000000403041a000000a005200039000000000045043500000001033000390000002002200039000000000012004b000006e60000413d000008dd0000013d0000000001000416000000000001004b00000e910000c13d0000000503000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f0000000100500190000008c70000613d00000b5801000041000000000010043f0000002201000039000000040010043f00000b4a0100004100002b6c000104300000000001000416000000000001004b00000e910000c13d0000000201000039000000800010043f00000b2d0100004100002b6b0001042e000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000101043b000d00000001001d00000ae40010009c00000e910000213d0000000801000039000000000101041a000000010010008c00000e910000c13d00000002010000390000000802000039000000000012041b00000b2501000041000000800010043f00000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000009bb0000c13d0000000103000031000000200030008c00000020040000390000000004034019000009e00000013d000000640040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000004402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000002401100370000000000101043b000b00000001001d0000000901000039000000000101041a000a00000001001d00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b0000000d0130014f00090ae40010019c0000076d0000c13d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d0000002001400039000000000200041100000000002104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f0000000c010000290000000d020000292b6a24060000040f0000000b0000006b000000000200001900000c400000c13d000000400100043d000009a90000013d0000000001000416000000000001004b00000e910000c13d0000000901000039000000000101041a00000b2902100197000000800020043f0000008001100270000000a00010043f00000b700100004100002b6b0001042e000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b000d00000002001d00000ae40020009c00000e910000213d0000002402100370000000000202043b000c00000002001d00000ae40020009c00000e910000213d0000004402100370000000000202043b000b00000002001d00000ae40020009c00000e910000213d0000006401100370000000000101043b00000ae20010009c00000e910000213d000000040110003900000000020400192b6a230d0000040f00000000040100190000000d010000290000000c020000290000000b030000292b6a24060000040f000006b00000013d000000440040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000202043b00000ae40020009c00000e910000213d0000002401100370000000000101043b2b6a2a370000040f000008620000013d0000000001000416000000000001004b00000e910000c13d0000000101000039000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d0000000001000412000f00000001001d000e00400000003d0000800501000039000000440300003900000000040004150000000f0440008a0000089a0000013d0000000001000416000000000001004b00000e910000c13d000000000100041a000000800010043f00000b2d0100004100002b6b0001042e000000840040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000402100370000000000502043b00000ae20050009c00000e910000213d0000002302500039000000000042004b00000e910000813d0000000402500039000000000321034f000000000303043b00000ae20030009c00000e910000213d00000000053500190000002405500039000000000045004b00000e910000213d0000002405100370000000000505043b000d00000005001d00000ae40050009c00000e910000213d0000004405100370000000000505043b000c00000005001d00000ae40050009c00000e910000213d0000006405100370000000000505043b00000ae20050009c00000e910000213d0000002306500039000000000046004b00000e910000813d0000000406500039000000000661034f000000000606043b000b00000006001d00000ae20060009c00000e910000213d0000002406500039000a00000006001d0009000b0060002d000000090040006b00000e910000213d000000c004000039000000400040043f000000800000043f000000a00000043f0000000804000039000000000404041a000000010040008c00000e910000c13d00000002040000390000000805000039000000000045041b000002c004000039000000400040043f000000c00000043f000000e00000043f000001000000043f000001200000043f000001400000043f000001600000043f000001800000043f000001a00000043f000001c00000043f000001e00000043f000002000000043f000002200000043f000002400000043f000002600000043f000002800000043f0000006004000039000800000004001d000002a00040043f000000600030008c00000e910000413d0000002003200039000000000231034f000000000202043b00000ae40020009c00000e910000213d0000002004300039000000000341034f000000000303043b00000ae40030009c00000e910000213d0000002004400039000000000141034f000000000101043b000000ff0010008c00000e910000213d000002800010043f000000e00030043f000001200020043f00000b4901000041000002c00010043f000000000100041000000ae401100197000700000001001d000002c40010043f00000b26010000410000000000100443000000000100041200000004001004430000008001000039000600000001001d0000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c0000100e0000c13d0000000103000031000000200030008c00000020040000390000000004034019000010330000013d0000000001000416000000000001004b00000e910000c13d0000000901000039000000000101041a0000008001100270000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d2b6a23770000040f000000400200043d000000000012043500000adc0020009c00000adc02008041000000400120021000000b2c011001c700002b6b0001042e0000000001000416000000000001004b00000e910000c13d000000e001000039000000400010043f0000000201000039000000800010043f000000a001000039000000003203043c0000000001210436000000e00010008c000008710000c13d00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000ae401100197000000a00010043f000000800100043d000000010010008c000008ee0000213d00000b5801000041000000000010043f0000003201000039000000040010043f00000b4a0100004100002b6c000104300000000001000416000000000001004b00000e910000c13d0000000001000412001700000001001d001600800000003d000080050100003900000044030000390000000004000415000000170440008a000000050440021000000b26020000412b6a2b420000040f00000ae401100197000000800010043f00000b2d0100004100002b6b0001042e0000000001000416000000000001004b00000e910000c13d0000000001000412001500000001001d001400000000003d000080050100003900000044030000390000000004000415000000150440008a000000050440021000000b26020000412b6a2b420000040f000000ff0110018f000000800010043f00000b2d0100004100002b6b0001042e000000240040008c00000e910000413d0000000002000416000000000002004b00000e910000c13d0000000401100370000000000201043b00000ae40020009c00000e910000213d00000b4901000041000000800010043f0000000001000410000000840010043f0000000001000414000000040020008c000009190000c13d0000000103000031000000200030008c000000200400003900000000040340190000093e0000013d000000800010043f000000000004004b000008d80000613d000000000030043f000000000001004b0000000002000019000008dd0000613d00000b4e030000410000000002000019000000000403041a000000a005200039000000000045043500000001033000390000002002200039000000000012004b000008d00000413d000008dd0000013d00000b7e02200197000000a00020043f000000000001004b00000020020000390000000002006039000000200220003900000080010000392b6a22df0000040f000000400100043d000d00000001001d00000080020000392b6a22f10000040f0000000d02000029000000000121004900000adc0010009c00000adc01008041000000600110021000000adc0020009c00000adc020080410000004002200210000000000121019f00002b6b0001042e00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000ae401100197000000c00010043f0000002002000039000000400100043d0000000002210436000000800300043d00000000003204350000004002100039000000000003004b000009100000613d0000000004000019000000a006000039000000006506043400000ae40550019700000000025204360000000104400039000000000034004b0000090a0000413d000000000212004900000adc0020009c00000adc02008041000000600220021000000adc0010009c00000adc010080410000004001100210000000000112019f00002b6b0001042e00000adc0010009c00000adc01008041000000c00110021000000b59011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000092d0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009290000c13d000000000006004b0000093a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000009af0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c00000e910000413d000000800200043d0000000000210435000000400110021000000b2c011001c700002b6b0001042e00000adc0010009c00000adc01008041000000c00110021000000b28011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000800a0000390000095d0000613d000000000801034f000000008908043c000000000a9a043600000000005a004b000009590000c13d000000000006004b0000096a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000a100000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c00000e910000413d000000800100043d00000ae40010009c00000e910000213d0000000002000411000000000021004b00000e910000c13d2b6a250e0000040f2b6a27c10000040f00000001010000390000000802000039000000000012041b000000000100001900002b6b0001042e000000000021041b0000000d01000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000c030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b300400004100000000050004110000000d060000292b6a2b600000040f000000010020019000000e910000613d000000400100043d0000000102000039000000000021043500000adc0010009c00000adc01008041000000400110021000000b2c011001c700002b6b0001042e0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000009b60000c13d00000bf30000013d00000adc0010009c00000adc01008041000000c00110021000000b28011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009cf0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000009cb0000c13d000000000006004b000009dc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000be80000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c00000e910000413d000000800100043d00000ae40010009c00000e910000213d0000000002000411000000000021004b00000e910000c13d00000b26010000410000000000100443000000000100041200000004001004430000008001000039000b00000001001d0000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d00000b49010000410000000000140435000000000100041000000ae402100197000c00000004001d0000000401400039000900000002001d00000000002104350000000001000414000a00000003001d00000ae402300197000000040020008c00000ccf0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000cf90000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000a170000c13d00000bf30000013d00000adc00c0009c00000adc0200004100000000020c4019000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000ae6011001c700000000020b0019000b0000000c001d2b6a2b650000040f0000000b0c000029000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f000000200730019000000000057c001900000a380000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00000a340000c13d000000000006004b00000a450000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000000c260000613d0000001f01300039000000600110018f0000000003c10019000000000013004b00000000020000390000000102004039000b00000003001d00000ae20030009c000000640000213d0000000100200190000000640000c13d0000000b02000029000000400020043f000000200040008c00000e910000413d00000000020c0433000a00000002001d00000ae40020009c00000e910000213d0000000a03000029000000e00030043f00000ae7020000410000000b0500002900000000002504350000000002000414000000040030008c00000a910000613d0000000b0100002900000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc02008041000000c002200210000000000112019f00000ae6011001c70000000a020000292b6a2b650000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f00000020073001900000000b0570002900000a7e0000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000a7a0000c13d000000000006004b00000a8b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000000d240000613d0000001f01300039000000600110018f0000000b02100029000900000002001d00000ae20020009c000000640000213d0000000902000029000000400020043f000000200040008c00000e910000413d0000000b02000029000000000202043300000ae40020009c00000e910000213d000000a00020043f00000ae8020000410000000903000029000000000023043500000000020004140000000a03000029000000040030008c00000ad20000613d000000090100002900000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc02008041000000c002200210000000000112019f00000ae6011001c70000000a020000292b6a2b650000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f0000002007300190000000090570002900000abf0000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b00000abb0000c13d000000000006004b00000acc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000000e2a0000613d0000001f01300039000000600110018f000000090110002900000ae20010009c000000640000213d000000400010043f000000200040008c00000e910000413d0000000901000029000000000101043300000ae40010009c00000e910000213d000000c00010043f0000000c01000029000001200010043f0000000d01000029000001000010043f2b6a20c30000040f000d00000001001d000b00000002001d0000000c010000292b6a20c30000040f000000400300043d00000000040200190000000d0000006b00000f770000613d000000000001004b00000f770000613d000000200130003900000ae90200004100000000002104350000001301000039000000000013043500000aea0030009c000000640000213d00000060013000390000004002300039000000400020043f0000000b050000290000000005050433000000000005004b00000b040000613d0000000b060000290000002006600039000000000700001900000000081700190000000009760019000000000909043300000000009804350000002007700039000000000057004b00000afd0000413d000000000115001900000000000104350000000001250019000000200510003900000aeb06000041000000000065043500000021061000390000000005040433000000000005004b00000b170000613d0000002004400039000000000700001900000000086700190000000009740019000000000909043300000000009804350000002007700039000000000057004b00000b100000413d000000000465001900000000000404350000000001150019000000210410003900000aec050000410000000000540435000000000121004900000003041000390000000000420435000000420110003900000b7c041001970000000001240019000000000041004b0000000004000039000000010400403900000ae20010009c000000640000213d0000000100400190000000640000c13d000000400010043f00000f880000013d0000000601000039000000000101041a000800000001001d00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000700000001001d000000080010006c00000c5b0000c13d0000000701000039000000000101041a000700000001001d0000000d0100002900000ae401100197000800000001001d000000000010043f0000000301000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a000000010320003a0000028f0000613d000000000031041b000000400100043d000000c0031000390000000b040000290000000000430435000000a003100039000000000023043500000080021000390000000a0300002900000000003204350000000c0200002900000ae40220019700000060031000390000000000230435000000400210003900000008030000290000000000320435000000c002000039000000000221043600000b4403000041000000000032043500000b450010009c000000640000213d000000e003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000400100043d00000042031000390000000000230435000000200210003900000b460300004100000000003204350000002203100039000000070400002900000000004304350000004203000039000000000031043500000b470010009c000000640000213d0000008003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b0000000202000367000000a403200370000000000303043b000000c402200370000000000202043b000000400400043d00000060054000390000000000250435000000400240003900000000003204350000000902000029000000ff0220018f000000200340003900000000002304350000000000140435000000000000043f00000adc0040009c00000adc040080410000004001400210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b48011001c700000001020000392b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0540018f000000200440019000000bcb0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b00000bc70000c13d000000000005004b00000bd80000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f0003000000010355000000010020019000000f5f0000613d000000080000006b000013dd0000613d000000000100043d00000ae401100197000000080010006c000013dd0000c13d0000000d010000290000000c020000290000000a030000292b6a27e60000040f000000000100001900002b6b0001042e0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000bef0000c13d000000000005004b00000c000000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000adc0020009c00000adc020080410000004002200210000000000112019f00002b6c000104300009000b001000740000028f0000413d0000000d01000029000000000010043f0000000201000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b0000000a02000029000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b0000000902000029000000000021041b000001490000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00000c2d0000c13d000000000005004b00000c3e0000613d000000000161034f0000000305500210000000000603043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000130435000000600140021000000c010000013d00000b2a0210019700000b2b0020009c0000028f0000213d00000b2b032000990000000b013000b90000000b041000fa000000000034004b00000e910000c13d0000000b032000b90000000b033000fa000000000023004b00000e910000c13d0000000a0200002900000b29042001970000008005200270000000090000006b00000da60000c13d00000b2b024000d1000000000021001a0000028f0000413d000000000221001900000000035100a9000000000001004b0000000004000019000000000413c0d9000000000054004b00000daf0000013d0000000405000039000000000405041a000000010640019000000001034002700000007f0330618f0000001f0030008c00000000010000390000000101002039000000000114013f0000000100100190000006fc0000c13d000000400100043d0000000002310436000000000006004b00000d300000613d000000000050043f000000000003004b000000000400001900000d350000613d00000b3f0500004100000000040000190000000006240019000000000705041a000000000076043500000001055000390000002004400039000000000034004b00000c700000413d00000d350000013d0000000a0200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b4a011001c70000000c020000292b6a2b650000040f000000000301034f000000600110027000000adc04100197000000200040008c000000200100003900000000010440190000001f0610018f00000020071001900000000a0570002900000c930000613d000000000803034f0000000a09000029000000008a08043c0000000009a90436000000000059004b00000c8f0000c13d000000000006004b00000ca00000613d000000000773034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000030355000000010020019000000d9a0000613d0000001f01100039000000600110018f0000000a02100029000000000012004b0000000001000039000000010100403900000ae20020009c000000640000213d0000000100100190000000640000c13d000000400020043f000000200040008c00000e910000413d0000000b0100002900080b5a001000d50000000a050000290000000005050433000a00000005001d000000000001004b00000cbc0000613d00000008050000290000000b015000fa00000b5a0010009c0000028f0000c13d000000440120003900000024062000390000000a070000290000000b0070006c00000dc70000813d00000b5e0300004100000000003204350000000403200039000000200400003900000000004304350000001f03000039000000000036043500000b6703000041000000000031043500000adc0020009c00000adc02008041000000400120021000000b60011001c700002b6c000104300000000c0300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c0570002900000ce80000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b00000ce40000c13d000000000006004b00000cf50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000dbb0000613d0000001f01400039000000600110018f0000000c02100029000000000012004b0000000001000039000000010100403900000ae20020009c000000640000213d0000000100100190000000640000c13d000000400020043f000000200030008c00000e910000413d0000000c0100002900000000010104330000000904000039000000000404041a00000b2904400197000000000141004b0000028f0000413d00000044042000390000000000140435000000200420003900000b4b01000041000000000014043500000024012000390000000d0500002900000000005104350000004401000039000000000012043500000b470020009c000000640000213d0000008001200039000000400010043f000000000502043300000000020004140000000a06000029000000040060008c00000e360000c13d00000ae20030009c0000000002000019000000640000213d00000eb60000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00000d2b0000c13d00000c310000013d00000b7e044001970000000000420435000000000003004b000000200400003900000000040060390000003f0340003900000b7c043001970000000003140019000000000043004b0000000004000039000000010400403900000ae20030009c000000640000213d0000000100400190000000640000c13d000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000000100041000000ae403100197000000400100043d000000a0041000390000000000340435000000800310003900000007040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000000640000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b00000b400000013d0000000405000039000000000405041a000000010640019000000001034002700000007f0330618f0000001f0030008c00000000010000390000000101002039000000000114013f0000000100100190000006fc0000c13d000000400100043d0000000002310436000000000006004b00000ddd0000613d000000000050043f000000000003004b000000000400001900000de20000613d00000b3f0500004100000000040000190000000006240019000000000705041a000000000076043500000001055000390000002004400039000000000034004b00000d920000413d00000de20000013d0000001f0540018f00000adf06400198000000400100043d0000000002610019000000fa0000613d000000000703034f0000000008010019000000007907043c0000000008980436000000000028004b00000da10000c13d000000fa0000013d00000b2b025000d1000000000021001a0000028f0000413d000000000221001900000000034100a9000000000001004b0000000005000019000000000513c0d9000000000045004b00000000040000390000000104006039000000000001004b00000000010000390000000101006039000000000002004b00000e910000613d000000000141019f000000010010019000000e910000613d00000000022300d90000077d0000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dc20000c13d00000bf30000013d000000200520003900000b4b0700004100000000007504350000000d0700002900000000007604350000000b0600002900000000006104350000004401000039000000000012043500000b470020009c000000640000213d0000008001200039000000400010043f000000000602043300000000020004140000000c07000029000000040070008c00000e4c0000c13d00000ae20040009c0000000002000019000000640000213d00000f040000013d00000b7e044001970000000000420435000000000003004b000000200400003900000000040060390000003f0340003900000b7c043001970000000003140019000000000043004b0000000004000039000000010400403900000ae20030009c000000640000213d0000000100400190000000640000c13d000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000201043b000000000100041000000ae403100197000000400100043d000000a0041000390000000000340435000000800310003900000005040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000000640000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000004bd0000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00000e310000c13d00000c310000013d00000adc0040009c00000adc04008041000000400140021000000adc0050009c00000adc050080410000006003500210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000a020000292b6a2b600000040f0003000000010355000000600110027000010adc0010019d00000adc0310019800000eb40000c13d0000000100200190000000600100003900000edf0000c13d00000f2b0000013d00000adc0050009c00000adc05008041000000400150021000000adc0060009c00000adc060080410000006003600210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000c020000292b6a2b600000040f000000000301034f0003000000010355000000600110027000010adc0010019d00000adc0410019800000f020000c13d000000010020019000000f2b0000613d00000060010000390000008005000039000000000400001900000f2e0000013d00000adc0010009c00000adc01008041000000c00110021000000b4f011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000280057001bf000002800a00003900000e790000613d000000000801034f000000008908043c000000000a9a043600000000005a004b00000e750000c13d000000000006004b00000e860000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000f6b0000613d0000001f01400039000000600110018f00000280021001bf000700000002001d000000400020043f000000200030008c00000e930000813d000000000100001900002b6c00010430000002800200043d000600000002001d00000b49020000410000000703000029000000000023043500000284011001bf0000000802000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c0000105b0000c13d0000000103000031000000200030008c00000020040000390000000004034019000010830000013d000000400100043d000000010220015f0000001f0430003900000b4c044001970000003f0440003900000b4d054001970000000004150019000000000054004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f000000000631043600000b7c043001980000001f0530018f000b00000006001d0000000003460019000000030600036700000ed00000613d000000000706034f0000000b08000029000000007907043c0000000008980436000000000038004b00000ecc0000c13d000000000005004b00000edd0000613d000000000446034f0000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f0000000000430435000000010020019000000f2b0000c13d0000000001010433000000000001004b00000fa60000c13d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400200043d00000b49010000410000000000120435000c00000002001d0000000401200039000000090200002900000000002104350000000001000414000b00000003001d00000ae402300197000000040020008c000011b30000c13d0000000104000031000000200040008c0000002004008039000011dd0000013d000000400100043d000000010220015f0000001f0540003900000b4c055001970000003f0550003900000b4d065001970000000005160019000000000065004b0000000006000039000000010600403900000ae20050009c000000640000213d0000000100600190000000640000c13d000000400050043f000000000541043600000b7c074001980000001f0840018f000000000675001900000f1c0000613d000000000903034f000000000a050019000000009b09043c000000000aba043600000000006a004b00000f180000c13d000000000008004b00000f290000613d000000000373034f0000000307800210000000000806043300000000087801cf000000000878022f000000000303043b0000010007700089000000000373022f00000000037301cf000000000383019f0000000000360435000000010020019000000f2e0000613d000000400100043d00000b6f02000041000006a60000013d0000000001010433000000000001004b00000fb40000c13d000000080100002900000b5b0310012a000000400500043d0000008401500039000000a00200003900000000002104350000006401500039000600000003001d000000000031043500000044015000390000000b02000029000000000021043500000024015000390000000c02000029000000000021043500000b5c010000410000000000150435000000000100041100000ae40110019700000004025000390000000000120435000000a402500039000000800100043d0000000000120435000800000005001d000000c402500039000000000001004b00000f550000613d00000000030000190000000005230019000000a006300039000000000606043300000000006504350000002003300039000000000013004b00000f4e0000413d0000000002210019000000000002043500000000020004140000000d03000029000000040030008c000010fb0000c13d000000200040008c000000200300003900000000030440190000112c0000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f660000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f720000c13d00000bf30000013d00000aea0030009c000000640000213d0000004001300039000000400010043f000000200230003900000aed01000041000000000012043500000003040000390000000000430435000000400200043d00000aea0020009c000000640000213d0000004005200039000000400050043f00000020052000390000000000150435000000000042043500000000010300192b6a21670000040f000000800100043d00000140000004430000016000100443000000a00100043d00000020020000390000018000200443000001a0001004430000004001000039000000c00300043d000001c000100443000001e0003004430000006001000039000000e00300043d000002000010044300000220003004430000008001000039000001000300043d00000240001004430000026000300443000000a001000039000001200300043d0000028000100443000002a00030044300000100002004430000000601000039000001200010044300000aee0100004100002b6b0001042e00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000b010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000ee20000c13d00000f2b0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001050433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f310000c13d00000f2b0000013d00000adc0010009c00000adc01008041000000c00110021000000b4f011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000280057001bf000002800a00003900000fd50000613d000000000801034f000000008908043c000000000a9a043600000000005a004b00000fd10000c13d000000000006004b00000fe20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000118f0000613d0000001f01400039000000600110018f00000280021001bf000500000002001d000000400020043f000000200030008c00000e910000413d000002800200043d000400000002001d00000b49020000410000000503000029000000000023043500000284011001bf0000000702000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000012010000c13d0000000103000031000000200030008c00000020040000390000000004034019000012290000013d00000adc0010009c00000adc01008041000000c00110021000000b6c011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000002c0057001bf000002c00a000039000010220000613d000000000801034f000000008908043c000000000a9a043600000000005a004b0000101e0000c13d000000000006004b0000102f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000119b0000613d0000001f01400039000000600110018f000002c002100039000500000002001d000000400020043f000000200030008c00000e910000413d000002c00200043d000400000002001d00000b490200004100000005030000290000000000230435000002c4011000390000000702000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000000100041400000ae402200197000000040020008c000012a10000c13d0000000103000031000000200030008c00000020040000390000000004034019000012c90000013d00000adc0010009c00000adc01008041000000c00110021000000007030000290000004003300210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000010720000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b0000106e0000c13d000000000006004b0000107f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011a70000613d0000001f01400039000000600110018f0000000701100029000000400010043f000000200030008c00000e910000413d00000007010000290000000001010433000001200010043f000000060300002900000000023100a9000001000030043f000000000003004b000010940000613d00000006032000fa000000000013004b0000028f0000c13d00000b320020009c00000000030000390000008003002039000000000432022f00000b330040009c00000040033021bf000000000432022f00000b340040009c00000020033021bf000000000432022f00000b2a0040009c00000010033021bf000000000432022f00000b350440009a0000000103300270000000b50330020f00000000034300a900000012033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000334001900000001033002720000000004000019000000000432c0d9000000000034004b000000010330408a000001c00030043f000000c00200043d000000060220006b0000028f0000413d000001400020043f000000e00200043d000000000121004b0000028f0000413d000001600010043f0000000d010000292b6a25f50000040f000700000001001d000000c00100043d000000000001004b000d00000000001d000013300000613d000000e00300043d000001400400043d00000000024300a9000000000004004b000010de0000613d00000000044200d9000000000034004b00000e910000c13d000d0000001200e1000001600100043d0000000d0010006c000013300000813d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000600000001001d00000b2601000041000000000010044300000000010004120000000400100443000000800100003900000024001004430000000001000414000013480000013d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc010080410000006001100210000000080300002900000adc0030009c00000adc030080410000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000112019f0000000d020000292b6a2b600000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f000000200730019000000008057000290000111b0000613d000000000801034f0000000809000029000000008a08043c0000000009a90436000000000059004b000011170000c13d000000000006004b000011280000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f00030000000103550000000100200190000011f50000613d0000001f01300039000000600110018f0000000803100029000000000013004b00000000020000390000000102004039000700000003001d00000ae20030009c000000640000213d0000000100200190000000640000c13d0000000702000029000000400020043f000000200040008c00000e910000413d000000070200002900000004022000390000000803000029000000000303043300000b5d0030009c000013080000c13d00000b4903000041000000070500002900000000003504350000000903000029000000000032043500000000020004140000000c03000029000000040030008c000011770000613d000000070100002900000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc02008041000000c002200210000000000112019f00000b4a011001c70000000c020000292b6a2b650000040f000000600310027000000adc04300197000000200040008c000000200300003900000000030440190000001f0630018f00000020073001900000000705700029000011640000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000011600000c13d000000000006004b000011710000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f00030000000103550000000100200190000014f70000613d0000001f01300039000000600110018f0000000701100029000900000001001d00000ae20010009c000000640000213d0000000901000029000000400010043f000000200040008c00000e910000413d000000070100002900000000010104330008000a00100074000015030000813d0000000903000029000000440130003900000b6602000041000000000021043500000024013000390000001902000039000000000021043500000b5e01000041000000000013043500000004013000390000002002000039000013120000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011960000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011a20000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011ae0000c13d00000bf30000013d0000000c0300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c05700029000011cc0000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b000011c80000c13d000000000006004b000011d90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000012fc0000613d0000001f01400039000000600210018f0000000c01200029000000000021004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f000000200040008c00000e910000413d0000000c0100002900000000010104330000000902000039000000000202041a0000008002200270000000000321004b0000028f0000413d0000000b010000290000000d020000292b6a2a450000040f0000097c0000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000011fc0000c13d00000c310000013d00000adc0010009c00000adc01008041000000c00110021000000005030000290000004003300210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000505700029000012180000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b000012140000c13d000000000006004b000012250000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013180000613d0000001f01400039000000600110018f0000000501100029000000400010043f000000200030008c00000e910000413d00000005010000290000000001010433000001a00010043f0000000401000029000001800010043f0000000d010000292b6a25f50000040f000001000200043d000d00000002001d00000b260200004100000000002004430000000002000412000000040020044300000080020000390000002400200443000700000001001d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d0000000d0200002900000ae403200197000000000201043b00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000500000002001d00000ae401200197000400000001001d000d00000003001d000000000013004b0000140a0000c13d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d000000200100003900000000011404360000000002000411000000000021043500000aea0040009c000000640000213d0000004001400039000000400010043f00000007010000290000000502000029000d00000003001d2b6a24060000040f00000b2a05100197000002200050043f0000000d0100002900000ae401100197000001200010043f000001400400043d000001800100043d000000000141004b0000028f0000413d000001c00010043f000016df0000c13d000002000000043f000001e00000043f000001a00300043d00000000020000190000000003230049000001a00030043f000000400300043d0000006004300039000000e00500043d0000000000240435000000000113043600000040023000390000000000020435000000000001043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b50011001c700000ae4065001970000800d02000039000000030300003900000b510400004100000000050004112b6a2b600000040f000000010020019000000e910000613d000000400100043d000002000200043d0000000002210436000000000002043500000adc0010009c00000adc0100804100000040011002100000000002000414000014560000013d00000adc0010009c00000adc01008041000000c00110021000000005030000290000004003300210000000000131019f00000b4a011001c72b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000505700029000012b80000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b000012b40000c13d000000000006004b000012c50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013240000613d0000001f01400039000000600110018f0000000501100029000000400010043f000000200030008c00000e910000413d00000005010000290000000001010433000001600010043f0000000401000029000001400010043f0000000701000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000101041a000001800010043f000001600200043d000001400100043d2b6a26720000040f000400000001001d000001a00020043f000001800100043d000500000001001d000000000001004b00000e910000613d000001400300043d00000005013000b900000005041000fa000000000034004b00000e910000c13d000001600300043d00000005043000b900000005054000fa000000000002004b0000151a0000c13d000001c00000043f000000000035004b00000000010000190000151f0000613d00000e910000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013030000c13d00000bf30000013d00000b5e010000410000000703000029000000000013043500000020010000390000000000120435000000440130003900000b5f02000041000000000021043500000024013000390000001802000039000000000021043500000adc0030009c00000adc03008041000000400130021000000b60011001c700002b6c000104300000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000131f0000c13d00000bf30000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000132b0000c13d00000bf30000013d00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000600000001001d00000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b000000400400043d0000002001400039000000000300041100000000003104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f000000070100002900000006030000292b6a24060000040f00000b2a03100197000002400030043f000000e00100043d000000c00200043d000000000002004b00000000040000190000000005000019000016760000613d000001600600043d0000000d0560006c0000166e0000813d000001400400043d00000000056200a9000000000006004b000013700000613d00000000066500d9000000000026004b00000e910000c13d000000000001004b000013750000613d00000000051500d9000000000454004b0000028f0000413d00000000053400a9000000000003004b0000137b0000613d00000000033500d9000000000043004b00000e910000c13d00000b2b0450012a0000000005000019000016760000013d0000000b020000290000006002200039000000000202043300000005030000290000000003030433000000400400043d0000006005400039000000000015043500000040014000390000000000310435000000f8012002700000002002400039000000000012043500000004010000290000000000140435000000000000043f00000adc0040009c00000adc040080410000004001400210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b48011001c700000001020000392b6a2b650000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0540018f0000002004400190000013a70000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000047004b000013a30000c13d000000000005004b000013b40000613d000000000641034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f00030000000103550000000100200190000014eb0000613d000000000100043d00000ae401100197000000060010006c0000055e0000c13d000000000001004b00000be20000c13d0000055e0000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000d020000292b6a2b650000040f000000010220018f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b000013e00000c13d00000060010000390000008003000039000000000002004b000013dd0000613d0000000001010433000000200010008c000013dd0000c13d000000000103043300000b690010009c00000be20000613d000000400100043d00000b6a02000041000006a60000013d00000ae20040009c000000640000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000005000039000000010500403900000ae20030009c000000640000213d0000000100500190000000640000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f00000000045300190000000307000367000013fc0000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b000013f80000c13d000000000006004b000013d50000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000013d50000013d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000201043b00000ae4012001970000000d0010006b00000e910000c13d000000400400043d000000200100003900000000011404360000000003000411000000000031043500000aea0040009c000000640000213d0000004001400039000000400010043f000000070100002900000005030000292b6a24060000040f00000b2a05100197000002200050043f0000000401000029000001200010043f000001600400043d000001a00100043d000000000141004b0000028f0000413d000001c00010043f000017220000c13d000002000000043f000001e00000043f000001800300043d00000000020000190000000003230049000001800030043f000000400300043d0000004004300039000000e00500043d00000000002404350000002002300039000000000012043500000060013000390000000000010435000000000003043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b50011001c700000ae4065001970000800d02000039000000030300003900000b510400004100000000050004112b6a2b600000040f000000010020019000000e910000613d000000400100043d0000002002100039000002000300043d0000000000320435000000000001043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b52040000412b6a2b600000040f000000010020019000000e910000613d000001c00100043d000000000001004b00000e910000613d000001e00100043d000000000001004b00000e910000613d000001800100043d00000b290010009c00001a0b0000213d000001a00200043d00000b290020009c00001a0b0000213d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d020000390000000103000039000d00000003001d00000b31040000412b6a2b600000040f000000010020019000000e910000613d000001e00100043d000500000001001d000000e00100043d00030ae40010019b000001200100043d000200000001001d00040ae40010019b000002400100043d000000ff0110019000001a260000613d000000010010008c00001a0e0000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000020110014f00000ae40010019800001a0e0000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000b3602000041000000000020044300000ae401100197000800000001001d0000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400200043d00000b53010000410000000000120435000600000002001d00000004012000390000000502000029000000000021043500000000010004140000000802000029000000040020008c000014e00000613d000000060200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b4a011001c700000008020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001ddb0000613d000000060100002900000ae20010009c000000640000213d0000000601000029000000400010043f00000000010004140000000302000029000000040020008c00001e360000c13d000000010100003100001ed40000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014f20000c13d00000bf30000013d0000001f0540018f00000adf06400198000000400200043d000000000362001900000c310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b000014fe0000c13d00000c310000013d0000000603000029000000080030006b000015a90000813d0000000903000029000000640130003900000b63020000410000000000210435000000440130003900000b6402000041000000000021043500000024013000390000002202000039000000000021043500000b5e01000041000000000013043500000004013000390000002002000039000000000021043500000adc0030009c00000adc03008041000000400130021000000b65011001c700002b6c0001043000000000012100d9000001c00010043f000000000035004b00000e910000c13d00000000012400d9000001e00010043f0000000701000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a000000050220006c0000028f0000413d000000000021041b000000000100041a00000005020000290000000001210049000000000010041b000000400100043d000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000070500002900000000060000192b6a2b600000040f000000010020019000000e910000613d0000000d010000292b6a25f50000040f000001200200043d000d00000002001d00000b2602000041000000000020044300000000020004120000000400200443000000a0020000390000002400200443000700000001001d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d0000000d0200002900000ae403200197000000000201043b00000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000500000002001d00000ae401200197000300000001001d000d00000003001d000000000013004b000017fe0000c13d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400400043d0000002001400039000000000200041100000000002104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f00000007010000290000000002030019000d00000003001d00000005030000292b6a24060000040f00000b2a05100197000002600050043f0000000d0100002900000ae401100197000001000010043f000001400100043d000001c00800043d000000000781004b0000028f0000413d000001e00200043d000001600100043d000000000321004b0000028f0000413d000000000008004b0000000006000019000000000400001900001ba90000c13d000002400040043f000002200060043f000000000026001a0000028f0000413d0000000002260019000001e00020043f000002000020043f000001c00000043f000000000121004b0000028f0000413d000001600010043f000000400100043d0000000002410436000000000002043500000adc0010009c00000adc01008041000000400110021000000000020004140000183b0000013d0000000a0010006c000015b00000613d2b6a2abf0000040f000000400200043d000900000002001d00070ae40010019c000017090000c13d00000009030000290000002001300039000000080200002900000000002104350000000b01000029000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000030300003900000b62040000410000000d050000290000000c060000292b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b000008620000013d0000000d010000292b6a25f50000040f00000ae401100197000000800010043f0000000a010000290000001f0110003900000b7c011001970000003f0110003900000b7c02100197000000400100043d0000000002210019000000000012004b0000000003000039000000010300403900000ae20020009c000000640000213d0000000100300190000000640000c13d000000400020043f0000000a0200002900000000022104360000000904000029000000000040007c00000e910000213d0000000a0300002900000b7c043001980000001f0530018f000000080300002900000002063003670000000003420019000015f00000613d000000000706034f0000000008020019000000007907043c0000000008980436000000000038004b000015ec0000c13d000000000005004b000015fd0000613d000000000446034f0000000305500210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f00000000004304350000000a022000290000000000020435000001a00010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b38010000410000000000140435000000040140003900000020020000390000000000210435000000800100043d00000ae40110019700000024024000390000000000120435000000a00100043d00000ae401100197000000440240003900000000001204350000006401400039000000c00200043d00000000002104350000008401400039000000e00200043d0000000000210435000000a401400039000001000200043d0000000000210435000000c401400039000001200200043d0000000000210435000000e401400039000001400200043d00000000002104350000010401400039000001600200043d0000000000210435000001800100043d000000ff0110018f0000012402400039000000000012043500000144014000390000014002000039000001a00300043d0000000000210435000001640140003900000000320304340000000000210435000d00000004001d0000018401400039000000000002004b000016470000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b000016400000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c000016650000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d000300000001035500000001002001900000194a0000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f0000000d0100002900000b390010009c000000640000213d000003e00000013d00000000043500a9000000000003004b000016740000613d00000000033400d9000000000053004b00000e910000c13d00000b2b0540012a0000000004000019000001a00050043f000001800040043f000000000024001a0000028f0000413d0000000002240019000000c00020043f000000000015001a0000028f0000413d0000000001150019000000e00010043f000000400100043d00000020021000390000000000520435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b52040000412b6a2b600000040f000000010020019000000e910000613d000000e00200043d000000c00300043d00000000013200a9000000000003004b0000169b0000613d00000000033100d9000000000023004b0000028f0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a900000012022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001032002720000000002000019000000000231c0d9000000000032004b000000010330408a000d00000003001d000001e00030043f0000000001000415000500000001001d000000000100041a000600000001001d2b6a2abf0000040f00040ae40010019b0000000a01000039000000000101041a000300000001001d000000000001004b000019590000613d000000040000006b0000174c0000c13d0000000a01000039000000000001041b000019590000013d00000b2b0050009c0000028f0000213d00000b2b0250009900000000032100a900000000061300d9000000000026004b00000e910000c13d00000000025100a900000000061200d9000000000056004b00000e910000c13d00000b2b054000d100000b2b0650012a000000000046004b00000e910000c13d000000000053001a0000028f0000413d000001600600043d000000000453001900000000053600a9000000000003004b0000000007000019000000000735c0d9000000000067004b00000000060000390000000106006039000000000003004b00000000030000390000000103006039000000000004004b00000e910000613d000000000363019f000000010030019000000e910000613d00000b2b0220012a000002000020043f00000000024500d9000001e00020043f000001a00300043d000000000032004b0000028f0000213d0000127d0000013d0000000904000029000000440140003900000008020000290000000000210435000000200140003900000b4b0200004100000000002104350000002402400039000000070300002900000000003204350000004402000039000000000024043500000b470040009c000000640000213d00000009030000290000008002300039000000400020043f000000000303043300000000020004140000000c04000029000000040040008c000017580000c13d000000010400003100000000020000190000176a0000013d00000b2b0050009c0000028f0000213d00000b2b0250009900000000032100a900000000061300d9000000000026004b00000e910000c13d00000000025100a900000000061200d9000000000056004b00000e910000c13d00000b2b054000d100000b2b0650012a000000000046004b00000e910000c13d000000000053001a0000028f0000413d000001400600043d000000000453001900000000053600a9000000000003004b0000000007000019000000000735c0d9000000000067004b00000000060000390000000106006039000000000003004b00000000030000390000000103006039000000000004004b00000e910000613d000000000363019f000000010030019000000e910000613d00000b2b0220012a000002000020043f00000000024500d9000001e00020043f000001800300043d000000000032004b0000028f0000213d000014310000013d00000003020000290002000d00200073000019590000a13d2b6a249d0000040f000000060000006b0000190b0000c13d0000000002000415000000190220008a000000050220021000020b2a0010019b00000000010000190000192c0000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000c020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b000017d40000c13d00000060010000390000008003000039000000010020019000000f2b0000c13d0000000001010433000000000001004b000019180000c13d000000400300043d000000200100003900000000021304360000000201000039000a00000002001d0000000000120435000900000003001d00000aea0030009c000000640000213d00000009010000290000004001100039000000400010043f00000b3601000041000000000010044300000007010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400300043d0000008401300039000000a0020000390000000000210435000000640130003900000b5a0200004100000000002104350000004401300039000000080200002900000000002104350000000c0100002900000ae4011001970000002402300039000000000012043500000b6101000041000000000013043500000004013000390000000a02000039000000000021043500000009010000290000000001010433000000a4023000390000000000120435000900000003001d000000c402300039000000000001004b000017b20000613d000000000300001900000000042300190000000a05300029000000000505043300000000005404350000002003300039000000000013004b000017ab0000413d0000000002210019000000000002043500000000020004140000000703000029000000040030008c000017ce0000613d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc010080410000006001100210000000090300002900000adc0030009c00000adc030080410000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000112019f00000007020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001c690000613d000000090100002900000ae20010009c000000640000213d0000000901000029000000400010043f000015b00000013d00000ae20040009c000000640000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000005000039000000010500403900000ae20030009c000000640000213d0000000100500190000000640000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f00000000045300190000000307000367000017f00000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b000017ec0000c13d000000000006004b0000176e0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f00000000005404350000176e0000013d000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b00000ae4013001970000000d0010006b00000e910000c13d000000400400043d0000002001400039000000000200041100000000002104350000002001000039000000000014043500000aea0040009c000000640000213d0000004001400039000000400010043f000000070100002900000005020000292b6a24060000040f00000b2a06100197000002600060043f0000000301000029000001000010043f000001c00200043d000001400100043d000000000321004b0000028f0000413d000001e00800043d000001600400043d000000000784004b0000028f0000413d000000000008004b0000000005000019000000000400001900001c450000c13d000002400040043f000002200050043f000000000025001a0000028f0000413d0000000002250019000001c00020043f000002000020043f000001e00000043f000000000121004b0000028f0000413d000001400010043f000000400100043d00000020021000390000000000420435000000000001043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b52040000412b6a2b600000040f000000010020019000000e910000613d000002000100043d000000000001004b00000e910000613d000001400100043d00000b290010009c00001a0b0000213d000001600200043d00000b290020009c00001a0b0000213d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d020000390000000103000039000d00000003001d00000b31040000412b6a2b600000040f000000010020019000000e910000613d000000040000006b000018a50000613d000001600200043d000001400300043d00000000013200a9000000000003004b000018710000613d00000000033100d9000000000023004b0000028f0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a900000012022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000223001900000001022002720000000003000019000000000321c0d9000000000023004b000000010220408a0000000a01000039000000000021041b000002000100043d000400000001001d000000e00100043d00050ae40010019b000001200100043d000200000001001d00030ae40010019b000002800100043d000000ff0110019000001de80000613d000000010010008c00001e110000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000020110014f00000ae40010019800001e110000c13d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b00000b3602000041000000000020044300000ae401100197000600000001001d0000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400200043d00000b53010000410000000000120435000800000002001d00000004012000390000000402000029000000000021043500000000010004140000000602000029000000040020008c000019000000613d000000080200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b4a011001c700000006020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001e3d0000613d000000080100002900000ae20010009c000000640000213d0000000801000029000000400010043f00000000010004140000000502000029000000040020008c00001e4a0000c13d000000010100003100001f0d0000013d000000020400002900000006034000b900000006023000fa000000000042004b0000028f0000c13d0000000002000415000000180220008a000000050220021000020b2a0010019b000000000003004b000019250000c13d00000000010000190000192c0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d000017730000013d0000000002000415000000180220008a000000050220021000000002013000b900000000033100d9000000020030006c0000028f0000c13d0000000502200270000000000201001f000000020200002900000b2b0020009c0000028f0000213d000000020200002900000b2b032000990000000d023000b90000193b0000613d00000000033200d90000000d0030006c0000028f0000c13d000000020000006b0000000003000019000019400000613d000000030500002900000002035000b900000002043000fa000000000054004b0000028f0000c13d000000000023001a0000028f0000413d000000000223001a000019570000c13d00000b5801000041000000000010043f0000001201000039000000040010043f00000b4a0100004100002b6c0001043000000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019520000c13d00000bf30000013d000000000012004b00001a4f0000a13d0000000001000415000000050110006900000000010000020000000601000029000002000010043f000001c00200043d000000000001004b000019870000c13d000003e80120008c0000028f0000413d000002200010043f000000000100041a00000b7f0010009c0000028f0000213d000003e801100039000000000010041b000000000000043f0000000101000039000000200010043f00000b7201000041000000000201041a000003e802200039000000000021041b000003e801000039000000400200043d000000000012043500000adc0020009c00000adc020080410000004001200210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000000060000192b6a2b600000040f000000010020019000000e910000613d000002200100043d000d00000001001d000019930000013d000001e00100043d000000000212004b0000028f0000413d000000000001004b00000e910000613d00000006032000b900000006043000fa000000000024004b00000e910000c13d00000000011300d9000d00000001001d000002200010043f0000000d0000006b000019980000c13d000000400100043d00000b7702000041000006a60000013d000000000100041a0000000d0010002a0000028f0000413d0000000d01100029000000a00200043d00000ae402200197000000000010041b000800000002001d000000000020043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a0000000d030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000008060000292b6a2b600000040f000000010020019000000e910000613d000001000100043d00000b290010009c00001a0b0000213d000001200200043d00000b730020009c00001a0b0000813d0000008003200210000000000313019f0000000904000039000000000034041b000000400300043d00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b31040000412b6a2b600000040f000000010020019000000e910000613d000000040000006b000019e60000613d000001c00100043d0000000a02000039000000000012041b000000400100043d000d00000001001d0000000c01000029000c0ae40010019c00001af70000c13d000000a00200043d000001600100043d000002200300043d000001400400043d0000000d050000290000000000450435000000400450003900000000003404350000002003500039000000000013043500000adc0050009c00000adc050080410000004001500210000000000300041400000adc0030009c00000adc03008041000000c003300210000000000113019f00000b3a011001c700000ae4062001970000800d020000390000000303000039000000000500041100000b75040000412b6a2b600000040f000000010020019000000e910000613d000002200100043d00000008020000390000000103000039000000000032041b000008620000013d000000400100043d00000b7602000041000006a60000013d000000400200043d000000440120003900000005030000290000000000310435000000200120003900000b4b0300004100000000003104350000002403200039000000030400002900000000004304350000004403000039000000000032043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000404000029000000040040008c00001bcd0000c13d0000000101000031000000000200001900001bdf0000013d00000b260100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400200043d000000440120003900000005040000290000000000410435000000200120003900000b4b0400004100000000004104350000004404000039000000000042043500000ae4043001970000002403200039000d00000004001d000000000043043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000404000029000000040040008c00001c760000c13d0000000103000031000000000200001900001c880000013d00030000002100e1000000000100041a000000030010002a0000028f0000413d0000000301100029000000000010041b0000000401000029000000000010043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f000000010020019000000e910000613d000000000101043b000000000201041a00000003030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000004060000292b6a2b600000040f000000010020019000000e910000613d000000400300043d000000200100003900000000021304360000000201000039000d00000002001d0000000000120435000100000003001d00000aea0030009c000000640000213d00000001010000290000004001100039000000400010043f00000b3601000041000000000010044300000004010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400300043d0000008401300039000000a002000039000000000021043500000064013000390000000202000029000000000021043500000044013000390000000302000029000000000021043500000024013000390000000802000029000000000021043500000b6101000041000000000013043500000004013000390000000102000039000000000021043500000001010000290000000001010433000000a4023000390000000000120435000800000003001d000000c402300039000000000001004b00001ab80000613d000000000300001900000000042300190000000d05300029000000000505043300000000005404350000002003300039000000000013004b00001ab10000413d0000000002210019000000000002043500000000020004140000000403000029000000040030008c00001ad40000613d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc010080410000006001100210000000080300002900000adc0030009c00000adc030080410000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000112019f00000004020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001ad90000613d000000080100002900000ae20010009c000000640000213d0000000801000029000000400010043f0000000302000029000000060020002a0000028f0000413d00000003040000290000000603400029000000400100043d0000004002100039000600000003001d0000000000320435000000200210003900000000004204350000000202000029000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c70000800d02000039000000020300003900000b710400004100000004050000292b6a2b600000040f0000000100200190000019590000c13d00000e910000013d000000070100002900000ae401100197000000800010043f0000000b010000290000001f0110003900000b7c011001970000003f0110003900000b7c011001970000000d011000290000000d0010006c0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f0000000b010000290000000d0300002900000000011304360000000903000029000000000030007c00000e910000213d0000000b0200002900000b7c032001980000001f0420018f0000000a020000290000000205200367000000000231001900001b1b0000613d000000000605034f0000000007010019000000006806043c0000000007870436000000000027004b00001b170000c13d000000000004004b00001b280000613d000000000335034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000000b0110002900000000000104350000000d01000029000002600010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b74010000410000000000140435000000040140003900000020020000390000000000210435000000800100043d00000ae40110019700000024024000390000000000120435000000a00100043d00000ae401100197000000440240003900000000001204350000006401400039000000c00200043d00000000002104350000008401400039000000e00200043d0000000000210435000000a401400039000001000200043d0000000000210435000000c401400039000001200200043d0000000000210435000000e401400039000001400200043d00000000002104350000010401400039000001600200043d00000000002104350000012401400039000001800200043d00000000002104350000014401400039000001a00200043d00000000002104350000016401400039000001c00200043d00000000002104350000018401400039000001e00200043d0000000000210435000001a401400039000002000200043d0000000000210435000001c401400039000002200200043d0000000000210435000002400100043d00000b2a01100197000001e402400039000000000012043500000204014000390000020002000039000002600300043d0000000000210435000002240140003900000000320304340000000000210435000d00000004001d0000024401400039000000000002004b00001b850000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b00001b7e0000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c00001ba30000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001e290000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f000019eb0000013d00000b2b0050009c0000028f0000213d00000b2b0450009900000000064800a900000000098600d9000000000049004b00000e910000c13d00000000045800a900000000088400d9000000000058004b00000e910000c13d00000b2b057000d100000b2b0850012a000000000078004b00000e910000c13d000000000065001a0000028f0000413d000000000565001900000000076300a9000000000006004b0000000008000019000000000867c0d9000000000038004b00000000030000390000000103006039000000000006004b00000000060000390000000106006039000000000005004b00000e910000613d000000000336019f000000010030019000000e910000613d00000b2b0440012a00000000065700d9000015960000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000004020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001c180000c13d000000010020019000000f2b0000c13d00000008010000290000000001010433000000000001004b00001ccd0000c13d000000400100043d000d00000001001d000000070100002900080ae40010019b0000000c0000006b00001cdb0000c13d000001200100043d00000ae407100197000000800070043f000001e00100043d000000a00010043f000002200200043d000000e00300043d000001c00400043d0000000d05000029000000000045043500000ae4033001970000006004500039000000000034043500000b2a02200197000000400350003900000000002304350000002002500039000000000012043500000adc0050009c00000adc050080410000004001500210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b50011001c70000800d020000390000000403000039000000000500041100000b570400004100000008060000292b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b000000400100043d000d00000001001d00000080020000392b6a23060000040f000008e40000013d00000ae20010009c000000640000213d0000001f0410003900000b7c044001970000003f0440003900000b7c04400197000000400500043d0000000004450019000800000005001d000000000054004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f0000000804000029000000000514043600000b7c031001980000001f0410018f000600000005001d0000000001350019000000030500036700001c370000613d000000000605034f0000000607000029000000006806043c0000000007870436000000000017004b00001c330000c13d000000000004004b00001be10000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500001be10000013d00000b2b0060009c0000028f0000213d00000b2b0460009900000000054800a900000000098500d9000000000049004b00000e910000c13d00000000046800a900000000088400d9000000000068004b00000e910000c13d00000b2b067000d100000b2b0860012a000000000078004b00000e910000c13d000000000056001a0000028f0000413d000000000656001900000000075300a9000000000005004b0000000008000019000000000857c0d9000000000038004b00000000030000390000000103006039000000000005004b00000000050000390000000105006039000000000006004b00000e910000613d000000000335019f000000010030019000000e910000613d00000b2b0440012a00000000056700d9000018280000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c710000c13d00000bf30000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000004020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc03100197000000000003004b00001ca30000c13d00000060010000390000008004000039000000010020019000000f2b0000c13d0000000001010433000000000001004b00001d890000c13d000000400400043d00000024014000390000000302000029000000000021043500000b54010000410000000000140435000800000004001d00000004014000390000000402000029000000000021043500000000010004140000000d02000029000000040020008c00001d960000c13d000000200030008c0000002004000039000000000403401900001dc10000013d00000ae20030009c000000640000213d0000001f0130003900000b7c011001970000003f0110003900000b7c04100197000000400100043d0000000004410019000000000014004b0000000006000039000000010600403900000ae20040009c000000640000213d0000000100600190000000640000c13d000000400040043f000000000431043600000b7c063001980000001f0730018f0000000005640019000000030800036700001cbf0000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b00001cbb0000c13d000000000007004b00001c8c0000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f000000000065043500001c8c0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d00000006010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d00001be70000013d0000000801000029000000c00010043f0000000b010000290000001f0110003900000b7c011001970000003f0110003900000b7c011001970000000d011000290000000d0010006c0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f0000000b010000290000000d0300002900000000011304360000000903000029000000000030007c00000e910000213d0000000b0200002900000b7c032001980000001f0420018f0000000a020000290000000205200367000000000231001900001cfe0000613d000000000605034f0000000007010019000000006806043c0000000007870436000000000027004b00001cfa0000c13d000000000004004b00001d0b0000613d000000000335034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000000b0110002900000000000104350000000d01000029000002600010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b56010000410000000000140435000000040140003900000020020000390000000000210435000000c00100043d00000ae40110019700000024024000390000000000120435000000e00100043d00000ae40110019700000044024000390000000000120435000001000100043d00000ae40110019700000064024000390000000000120435000001200100043d00000ae40110019700000084024000390000000000120435000000a401400039000001400200043d0000000000210435000000c401400039000001600200043d0000000000210435000000e401400039000001800200043d00000000002104350000010401400039000001a00200043d00000000002104350000012401400039000001c00200043d00000000002104350000014401400039000001e00200043d00000000002104350000016401400039000002000200043d0000000000210435000002200100043d00000b2a0110019700000184024000390000000000120435000002400100043d000000ff0110018f000001a4024000390000000000120435000001c401400039000001c002000039000002600300043d0000000000210435000001e40140003900000000320304340000000000210435000d00000004001d0000020401400039000000000002004b00001d650000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b00001d5e0000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c00001d830000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d0003000000010355000000010020019000001e510000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f00001bed0000013d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d00001c910000013d000000080200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b55011001c70000000d020000292b6a2b600000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000080570002900001db00000613d000000000801034f0000000809000029000000008a08043c0000000009a90436000000000059004b00001dac0000c13d000000000006004b00001dbd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001dcf0000613d0000001f01400039000000600210018f0000000801200029000000000021004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f000000200030008c00001be70000813d00000e910000013d0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001dd60000c13d00000bf30000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001de30000c13d00000bf30000013d00000b260100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000020a90000613d000000000301043b000000400200043d000000440120003900000004040000290000000000410435000000200120003900000b4b0400004100000000004104350000004404000039000000000042043500000ae4043001970000002403200039000800000004001d000000000043043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000304000029000000040040008c00001e5e0000c13d0000000103000031000000000200001900001e700000013d000000400200043d000000440120003900000004030000290000000000310435000000200120003900000b4b0300004100000000003104350000002403200039000000050400002900000000004304350000004403000039000000000032043500000b470020009c000000640000213d0000008003200039000000400030043f000000000302043300000000020004140000000304000029000000040040008c00001e750000c13d0000000101000031000000000200001900001e870000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e310000c13d00000bf30000013d00000adc0010009c00000adc01008041000000c001100210000000050000006b00001ec90000c13d000000030200002900001ece0000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e450000c13d00000bf30000013d00000adc0010009c00000adc01008041000000c001100210000000040000006b00001f020000c13d000000050200002900001f070000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e590000c13d00000bf30000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000003020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc03100197000000000003004b00001f3d0000c13d0000006001000039000000800400003900001f660000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000003020000292b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001eb50000613d00000ae20010009c000000640000213d0000001f0410003900000b7c044001970000003f0440003900000b7c04400197000000400500043d0000000004450019000800000005001d000000000054004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f0000000804000029000000000514043600000b7c031001980000001f0410018f000600000005001d0000000001350019000000030500036700001ea80000613d000000000605034f0000000607000029000000006806043c0000000007870436000000000017004b00001ea40000c13d000000000004004b00001eb50000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000010020019000000f2b0000c13d00000008010000290000000001010433000000000001004b00001fc10000613d00000ae10010009c00000e910000213d000000200010008c00000e910000413d00000006010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d00001fc10000013d00000b40011001c700008009020000390000000503000029000000030400002900000000050000192b6a2b600000040f000d00000002001d0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001efe0000613d00000ae20010009c000000640000213d0000001f0310003900000b7c033001970000003f0330003900000b7c04300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f000000000513043600000b7c021001980000001f0310018f0000000001250019000000030400036700001ef10000613d000000000604034f000000006706043c0000000005750436000000000015004b00001eed0000c13d000000000003004b00001efe0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000000d01000029000000010010019000001be70000c13d00001f3a0000013d00000b40011001c700008009020000390000000403000029000000050400002900000000050000192b6a2b600000040f000d00000002001d0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b00001f370000613d00000ae20010009c000000640000213d0000001f0310003900000b7c033001970000003f0330003900000b7c04300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000ae20040009c000000640000213d0000000100500190000000640000c13d000000400040043f000000000513043600000b7c021001980000001f0310018f0000000001250019000000030400036700001f2a0000613d000000000604034f000000006706043c0000000005750436000000000015004b00001f260000c13d000000000003004b00001f370000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000000d01000029000000010010019000001fc10000c13d000000400100043d00000b6d02000041000006a60000013d00000ae20030009c000000640000213d0000001f0130003900000b7c011001970000003f0110003900000b7c04100197000000400100043d0000000004410019000000000014004b0000000006000039000000010600403900000ae20040009c000000640000213d0000000100600190000000640000c13d000000400040043f000000000431043600000b7c063001980000001f0730018f0000000005640019000000030800036700001f590000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b00001f550000c13d000000000007004b00001f660000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000000010020019000000f2b0000c13d0000000001010433000000000001004b00001f770000613d00000ae10010009c00000e910000213d000000200010008c00000e910000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b00000e910000c13d000000000001004b00000f2b0000613d000000400400043d00000024014000390000000502000029000000000021043500000b54010000410000000000140435000d00000004001d00000004014000390000000302000029000000000021043500000000010004140000000802000029000000040020008c00001f890000c13d000000200030008c0000002004000039000000000403401900001fb40000013d0000000d0200002900000adc0020009c00000adc02008041000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b55011001c700000008020000292b6a2b600000040f000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000d0570002900001fa30000613d000000000801034f0000000d09000029000000008a08043c0000000009a90436000000000059004b00001f9f0000c13d000000000006004b00001fb00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000020aa0000613d0000001f01400039000000600210018f0000000d01200029000000000021004b0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f000000200030008c00000e910000413d000000400100043d000d00000001001d0000000c0000006b000020790000613d000000070100002900000ae401100197000000c00010043f0000000b010000290000001f0110003900000b7c011001970000003f0110003900000b7c011001970000000d011000290000000d0010006c0000000002000039000000010200403900000ae20010009c000000640000213d0000000100200190000000640000c13d000000400010043f0000000b010000290000000d0300002900000000011304360000000903000029000000000030007c00000e910000213d0000000b0200002900000b7c032001980000001f0420018f0000000a020000290000000205200367000000000231001900001fe90000613d000000000605034f0000000007010019000000006806043c0000000007870436000000000027004b00001fe50000c13d000000000004004b00001ff60000613d000000000335034f0000000304400210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003204350000000b0110002900000000000104350000000d01000029000002a00010043f00000b360100004100000000001004430000000c010000290000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000020a90000613d000000000101043b000000000001004b00000e910000613d000000400400043d00000b6e010000410000000000140435000000040140003900000020020000390000000000210435000000c00100043d00000ae40110019700000024024000390000000000120435000000e00100043d00000ae40110019700000044024000390000000000120435000001000100043d00000ae40110019700000064024000390000000000120435000001200100043d00000ae40110019700000084024000390000000000120435000000a401400039000001400200043d0000000000210435000000c401400039000001600200043d0000000000210435000000e401400039000001800200043d00000000002104350000010401400039000001a00200043d00000000002104350000012401400039000001c00200043d00000000002104350000014401400039000001e00200043d00000000002104350000016401400039000002000200043d00000000002104350000018401400039000002200200043d0000000000210435000001a401400039000002400200043d0000000000210435000002600100043d00000b2a01100197000001c4024000390000000000120435000002800100043d000000ff0110018f000001e402400039000000000012043500000204014000390000020002000039000002a00300043d0000000000210435000002240140003900000000320304340000000000210435000d00000004001d0000024401400039000000000002004b000020560000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b0000204f0000413d0000000003210019000000000003043500000000030004140000000c04000029000000040040008c000020740000613d0000001f0220003900000b7c022001970000000d040000290000000002420049000000000112001900000adc0010009c00000adc01008041000000600110021000000adc0040009c00000adc0200004100000000020440190000004002200210000000000121019f00000adc0030009c00000adc03008041000000c002300210000000000121019f0000000c020000292b6a2b600000040f000000600310027000010adc0030019d00030000000103550000000100200190000020b60000613d0000000d0100002900000ae20010009c000000640000213d0000000d01000029000000400010043f0000000d0100002900000aea0010009c000000640000213d0000000d040000290000004001400039000001200200043d000002000300043d000000400010043f0000002001400039000000000031043500000ae4012001970000000000140435000000400100043d0000004002100039000000e00300043d000001c00400043d000001e00500043d000001800600043d000000000062043500000020021000390000000000520435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c700000ae4063001970000800d020000390000000303000039000000000500041100000b3b040000412b6a2b600000040f000000010020019000000e910000613d00000001010000390000000802000039000000000012041b000000400100043d000c00000001001d0000000d020000292b6a23060000040f0000000c02000029000008e50000013d000000000001042f0000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020b10000c13d00000bf30000013d00000adc033001970000001f0530018f00000adf06300198000000400200043d000000000462001900000bf30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020be0000c13d00000bf30000013d0000000002010019000000400300043d0000000401000039000000000113043600000b8004000041000000000041043500000b810030009c0000215f0000813d0000004004300039000000400040043f00000000040304330000000003000414000000040020008c0000213e0000c13d00000001020000390000000105000031000000000005004b000000200100008a000021520000613d00000ae20050009c0000215f0000213d0000001f03500039000000000313016f0000003f03300039000000000413016f000000400300043d0000000004430019000000000034004b0000000006000039000000010600403900000ae20040009c0000215f0000213d00000001006001900000215f0000c13d000000400040043f000000000453043600000000061501700000001f0750018f00000000056400190000000308000367000020f20000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b000020ee0000c13d000000000007004b000020ff0000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000000000002004b000021560000613d000000000203043300000ae10020009c000021650000213d0000001f0020008c000021650000a13d000000000504043300000ae20050009c000021650000213d000000000424001900000000053500190000003f02500039000000000042004b000000000300001900000ae30300804100000ae30220019700000ae306400197000000000762013f000000000062004b000000000200001900000ae30200404100000ae30070009c000000000203c019000000000002004b000021650000c13d0000002002500039000000000302043300000ae20030009c0000215f0000213d0000001f02300039000000000212016f0000003f02200039000000000112016f000000400200043d0000000006120019000000000026004b0000000001000039000000010100403900000ae20060009c0000215f0000213d00000001001001900000215f0000c13d0000004001500039000000400060043f00000000053204360000000006130019000000000046004b000021650000213d000000000003004b0000213a0000613d000000000400001900000000065400190000000007140019000000000707043300000000007604350000002004400039000000000034004b000021330000413d000000010100003900000000033500190000000000030435000000000001042d00000adc0010009c00000adc01008041000000400110021000000adc0040009c00000adc040080410000006004400210000000000114019f00000adc0030009c00000adc03008041000000c003300210000000000131019f2b6a2b650000040f000000010220018f0003000000010355000000600110027000010adc0010019d00000adc05100197000000000005004b000000200100008a000020d60000c13d00000060030000390000008004000039000000000002004b000021010000c13d000000400300043d00000b820030009c0000215f0000213d0000002001300039000000400010043f000000000100001900000000020300190000000000030435000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c000104300005000000000002000000007401043400000b830040009c000022d20000813d00000000060200190000000402000039000000000302041a000000010230019000000001053002700000007f0550618f0000001f0050008c00000000030000390000000103002039000000000032004b000022d80000c13d000000200050008c000500000006001d000400000004001d000300000001001d0000219b0000413d000100000005001d000200000007001d0000000401000039000000000010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d00000004040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000051300190000000002230019000000000052004b000000050600002900000002070000290000219b0000813d000000000002041b0000000102200039000000000052004b000021970000413d0000001f0040008c000021c70000a13d0000000401000039000000000010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000040700002900000b7c02700198000000000101043b00000005060000290000000308000029000022330000613d000000010320008a000000050330027000000000043100190000002003000039000000010440003900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000021b30000c13d000000000072004b000021c40000813d0000000302700210000000f80220018f00000b7d0220027f00000b7d0220016700000000038300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf000021d20000013d000000000004004b000021cb0000613d0000000001070433000021cc0000013d0000000001000019000000030240021000000b7d0220027f00000b7d02200167000000000121016f0000000102400210000000000121019f0000000402000039000000000012041b000000003506043400000ae20050009c000022d20000213d0000000504000039000000000104041a000000010010019000000001061002700000007f0660618f0000001f0060008c00000000020000390000000102002039000000000121013f0000000100100190000022d80000c13d000000200060008c000400000005001d000022040000413d000200000006001d000300000003001d000000000040043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d00000004050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b00000002010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b00000005040000390000000303000029000022040000813d000000000002041b0000000102200039000000000012004b000022000000413d0000001f0050008c0000222f0000a13d000000000040043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000040700002900000b7c02700198000000000101043b0000000506000029000022800000613d000000010320008a000000050330027000000000043100190000002003000039000000010440003900000000056300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000221a0000c13d000000000072004b0000222b0000813d0000000302700210000000f80220018f00000b7d0220027f00000b7d0220016700000000036300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf00000005040000390000223e0000013d000000000005004b000022370000613d0000000001030433000022380000013d0000002003000039000000000072004b000021bc0000413d000021c40000013d0000000001000019000000030250021000000b7d0220027f00000b7d02200167000000000121016f0000000102500210000000000121019f000000000014041b00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000022de0000613d000000000401043b0000000601000039000000000041041b0000000401000039000000000101041a000000010210019000000001071002700000007f0770618f0000001f0070008c00000000030000390000000103002039000000000331013f0000000100300190000022d80000c13d000500000004001d000000400500043d0000000006750436000000000002004b0000227a0000613d000400000007001d000200000006001d000300000005001d0000000401000039000000000010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2f011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d0000000407000029000000000007004b000022840000613d000000000201043b0000000001000019000000030500002900000002060000290000000003160019000000000402041a000000000043043500000001022000390000002001100039000000000071004b000022720000413d000022870000013d00000b7e011001970000000000160435000000000007004b00000020010000390000000001006039000022870000013d0000002003000039000000000072004b000022230000413d0000222b0000013d0000000001000019000000030500002900000002060000290000003f0110003900000b7c021001970000000001520019000000000021004b0000000002000039000000010200403900000ae20010009c000022d20000213d0000000100200190000022d20000c13d000000400010043f00000adc0060009c00000adc060080410000004001600210000000000205043300000adc0020009c00000adc020080410000006002200210000000000112019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000000201043b000000400100043d000000a00310003900000000040004100000000000430435000000800310003900000005040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000022d20000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000022d00000613d000000000101043b0000000702000039000000000012041b000000000001042d000000000100001900002b6c0001043000000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c0001043000000b5801000041000000000010043f0000002201000039000000040010043f00000b4a0100004100002b6c00010430000000000001042f0000001f0220003900000b7c022001970000000001120019000000000021004b0000000002000039000000010200403900000ae20010009c000022eb0000213d0000000100200190000022eb0000c13d000000400010043f000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c0001043000000020030000390000000004310436000000003202043400000000002404350000004001100039000000000002004b000023000000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b000022f90000413d000000000321001900000000000304350000001f0220003900000b7c022001970000000001210019000000000001042d000000003202043400000ae4022001970000000002210436000000000303043300000000003204350000004001100039000000000001042d00000000030100190000001f01100039000000000021004b000000000400001900000ae30400404100000ae30520019700000ae301100197000000000651013f000000000051004b000000000100001900000ae30100204100000ae30060009c000000000104c019000000000001004b000023550000613d0000000205000367000000000135034f000000000401043b00000b830040009c0000234f0000813d0000001f0140003900000b7c011001970000003f0110003900000b7c07100197000000400100043d0000000007710019000000000017004b0000000008000039000000010800403900000ae20070009c0000234f0000213d00000001008001900000234f0000c13d0000002008300039000000400070043f00000000034104360000000007840019000000000027004b000023550000213d000000000585034f00000b7c064001980000001f0740018f00000000026300190000233f0000613d000000000805034f0000000009030019000000008a08043c0000000009a90436000000000029004b0000233b0000c13d000000000007004b0000234c0000613d000000000565034f0000000306700210000000000702043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f000000000052043500000000024300190000000000020435000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c0001043000000ae402200197000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f0000000100200190000023650000613d000000000101043b000000000001042d000000000100001900002b6c0001043000000ae10010009c000023750000213d000000630010008c000023750000a13d00000002010003670000000402100370000000000202043b00000ae40020009c000023750000213d0000004401100370000000000101043b00000ae40010009c000023750000213d000000000001042d000000000100001900002b6c0001043000020000000000020000000601000039000000000101041a000200000001001d00000b3e010000410000000000100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b3d011001c70000800b020000392b6a2b650000040f0000000100200190000023f70000613d000000000701043b000000020070006c0000238c0000c13d0000000701000039000000000101041a000000000001042d0000000405000039000000000405041a000000010640019000000001034002700000007f0330618f0000001f0030008c00000000010000390000000101002039000000000016004b000024000000c13d000000400100043d0000000002310436000000000006004b000100000007001d000023a80000613d000000000050043f000000000003004b000023ae0000613d00000b3f0500004100000000040000190000000006420019000000000705041a000000000076043500000001055000390000002004400039000000000034004b000023a00000413d000023af0000013d00000b7e044001970000000000420435000000000003004b00000020040000390000000004006039000023af0000013d00000000040000190000003f0340003900000b7c043001970000000003140019000000000043004b0000000004000039000000010400403900000ae20030009c000023f80000213d0000000100400190000023f80000c13d000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000023fe0000613d000000000201043b000000000100041000000ae403100197000000400100043d000000a0041000390000000000340435000000800310003900000001040000290000000000430435000000600310003900000b4104000041000000000043043500000040031000390000000000230435000000200210003900000b42030000410000000000320435000000a003000039000000000031043500000b430010009c000023f80000213d000000c003100039000000400030043f00000adc0020009c00000adc020080410000004002200210000000000101043300000adc0010009c00000adc010080410000006001100210000000000121019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f0000000100200190000023fe0000613d000000000101043b000000000001042d000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c0001043000000b5801000041000000000010043f0000002201000039000000040010043f00000b4a0100004100002b6c000104300005000000000002000000400700043d0000008405700039000000a006000039000000000065043500000ae4033001970000006405700039000000000035043500000ae4022001970000004403700039000000000023043500000ae4011001970000002402700039000000000012043500000b840100004100000000001704350000000401700039000000000200041000000000002104350000000016040434000000a4027000390000000000620435000300000007001d000000c405700039000000000006004b000024280000613d000000000200001900000000035200190000000004210019000000000404043300000000004304350000002002200039000000000062004b000024210000413d000200000005001d000100000006001d0000000001650019000000000001043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000024960000613d000000000201043b000000000100041400000ae402200197000000040020008c000000030b000029000024490000c13d0000000005000415000000050550008a00000005055002100000000103000031000000200030008c000000200400003900000000040340190000247f0000013d00000001030000290000001f0330003900000b7c033001970000000003b30049000000020330002900000adc0030009c00000adc03008041000000600330021000000adc00b0009c00000adc0400004100000000040b40190000004004400210000000000343019f00000adc0010009c00000adc01008041000000c001100210000000000131019f2b6a2b650000040f000000030b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000246b0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000024670000c13d000000000006004b000024780000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000040550008a00000005055002100000000100200190000024920000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c000024970000213d0000000100200190000024970000c13d000000400010043f0000001f0030008c000024940000a13d00000000010b043300000b2a0010009c000024940000213d0000000502500270000000000201001f000000000001042d0000012201000039000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c000104300003000000000002000000400200043d00000b85010000410000000000120435000100000002001d00000004012000390000000002000410000000000021043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000025070000613d000000000201043b000000000100041400000ae402200197000000040020008c000024c20000c13d0000000005000415000000030550008a00000005055002100000000103000031000000200030008c00000020040000390000000004034019000000010b000029000024f00000013d000000010300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000010b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000024dc0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000024d80000c13d000000000006004b000024e90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000020550008a00000005055002100000000100200190000025030000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c000025080000213d0000000100200190000025080000c13d000000400010043f0000001f0030008c000025050000a13d00000000010b043300000b2a0010009c000025050000213d0000000502500270000000000201001f000000000001042d0000753001000039000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c000104300003000000000002000000400200043d00000b49010000410000000000120435000000000100041000000ae403100197000300000002001d0000000401200039000100000003001d000000000031043500000b260100004100000000001004430000000001000412000000040010044300000080010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000025c20000613d000000000201043b000000000100041400000ae402200197000000040020008c000025320000c13d0000000103000031000000200030008c00000020040000390000000004034019000000030b0000290000255d0000013d000000030300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000030b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000254c0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025480000c13d000000000006004b000025590000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000025cb0000613d0000001f01400039000000600110018f0000000002b10019000000000012004b0000000001000039000000010100403900000ae20020009c000025c30000213d0000000100100190000025c30000c13d000000400020043f0000001f0030008c000025c90000a13d00000000010b0433000300000001001d00000b49010000410000000000120435000200000002001d00000004012000390000000102000029000000000021043500000b2601000041000000000010044300000000010004120000000400100443000000a0010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f0000000100200190000025c20000613d000000000201043b000000000100041400000ae402200197000000040020008c0000258c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000000020b000029000025b70000013d000000020300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000020b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000025a60000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025a20000c13d000000000006004b000025b30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000025d70000613d0000001f01400039000000600110018f0000000001b1001900000ae20010009c000025c30000213d000000400010043f000000200030008c000025c90000413d00000000020b04330000000301000029000000000001042d000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c000104300000001f0530018f00000adf06300198000000400200043d0000000004620019000025e20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025d20000c13d000025e20000013d0000001f0530018f00000adf06300198000000400200043d0000000004620019000025e20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025de0000c13d000000000005004b000025ef0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000adc0020009c00000adc020080410000004002200210000000000112019f00002b6c000104300004000000000002000000000301001900000ae4021001970000000001000411000000000012004b000026660000613d000100000003001d000000400300043d00000b8602000041000000000023043500000ae401100197000200000003001d0000000402300039000000000012043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f00000001002001900000266b0000613d000000000201043b000000000100041400000ae402200197000000040020008c000026200000c13d0000000001000415000000040110008a00000005011002100000000103000031000000200030008c00000020040000390000000004034019000000020b0000290000264e0000013d000000020300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c72b6a2b650000040f000000020b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000263a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000026360000c13d000000000006004b000026470000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000001000415000000030110008a00000005011002100000000100200190000026670000613d0000001f02400039000000600420018f0000000002b40019000000000042004b0000000004000039000000010400403900000ae20020009c0000266c0000213d00000001004001900000266c0000c13d000000400020043f0000001f0030008c000026690000a13d00000000020b0433000000000002004b0000000003000039000000010300c039000000000032004b000026690000c13d0000000501100270000000000102001f000000000002004b0000000001000411000000010100c029000000000001042d0000000001000411000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c000104300008000000000002000500000002001d000400000001001d000000000100041a000600000001001d2b6a2abf0000040f00000ae4051001970000000a01000039000000000401041a000000000004004b000027a30000613d000000000005004b000026d80000613d0000000503000029000000040200002900000000012300a9000000000002004b000026870000613d00000000022100d9000000000032004b000027ac0000c13d00000b320010009c00000000020000390000008002002039000000000321022f00000b330030009c00000040022021bf000000000321022f00000b340030009c00000020022021bf000000000321022f00000b2a0030009c00000010022021bf000000000321022f00000b350330009a0000000102200270000000b50220020f00000000023200a90000001202200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000321c0d9000000000300601900000000022300190000000102200272000000000121c0d90000000001006019000000000021004b000000010220408a000000000142004b000027a30000a13d000200000001001d000300000002001d000400000004001d000500000005001d2b6a249d0000040f0000000602000029000000000002004b000026da0000613d00000002032000b900000000022300d9000000020020006c000000050500002900000004070000290000000304000029000027ac0000c13d0000000002000415000000070220008a000000050220021000000b2a06100197000000000003004b000026e30000613d0000000002000415000000070220008a000000050220021000000000013600a900000000033100d9000000000063004b000026e40000613d000027ac0000013d000000000001041b000027a30000013d0000000002000415000000080220008a000000050220021000000b2a061001970000000001000019000000050500002900000004070000290000000304000029000026e40000013d00000000010000190000000502200270000000000201001f00000b2b0060009c000027ac0000213d00000b2b0360009900000000024300a9000026f00000613d00000000033200d9000000000043004b000027ac0000c13d000000000006004b000027a80000613d00000000037600a900000000046300d9000000000074004b000027ac0000c13d000000000032001a000027ac0000413d000000000232001a000027b40000613d000000000012004b000027a30000213d00000000022100d9000000000100041a000000000021001a000027ac0000413d000300000006001d000400000002001d0000000001210019000000000010041b000000000050043f0000000101000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f0000000100200190000027b20000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d000000000031043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b3004000041000000000500001900000005060000292b6a2b600000040f00000005030000290000000100200190000027b20000613d000000400400043d000000200100003900000000021404360000000201000039000200000002001d000000000012043500000b810040009c000027ba0000813d000100000004001d0000004001400039000000400010043f00000b360100004100000000001004430000000400300443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f0000000100200190000027c00000613d000000000101043b000000000001004b0000000505000029000027b20000613d000000400700043d0000008401700039000000a0020000390000000000210435000000640170003900000003020000290000000000210435000000440170003900000004020000290000000000210435000000000100041000000ae4011001970000002402700039000000000012043500000b6101000041000000000017043500000004017000390000000102000039000000000021043500000001010000290000000001010433000000a4027000390000000000120435000000c402700039000000000001004b0000000208000029000027650000613d000000000300001900000000042300190000000006830019000000000606043300000000006404350000002003300039000000000013004b0000275e0000413d000000000212001900000000000204350000000002000414000000040050008c000027830000613d0000001f0110003900000b7c01100197000000c40110003900000adc0010009c00000adc01008041000000600110021000000adc0070009c00000adc0300004100000000030740190000004003300210000000000131019f00000adc0020009c00000adc02008041000000c002200210000000000121019f0000000002050019000200000007001d2b6a2b600000040f00000002070000290000000505000029000000600310027000010adc0030019d00030000000103550000000100200190000027860000613d00000ae20070009c000027ba0000213d000000400070043f0000000402000029000000060020002a0000000304000029000027ac0000413d0000000603200029000000400100043d00000000060200190000004002100039000600000003001d000000000032043500000020021000390000000000620435000000000041043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b3a011001c70000800d02000039000000020300003900000b71040000412b6a2b600000040f00000005050000290000000100200190000027b20000613d000000000005004b0000000001000039000000010100c0390000000602000029000000000001042d0000000003000019000000000002001a000027ac0000413d000026f60000013d00000b5801000041000000000010043f0000001101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c0001043000000b5801000041000000000010043f0000001201000039000000040010043f00000b4a0100004100002b6c0001043000000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000001042f000000400300043d00000b290010009c000027dd0000213d00000b730020009c000027dd0000813d0000008004200210000000000414019f0000000905000039000000000045041b00000020043000390000000000240435000000000013043500000adc0030009c00000adc030080410000004001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2e011001c70000800d02000039000000010300003900000b31040000412b6a2b600000040f0000000100200190000027e40000613d000000000001042d00000b7601000041000000000013043500000adc0030009c00000adc03008041000000400130021000000ae6011001c700002b6c00010430000000000100001900002b6c000104300003000000000002000100000003001d000300000002001d00000ae401100197000200000001001d000000000010043f0000000201000039000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f00000001002001900000281d0000613d000000000101043b000000030200002900000ae402200197000300000002001d000000000020043f000000200010043f000000000100041400000adc0010009c00000adc01008041000000c00110021000000b2e011001c700008010020000392b6a2b650000040f00000001002001900000281d0000613d000000000101043b0000000102000029000000000021041b000000400100043d000000000021043500000adc0010009c00000adc010080410000004001100210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b2f011001c70000800d02000039000000030300003900000b8704000041000000020500002900000003060000292b6a2b600000040f00000001002001900000281d0000613d000000000001042d000000000100001900002b6c0001043000030000000000020000000006010019000000ff014001900000287f0000613d000000010010008c0000283e0000c13d000300000003001d000200000006001d000100000002001d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002a080000613d000000000101043b0000000206000029000000000161013f00000ae40010019800000001020000290000000303000029000029730000613d000000400500043d00000044015000390000000000310435000000200150003900000b4b03000041000000000031043500000ae403200197000000240450003900000000003404350000004403000039000000000035043500000b880050009c000029f80000813d0000008003500039000000400030043f00000000030504330000000002000414000000040060008c000028d50000c13d00000001040000310000000002000019000000000004004b000028e90000613d00000ae20040009c000029f80000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000006000039000000010600403900000ae20030009c000029f80000213d0000000100600190000029f80000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f00000000045300190000000307000367000028710000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b0000286d0000c13d000000000006004b000028eb0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000028eb0000013d000300000003001d000200000006001d000100000002001d00000b260100004100000000001004430000000001000412000000040010044300000040010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002a080000613d000000000301043b000000400200043d000000440120003900000003040000290000000000410435000000200120003900000b4b0400004100000000004104350000004404000039000000000042043500000ae40d30019700000024032000390000000000d3043500000b470020009c000000020c000029000029f80000213d0000008003200039000000400030043f000000000302043300000000020004140000000400c0008c000028fd0000c13d00000001030000310000000002000019000000000003004b000029140000613d00000ae20030009c000029f80000213d0000001f0130003900000b7c011001970000003f0110003900000b7c04100197000000400100043d0000000004410019000000000014004b0000000006000039000000010600403900000ae20040009c000029f80000213d0000000100600190000029f80000c13d000000400040043f000000000431043600000b7c063001980000001f0730018f00000000056400190000000308000367000028c70000613d000000000908034f000000000a040019000000009b09043c000000000aba043600000000005a004b000028c30000c13d000000000007004b000029160000613d000000000668034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000029160000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000000020600192b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b000028550000c13d00000060010000390000008003000039000000010020019000002a000000c13d0000000001010433000000000001004b000029f70000613d00000ae10010009c000029fe0000213d0000001f0010008c000029fe0000a13d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b000029fe0000c13d000000000001004b000029f70000c13d00002a000000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000000020c001900030000000d001d2b6a2b600000040f000000030d000029000000020c000029000000010220015f0003000000010355000000600110027000010adc0010019d00000adc03100197000000000003004b000028ab0000c13d000000600100003900000080040000390000000105000029000000010020019000002a000000c13d0000000001010433000000000001004b000029280000613d00000ae10010009c000029fe0000213d000000200010008c000029fe0000413d0000000001040433000000000001004b0000000002000039000000010200c039000000000021004b000029fe0000c13d000000000001004b00002a000000613d00000ae401500197000000400b00043d0000002402b00039000000000012043500000b540100004100000000001b043500000ae401c001970000000402b00039000000000012043500000000010004140000000400d0008c000029380000c13d000000200030008c00000020040000390000000004034019000029650000013d00000adc00b0009c00000adc0200004100000000020b4019000000400220021000000adc0010009c00000adc01008041000000c001100210000000000121019f00000b55011001c700000000020d001900030000000b001d2b6a2b600000040f000000030b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000029540000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000029500000c13d000000000006004b000029610000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002a090000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c000029f80000213d0000000100200190000029f80000c13d000000400010043f000000200030008c000029f70000813d000029fe0000013d00000b260100004100000000001004430000000001000412000000040010044300000020010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002a080000613d000000000101043b00000b3602000041000000000020044300000ae401100197000200000001001d0000000400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b37011001c700008002020000392b6a2b650000040f000000010020019000002a080000613d000000000101043b000000000001004b000029fe0000613d000000400500043d00000b5301000041000000000015043500000004015000390000000303000029000000000031043500000000010004140000000202000029000000040020008c000029b00000613d00000adc0050009c00000adc030000410000000003054019000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000b4a011001c7000200000005001d2b6a2b600000040f00000002050000290000000303000029000000600410027000010adc0040019d0003000000010355000000010020019000002a180000613d00000ae20050009c000029f80000213d000000400050043f00000000010004140000000104000029000000040040008c000029bc0000c13d00000001020000390000000101000031000000000001004b000029cd0000c13d000029f50000013d00000adc0010009c00000adc01008041000000c001100210000000000003004b000029c50000613d00000b40011001c700008009020000390000000005000019000029c60000013d00000000020400192b6a2b600000040f0003000000010355000000600110027000010adc0010019d00000adc01100197000000000001004b000029f50000613d00000ae20010009c000029f80000213d0000001f0410003900000b7c044001970000003f0440003900000b7c05400197000000400400043d0000000005540019000000000045004b0000000006000039000000010600403900000ae20050009c000029f80000213d0000000100600190000029f80000c13d000000400050043f000000000614043600000b7c031001980000001f0410018f00000000013600190000000305000367000029e80000613d000000000705034f000000007807043c0000000006860436000000000016004b000029e40000c13d000000000004004b000029f50000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000010020019000002a150000613d000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000100001900002b6c00010430000000400100043d00000b6f02000041000000000021043500000adc0010009c00000adc01008041000000400110021000000ae6011001c700002b6c00010430000000000001042f0000001f0530018f00000adf06300198000000400200043d000000000462001900002a240000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a100000c13d00002a240000013d000000400100043d00000b6d0200004100002a020000013d00000adc034001970000001f0530018f00000adf06300198000000400200043d000000000462001900002a240000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a200000c13d000000000005004b00002a310000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000adc0020009c00000adc020080410000004002200210000000000112019f00002b6c0001043000000b5a021000d1000000000001004b00002a3d0000613d00000000011200d900000b5a0010009c00002a3f0000c13d00000b5b0120012a000000000001042d00000b5801000041000000000010043f0000001101000039000000040010043f00000b4a0100004100002b6c000104300000000004010019000000400500043d00000044015000390000000000310435000000200150003900000b4b03000041000000000031043500000ae402200197000000240350003900000000002304350000004402000039000000000025043500000b880050009c00002aaf0000813d0000008002500039000000400020043f00000000030504330000000002000414000000040040008c00002a870000c13d00000001040000310000000002000019000000000004004b00002a9b0000613d00000ae20040009c00002aaf0000213d0000001f0140003900000b7c011001970000003f0110003900000b7c03100197000000400100043d0000000003310019000000000013004b0000000006000039000000010600403900000ae20030009c00002aaf0000213d000000010060019000002aaf0000c13d000000400030043f000000000341043600000b7c054001980000001f0640018f0000000004530019000000030700036700002a790000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b00002a750000c13d000000000006004b00002a9d0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f000000000054043500002a9d0000013d00000adc0010009c00000adc01008041000000400110021000000adc0030009c00000adc030080410000006003300210000000000113019f00000adc0020009c00000adc02008041000000c002200210000000000121019f00000000020400192b6a2b600000040f000000010220015f0003000000010355000000600110027000010adc0010019d00000adc04100197000000000004004b00002a5d0000c13d00000060010000390000008003000039000000010020019000002ab50000c13d0000000001010433000000000001004b00002aae0000613d00000ae10010009c00002abd0000213d0000001f0010008c00002abd0000a13d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b00002abd0000c13d000000000001004b00002ab50000613d000000000001042d00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000400100043d00000b6f02000041000000000021043500000adc0010009c00000adc01008041000000400110021000000ae6011001c700002b6c00010430000000000100001900002b6c000104300003000000000002000000400200043d00000b8901000041000100000002001d000000000012043500000b260100004100000000001004430000000001000412000000040010044300000060010000390000002400100443000000000100041400000adc0010009c00000adc01008041000000c00110021000000b27011001c700008005020000392b6a2b650000040f000000010020019000002b250000613d000000000201043b000000000100041400000ae402200197000000040020008c00002ae10000c13d0000000005000415000000030550008a00000005055002100000000103000031000000200030008c00000020040000390000000004034019000000010b00002900002b100000013d000000010300002900000adc0030009c00000adc03008041000000400330021000000adc0010009c00000adc01008041000000c001100210000000000131019f00000ae6011001c72b6a2b650000040f000000010b000029000000600310027000000adc03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002afb0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002af70000c13d000000000006004b00002b080000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000020550008a00000005055002100000000100200190000000000100001900002b220000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ae20010009c00002b260000213d000000010020019000002b260000c13d000000400010043f0000001f0030008c00002b230000a13d00000000010b043300000ae40010009c00002b230000213d0000000502500270000000000201001f000000000001042d000000000100001900002b6c00010430000000000001042f00000b5801000041000000000010043f0000004101000039000000040010043f00000b4a0100004100002b6c00010430000000000001042f00000adc0010009c00000adc01008041000000400110021000000adc0020009c00000adc020080410000006002200210000000000112019f000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b40011001c700008010020000392b6a2b650000040f000000010020019000002b400000613d000000000101043b000000000001042d000000000100001900002b6c0001043000000000050100190000000000200443000000050030008c00002b500000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b00002b480000413d00000adc0030009c00000adc030080410000006001300210000000000200041400000adc0020009c00000adc02008041000000c002200210000000000112019f00000b8a011001c700000000020500192b6a2b650000040f000000010020019000002b5f0000613d000000000101043b000000000001042d000000000001042f00002b63002104210000000102000039000000000001042d0000000002000019000000000001042d00002b68002104230000000102000039000000000001042d0000000002000019000000000001042d00002b6a0000043200002b6b0001042e00002b6c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffd039f62200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000140000000000000000000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000000000000000000000000000fffffffffffffec07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffee97f7f3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f242862100000000000000000000000000000000000000000000000000000000fbfa77cf0000000000000000000000000000000000000000000000000000000053796e635377617020436c6173736963204c5000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf2f000000000000000000000000000000000000000000000000000000000000002d43000000000000000000000000000000000000000000000000000000000000534c50000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000001c0000001000000000000000000000000000000000000000000000000000000000000000000000000007132bb7e00000000000000000000000000000000000000000000000000000000d505acce00000000000000000000000000000000000000000000000000000000ee97f7f200000000000000000000000000000000000000000000000000000000fbfa77ce00000000000000000000000000000000000000000000000000000000fbfa77cf00000000000000000000000000000000000000000000000000000000ff9c8ac600000000000000000000000000000000000000000000000000000000fff6cae900000000000000000000000000000000000000000000000000000000ee97f7f300000000000000000000000000000000000000000000000000000000f66eab5b00000000000000000000000000000000000000000000000000000000d9d98ce300000000000000000000000000000000000000000000000000000000d9d98ce400000000000000000000000000000000000000000000000000000000da81573100000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000d505accf00000000000000000000000000000000000000000000000000000000d6ea073d00000000000000000000000000000000000000000000000000000000a5a4103000000000000000000000000000000000000000000000000000000000b1dd61b500000000000000000000000000000000000000000000000000000000b1dd61b600000000000000000000000000000000000000000000000000000000bc25cf7700000000000000000000000000000000000000000000000000000000d21220a700000000000000000000000000000000000000000000000000000000a5a4103100000000000000000000000000000000000000000000000000000000a9059cbb000000000000000000000000000000000000000000000000000000008b4c546f000000000000000000000000000000000000000000000000000000008b4c54700000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a287c795000000000000000000000000000000000000000000000000000000007132bb7f000000000000000000000000000000000000000000000000000000007ecebe000000000000000000000000000000000000000000000000000000000027b0bce9000000000000000000000000000000000000000000000000000000005a76f25d00000000000000000000000000000000000000000000000000000000613255aa00000000000000000000000000000000000000000000000000000000613255ab0000000000000000000000000000000000000000000000000000000067e4ac2c0000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000005a76f25e000000000000000000000000000000000000000000000000000000005cffe9de00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce567000000000000000000000000000000000000000000000000000000003644e51500000000000000000000000000000000000000000000000000000000443cb4bc0000000000000000000000000000000000000000000000000000000027b0bcea000000000000000000000000000000000000000000000000000000002c0198cc000000000000000000000000000000000000000000000000000000000902f1ab000000000000000000000000000000000000000000000000000000000dfe1680000000000000000000000000000000000000000000000000000000000dfe16810000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd000000000000000000000000000000000000000000000000000000000902f1ac00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000006fdde020000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000007f293f70000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000003e7286a8da5cb5b00000000000000000000000000000000000000000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000400000080000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000ffffff00000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000080000000000000000002000000000000000000000000000000000000400000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a000000000000000000000000000000ffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000ffffffffffffffffff000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b83020000020000000000000000000000000000002400000000000000000000000084f513e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f0200000000000000000000000000000000000060000000000000000000000000d175a80c109434bb89948928ab2475a6647c94244cb70002197896423c883363796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913202000002000000000000000000000000000000040000000000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0200000000000000000000000000000000000000000000000000000000000000c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc68b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f000000000000000000000000000000000000000000000000ffffffffffffff3f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9000000000000000000000000000000000000000000000000ffffffffffffff1f1901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f000000000000000000000000000000000000008000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffffffffffe0000000000000000000000000000000000000000000000003ffffffffffffffe0036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db000000000000000000000000000000000000000240000028000000000000000000200000000000000000000000000000000000080000000000000000000000000d78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822a6205f24a082c01e6c705e20c1a026c246eedf9800b87b84440f05e8271aaf272e1a7d4d00000000000000000000000000000000000000000000000000000000f9609f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000608dbcbb00000000000000000000000000000000000000000000000000000000aa077b6dc26efdfd606d4340c04a5a222ff968ec199f0b184f4c0f7a5c8e8d714e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000008000000000000000000000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000000de0b6b3a764000023e30c8b00000000000000000000000000000000000000000000000000000000439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd908c379a00000000000000000000000000000000000000000000000000000000049455243333135365f43414c4c4241434b5f4641494c454400000000000000000000000000000000000000000000000000000064000000000000000000000000843e8218000000000000000000000000000000000000000000000000000000000d7d75e01ab95780d3cd1c8ec0dd6c2ce19e3a20427eec8bf53283b6fb8e95f04e54000000000000000000000000000000000000000000000000000000000000494e53554646494349454e545f464c4153485f4c4f414e5f4645455f414d4f550000000000000000000000000000000000000084000000000000000000000000494e56414c49445f504f53545f4c4f414e5f42414c414e434500000000000000494e53554646494349454e545f464c4153485f4c4f414e5f42414c414e4345007fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a01626ba7e000000000000000000000000000000000000000000000000000000008baa579f00000000000000000000000000000000000000000000000000000000203d82d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000002c00000000000000000b12d13eb000000000000000000000000000000000000000000000000000000001d59ca820000000000000000000000000000000000000000000000000000000090b8ec18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000800000000000000000422815a3c1bfb8dd07ed3e682f42d4d640425d52f0b08da06718c8a2932e2802a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4900000000000000000000000000000001000000000000000000000000000000002049973000000000000000000000000000000000000000000000000000000000a8137fff86647d8a402117b9c5dbda627f721d3773338fb9678c83e54ed3908035278d1200000000000000000000000000000000000000000000000000000000d226f9d40000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a7000000000000000000000000000000000000000000000000000000002c0198cc00000000000000000000000000000000000000000000000000000000d505accf00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1795d89b4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffc0000000000000000000000000000000000000000000000000ffffffffffffffdf00000000000000000000000000000000000000000000000100000000000000004625a94d000000000000000000000000000000000000000000000000000000000a992e0c00000000000000000000000000000000000000000000000000000000abcef554000000000000000000000000000000000000000000000000000000008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925000000000000000000000000000000000000000000000000ffffffffffffff804ccb20c00000000000000000000000000000000000000000000000000000000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c03decba0c0ee764cd65b60d582689995e65b36f16c2a95754a88aed4b942503
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.