logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: ff8ffa85fdf050870f435f3f9bc826bae0cb2fb2dfa1cd8fbeffebe2cde82cf6 Type SC

Block: 936ce0a00db2a53eeb47b3da86f0a6f864d0f3737eca5fa2294cf82793379408 (VALID)
built BLID : d36c256004abed20b29eb5d1504bec04bb84612a028af4f1e4a98b7c19c04d09
Tx RootHash: c04672c229b4cd90add290ceb7c8f0da93c24e79f90f0cc565414ca7ffc6ecdf built height : 3418399
Timestamp: 1710204603004 Timestamp [UTC]: 2024-03-12 00:50:03 Age [y:d:h:m:s]: 12694:44:13.076
Block: 3418403 Fee: 0.30610 Tx size: 21.525 kB
Tx version: 1 No of confirmations: 2413702 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.30610 Deposited to SC 0.00000
Sender : dero1qypsxfl6627n7rm6va3au3k5eawragr7svty5c2qmkfdf5p5x789jqg8s4trf
address
dero1qypsxfl6627n7rm6va3au3k5eawragr7svty5c2qmkfdf5p5x789jqg8s4trf
dero1qyqcahvjw2ffdutr3y7q42h8rqlzemak44gxe39xzk6c8zajx55q6qgkvc7xs
SC Balance: 0.00000 DERO
SC CODE:
  
SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:' // .-. // (o o) // | O \ boo! // | \ // '~~~~' // ? // /\ ___ // (oo) |RIP| // /||\ |___| ////////////////////////////////////// // Ghost Exchange v1.1 // Use at your own risk // For more info visit: ghost.trading ////////////////////////////////////// Function Initialize() Uint64 10 STORE("owner", SIGNER()) 20 STORE("feeTo", SIGNER()) 30 STORE("nameHdr", "Ghost Exchange") 40 STORE("descrHdr", "Phantom-powered finance") 50 RETURN 0 End Function // Provided liquidity will be tracked using BOO tokens. // BOO TOKENS ARE NOT ASSETS. Each account's BOO balance per token pair is stored // inside the Smart Contract as a variable with the following schema: // <provider_address>:BOO:<asset_address> // The total liquidity provided by all LPs of a pair at a given moment is denominated supply. // supply is tracked inside the Smart Contract as a variable with the following schema: // <asset_address>:BOO // Deposit assets and DERO at current ratio to get BOO tokens. // {asset_address} The deposited asset's SCID // {min_liquidity} Minimum number of BOO sender will get if total BOO supply is greater than 0. // {min_liquidity} does nothing when total BOO supply is 0. Function AddLiquidity(asset_address String, min_liquidity Uint64) Uint64 01 DIM total_liquidity, dero_reserve, asset_reserve, asset_amount, liquidity_minted, dero_deposited, asset_deposited, SYS_MAX_VALUE as Uint64 02 LET SYS_MAX_VALUE = 18446744073709551 // Uint64.Max/1000 to protect from infinite supply tokens 03 LET dero_deposited = DEROVALUE() 04 LET asset_deposited = ASSETVALUE(HEXDECODE(asset_address)) 10 IF (asset_deposited > 0 & dero_deposited > 0 ) THEN GOTO 30 20 GOTO 666 30 LET total_liquidity = get_supply_per_asset(asset_address) // Pair already exists 40 IF total_liquidity > 0 THEN GOTO 41 ELSE GOTO 60 41 IF min_liquidity > 0 THEN GOTO 43 42 GOTO 666 43 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 44 LET asset_reserve = get_asset_reserve(asset_address) 45 IF will_addition_overflow(asset_reserve, asset_deposited) == 1 THEN GOTO 666 46 mintFee(dero_reserve, asset_reserve, asset_address) 47 LET total_liquidity = get_supply_per_asset(asset_address) // Must be defined again since totalSupply can update in mintFee 48 LET asset_amount = mult_div(dero_deposited, asset_reserve , dero_reserve + 1) 49 LET liquidity_minted = mult_div(dero_deposited, total_liquidity, dero_reserve) 50 IF asset_deposited >= asset_amount & liquidity_minted >= min_liquidity & (asset_reserve + asset_deposited <= SYS_MAX_VALUE) THEN GOTO 52 51 GOTO 666 52 increase_provider_liquidity_by(SIGNER(), liquidity_minted, asset_address) 53 set_supply_per_asset(total_liquidity + liquidity_minted, asset_address) 54 IF asset_deposited == asset_amount THEN GOTO 56 // Return any reminding assets 55 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_deposited - asset_amount, HEXDECODE(asset_address)) // Increase the dero reserve record for this asset 56 set_dero_reserve_per_asset(dero_reserve + dero_deposited, asset_address) // Increase the asset reserve record 57 set_asset_reserve(asset_reserve + asset_amount, asset_address) 58 STORE(asset_address+":rootKLast", sqrt(dero_reserve + dero_deposited) * sqrt(asset_reserve + asset_amount)) // Return gracefully 59 GOTO 70 // else // Creating pair 60 IF dero_deposited >= 1000 & asset_deposited <= SYS_MAX_VALUE THEN GOTO 62 61 GOTO 666 // Initialize the asset reserve record for this asset 62 set_asset_reserve(asset_deposited, asset_address) 63 DIM initial_liquidity as Uint64 64 LET initial_liquidity = dero_deposited 65 set_supply_per_asset(initial_liquidity, asset_address) // Initialize the dero reserve record for this asset 66 set_dero_reserve_per_asset(dero_deposited, asset_address) 67 STORE(asset_address+":rootKLast", sqrt(asset_deposited) * sqrt(dero_deposited)) 68 increase_provider_liquidity_by(SIGNER(), initial_liquidity, asset_address) 70 RETURN 0 666 RETURN 1 End Function // Burn BOO tokens to withdraw Dero & assets at current ratio. // {amount} Amount of BOO burned. // {min_dero} Minimum DERO withdrawn. // {min_assets} Minimum assets withdrawn. // {asset_address} The deposited asset's SCID Function RemoveLiquidity(amount Uint64, min_dero Uint64, min_assets Uint64, asset_address String) Uint64 01 DIM total_liquidity, dero_reserve, asset_reserve, dero_amount, asset_amount as Uint64 10 IF amount > 0 & (min_dero > 0 & min_assets > 0) & ( get_provider_liquidity(SIGNER(), asset_address) >= amount ) THEN GOTO 30 20 GOTO 666 30 LET total_liquidity = get_supply_per_asset(asset_address) 40 IF total_liquidity > 0 THEN GOTO 60 50 GOTO 666 60 LET asset_reserve = get_asset_reserve(asset_address) 70 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 80 mintFee(dero_reserve, asset_reserve, asset_address) 90 LET total_liquidity = get_supply_per_asset(asset_address) // Must be defined again since totalSupply can update in mintFee 100 LET dero_amount = mult_div(amount, dero_reserve, total_liquidity) 110 LET asset_amount = mult_div(amount, asset_reserve, total_liquidity) 120 IF dero_amount >= min_dero & asset_amount >= min_assets THEN GOTO 140 130 GOTO 666 140 decrease_provider_liquidity_by(SIGNER(), amount, asset_address) 150 set_supply_per_asset(total_liquidity - amount, asset_address) 160 set_dero_reserve_per_asset(dero_reserve - dero_amount, asset_address) 170 set_asset_reserve(asset_reserve - asset_amount, asset_address) 180 STORE(asset_address+":rootKLast", sqrt(dero_reserve - dero_amount) * sqrt(asset_reserve - asset_amount) ) 190 SEND_DERO_TO_ADDRESS(SIGNER(), dero_amount) 200 SEND_ASSET_TO_ADDRESS(SIGNER(),asset_amount, HEXDECODE(asset_address)) 210 RETURN 0 666 RETURN 1 End Function // Pricing function for converting between DERO & Assets. // {input_amount} Amount of DERO or Assets being sold. // {input_reserve} Amount of DERO or Assets (input type) in exchange reserves. // {output_reserve} Amount of DERO or Assets (output type) in exchange reserves. Function getInputPrice(input_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64 01 DIM SYS_MAX_VALUE as Uint64 02 LET SYS_MAX_VALUE = 18446744073709551 10 IF input_reserve > 0 & output_reserve > 0 & input_amount <= SYS_MAX_VALUE THEN GOTO 30 20 PANIC 30 DIM input_amount_with_fee as Uint64 40 LET input_amount_with_fee = input_amount * 997 50 IF will_addition_overflow(input_reserve * 1000, input_amount * 1000) == 0 THEN GOTO 70 60 PANIC // Infinite supply token attack 70 RETURN mult_div(input_amount_with_fee, output_reserve, (input_reserve * 1000) + input_amount_with_fee) End Function // Pricing function for converting between DERO & Assets. // {output_amount} Amount of DERO or Assets being bought. // {input_reserve} Amount of DERO or Assets (input type) in exchange reserves. // {output_reserve} Amount of DERO or Assets (output type) in exchange reserves. Function getOutputPrice(output_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64 10 IF input_reserve > 0 && output_reserve > 0 && output_reserve > output_amount THEN GOTO 30 20 PANIC 30 RETURN mult_div(input_reserve * 1000, output_amount, (output_reserve - output_amount) * 997 + 1) End Function Function deroToAssetInput(dero_sold Uint64, min_assets Uint64, asset_address String) Uint64 10 IF (dero_sold > 0 & min_assets > 0) THEN GOTO 30 20 PANIC 30 DIM assets_bought, asset_reserve, dero_reserve as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 60 LET assets_bought = getInputPrice(dero_sold, dero_reserve, asset_reserve) 70 IF assets_bought >= min_assets THEN GOTO 90 80 PANIC 90 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, HEXDECODE(asset_address)) 100 set_asset_reserve(asset_reserve - assets_bought, asset_address) 110 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address) 120 RETURN 0 End Function // Convert DERO to Assets. // User specifies exact input (DEROVALUE()). // User cannot specify minimum output. // {asset_address} Address of the asset to trade. Function DeroToAssetSwapInput(asset_address String) Uint64 10 RETURN deroToAssetInput(DEROVALUE(), 1, asset_address) End Function // Convert DERO to Assets. // User specifies exact input (DEROVALUE()) & minimum output. // {min_assets} Minimum Assets bought. // {asset_address} Address of the asset to trade. Function DeroToAssetSwapInputMin(min_assets Uint64, asset_address String) Uint64 10 RETURN deroToAssetInput(DEROVALUE(), min_assets, asset_address) End Function Function deroToAssetOutput(assets_bought Uint64, max_dero Uint64, asset_address String) Uint64 10 IF (assets_bought > 0 & max_dero > 0) THEN GOTO 30 20 PANIC 30 DIM asset_reserve, dero_reserve, dero_sold, dero_refund as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 41 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 50 LET dero_sold = getOutputPrice(assets_bought, dero_reserve, asset_reserve) 60 IF dero_sold > max_dero THEN GOTO 61 ELSE GOTO 70 61 PANIC 70 LET dero_refund = max_dero - dero_sold 80 IF dero_refund == 0 THEN GOTO 100 90 SEND_DERO_TO_ADDRESS(SIGNER(), dero_refund) 100 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, HEXDECODE(asset_address)) 110 set_asset_reserve(asset_reserve - assets_bought, asset_address) 120 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address) 130 RETURN 0 End Function // Convert DERO to Assets. // User specifies maximum input (DEROVALUE()) & exact output. // {assets_bought} Amount of Assets bought. // {asset_address} Address of the asset to trade. Function DeroToAssetSwapOutput(assets_bought Uint64, asset_address String) Uint64 10 RETURN deroToAssetOutput(assets_bought, DEROVALUE(), asset_address) End Function Function assetToDeroInput(assets_sold Uint64, min_dero Uint64, asset_address String) Uint64 10 IF (assets_sold > 0 & min_dero > 0) THEN GOTO 30 20 PANIC 30 DIM asset_reserve, dero_bought as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_bought = getInputPrice(assets_sold, asset_reserve, get_dero_reserve_per_asset(asset_address)) 60 IF dero_bought >= min_dero THEN GOTO 80 70 PANIC 80 SEND_DERO_TO_ADDRESS(SIGNER(),dero_bought) 90 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address) 100 set_asset_reserve(asset_reserve + assets_sold, asset_address) 110 RETURN 0 End Function // Convert Assets to DERO. // User specifies exact input (ASSETVALUE(asset_address)) & minimum output. // {min_dero} Minimum DERO purchased. // {asset_address} Address of the asset to trade. Function AssetToDeroSwapInput(min_dero Uint64, asset_address String) Uint64 10 RETURN assetToDeroInput(ASSETVALUE(HEXDECODE(asset_address)), min_dero, asset_address) End Function Function assetToDeroOutput(dero_bought Uint64, max_assets Uint64 , asset_address String) Uint64 10 IF dero_bought > 0 THEN GOTO 30 20 PANIC 30 DIM asset_reserve, assets_sold, asset_refund as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET assets_sold = getOutputPrice(dero_bought, asset_reserve, get_dero_reserve_per_asset(asset_address)) // assets_sold is always > zero 60 IF max_assets >= assets_sold THEN GOTO 80 70 PANIC 80 SEND_DERO_TO_ADDRESS(SIGNER(), dero_bought) 90 LET asset_refund = max_assets - assets_sold 100 IF asset_refund == 0 THEN GOTO 120 110 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_refund, HEXDECODE(asset_address)) 120 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address) 130 set_asset_reserve(asset_reserve + assets_sold, asset_address) 140 RETURN 0 End Function // Convert Assets to DERO. // User specifies maximum input (ASSETVALUE(asset_address)) & exact output. // {dero_bought} Amount of DERO purchased. // {asset_address} Address of the asset to trade. Function AssetToDeroSwapOutput(dero_bought Uint64, asset_address String) Uint64 10 RETURN assetToDeroOutput(dero_bought, ASSETVALUE(HEXDECODE(asset_address)), asset_address) End Function // Public price function for DERO to Asset trades with an exact input. // {dero_sold} Amount of DERO sold. // {asset_address} Address of the asset to trade. // @returns Amount of Assets that can be bought with input DERO. Function GetDeroToAssetInputPrice(dero_sold Uint64, asset_address String) Uint64 10 IF dero_sold > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getInputPrice(dero_sold, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address)) End Function // Public price function for DERO to Asset trades with an exact output. // {assets_bought} Amount of Assets bought. // {asset_address} Address of the asset to trade. // @returns Amount of DERO needed to buy output Assets. Function GetDeroToAssetOutputPrice(assets_bought Uint64, asset_address String) Uint64 10 IF assets_bought > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getOutputPrice(assets_bought, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address)) End Function // Public price function for Asset to DERO trades with an exact input. // {assets_sold} Amount of Assets sold. // {asset_address} Address of the asset to trade. // @returns Amount of DERO that can be bought with input Assets. Function GetAssetToDeroInputPrice(assets_sold Uint64, asset_address String) Uint64 10 IF assets_sold > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getInputPrice(assets_sold, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address)) End Function // Public price function for Asset to DERO trades with an exact output. // {dero_bought} Amount of output DERO. // {asset_address} Address of the asset to trade. // @returns Amount of Assets needed to buy output DERO. Function GetAssetToDeroOutputPrice(dero_bought Uint64, asset_address String) Uint64 10 IF dero_bought > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getOutputPrice(dero_bought, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address)) End Function Function mintFee(reserve0 Uint64, reserve1 Uint64, asset_address String) 10 DIM feeTo as String 11 DIM rootKLast as Uint64 20 LET feeTo = LOAD("feeTo") // Get the last root k for the asset 30 LET rootKLast = LOAD(asset_address+":rootKLast") 40 IF rootKLast != 0 THEN GOTO 50 41 RETURN 50 DIM rootK as Uint64 60 LET rootK = sqrt(reserve0) * sqrt(reserve1) 70 IF rootK > rootKLast THEN GOTO 80 71 RETURN 80 DIM supply, liquidity_minted as Uint64 90 LET supply = get_supply_per_asset(asset_address) 100 LET liquidity_minted = mult_div(supply, rootK - rootKLast, rootK * 5 + rootKLast) 110 IF liquidity_minted > 0 THEN GOTO 111 ELSE GOTO 120 111 increase_provider_liquidity_by(feeTo, liquidity_minted, asset_address) 112 set_supply_per_asset(supply + liquidity_minted, asset_address) 120 RETURN End Function // Helper functions // Encapsulated to better understand what's happening and absctract BOO storage schema // from main code. Function set_supply_per_asset(amount Uint64, asset_address String) 10 STORE(asset_address+":BOO", amount) 20 RETURN End Function Function get_supply_per_asset(asset_address String) Uint64 10 IF EXISTS(asset_address+":BOO") THEN GOTO 30 20 RETURN 0 30 RETURN LOAD(asset_address+":BOO") End Function Function set_dero_reserve_per_asset(amount Uint64, asset_address String) 10 STORE(asset_address+":DERO", amount) 20 RETURN End Function Function get_dero_reserve_per_asset(asset_address String) Uint64 10 RETURN LOAD(asset_address+":DERO") End Function Function set_asset_reserve(amount Uint64, asset_address String) 10 STORE(asset_address, amount) 20 RETURN End Function Function get_asset_reserve(asset_address String) Uint64 20 RETURN LOAD(asset_address) End Function Function increase_provider_liquidity_by(provider_address String, amount Uint64, asset_address String) 10 IF EXISTS(ADDRESS_STRING(provider_address)+":BOO:"+asset_address) THEN GOTO 40 20 STORE(ADDRESS_STRING(provider_address)+":BOO:"+asset_address, amount) 30 RETURN 40 STORE(ADDRESS_STRING(provider_address)+":BOO:"+asset_address, get_provider_liquidity(provider_address, asset_address) + amount) 50 RETURN End Function Function decrease_provider_liquidity_by(provider_address String, amount Uint64, asset_address String) 10 STORE(ADDRESS_STRING(provider_address)+":BOO:"+asset_address, get_provider_liquidity(provider_address, asset_address) - amount) 20 RETURN End Function Function get_provider_liquidity(provider_address String, asset_address String) Uint64 10 RETURN LOAD(ADDRESS_STRING(provider_address)+":BOO:"+asset_address) End Function Function will_addition_overflow(a Uint64, b Uint64) Uint64 10 IF (a > 18446744073709551615 - b) THEN GOTO 100 20 RETURN 0 // No overflow 100 RETURN 1 // Overflow End Function // From Pieswap // lossless (a * b ) / c Function mult_div(a Uint64, b Uint64, c Uint64) Uint64 10 DIM base, maxdiv AS Uint64 20 LET base = 4294967296 // (1<<32) 30 LET maxdiv = (base-1)*base + (base-1) 50 DIM res AS Uint64 60 LET res = (a/c) * b + (a%c) * (b/c) 70 LET a = a % c 80 LET b = b % c 90 IF (a == 0 || b == 0) THEN GOTO 1000 100 IF (c >= base) THEN GOTO 200 110 LET res = res + (a*b/c) 120 GOTO 1000 200 DIM norm AS Uint64 210 LET norm = maxdiv/c 220 LET c = c * norm 230 LET a = a * norm 300 DIM ah, al, bh, bl, ch, cl AS Uint64 310 LET ah = a / base 320 LET al = a % base 330 LET bh = b / base 340 LET bl = b % base 350 LET ch = c / base 360 LET cl = c % base 400 DIM p0, p1, p2 AS Uint64 410 LET p0 = al*bl 420 LET p1 = p0 / base + al*bh 430 LET p0 = p0 % base 440 LET p2 = p1 / base + ah*bh 450 LET p1 = (p1 % base) + ah*bl 460 LET p2 = p2 + p1 / base 470 LET p1 = p1 % base 500 DIM q0, q1, rhat AS Uint64 510 LET p2 = p2 % c 520 LET q1 = p2 / ch 530 LET rhat = p2 % ch 600 IF (q1 < base && (rhat >= base || q1*cl <= rhat*base+p1)) THEN GOTO 700 610 LET q1 = q1 - 1 620 LET rhat = rhat + ch 630 GOTO 600 700 LET p1 = ((p2 % base) * base + p1) - q1 * cl 710 LET p2 = (p2 / base * base + p1 / base) - q1 * ch 720 LET p1 = (p1 % base) + (p2 % base) * base 730 LET q0 = p1 / ch 740 LET rhat = p1 % ch 800 IF (q0 < base && (rhat >= base || q0*cl <= rhat*base+p0)) THEN GOTO 900 810 LET q0 = q0 - 1 820 LET rhat = rhat + ch 830 GOTO 800 900 LET res = res + q0 + q1 * base 1000 RETURN res End Function // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) Function sqrt(y Uint64) Uint64 10 IF y > 3 THEN GOTO 20 ELSE GOTO 90 20 DIM x,z as Uint64 30 LET z = y 40 LET x = y / 2 + 1 50 IF x < z THEN GOTO 60 ELSE GOTO 130 60 LET z = x 70 LET x = (y / x + x) / 2 80 GOTO 50 90 IF y != 0 THEN GOTO 110 ELSE GOTO 120 110 RETURN 1 120 RETURN 0 130 RETURN z End Function Function UpdateCode(code String) Uint64 10 IF LOAD("owner") == SIGNER() THEN GOTO 30 20 RETURN 1 30 UPDATE_SC_CODE(code) 40 RETURN 0 End Function ']


Prove to someone that you have sent them DERO in this transaction

proof can be obtained using wallet command in dero-wallet-cli or from the statement
Note: proof is sent to the server, as the calculations are done on the server side


TX hex bytes
01000005009fd2d001d36c256004abed20b29eb5d1504bec04bb84612a028af4f1e4a98b7c19c04d09010000000000000000000000000000000000000000000000000000000000000000000009823681de76221bb9c249a794f5b8788c3b5bc5cacc0fe881dd30fd917792f709e2e2d571f912a0bed9a843ab50469e3b1807281951db5081ec383ae8853c2d1d8aa0a032be73c2d8c78d844f95c6bf0d9b3c01120d2d82504b21d51472d3d82f9cebd3f4aa502215a51d79b66ce8b6d37e3cf3df3fa69affba4c0f9d505c18a7f551f69cf5f8f8d87fee6148c5b35e42010792ef012c89a5de3905fb6e3e12ee55495d06e669016bb89e74404178b2524cd6ab3b2a016972cdd299a741b0b8d9c0212bb62fc2575e2dbb1e0f784ad39c6fb251ab41b6dbef6237f6fd515172f891393fe0001342c1f35f913c3613ae1145a044f67a175cd1b5898eaf44bfa1da6258a42f9700c04672c229b4cd90add290ceb7c8f0da93c24e79f90f0cc565414ca7ffc6ecdfe79e01a26853435f434f444553794f4e0d0a2f2f202020202020202020202e2d2e0d0a2f2f202020202020202020286f206f29200d0a2f2f2020202020202020207c204f205c2020626f6f210d0a2f2f2020202020202020207c202020205c0d0a2f2f202020202020202020277e7e7e7e270d0a2f2f202020203f0d0a2f2f2020202f5c202020202020202020202020202020205f5f5f0d0a2f2f2020286f6f2920202020202020202020202020207c5249507c0d0a2f2f20202f7c7c5c20202020202020202020202020207c5f5f5f7c0d0a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f0d0a2f2f2047686f73742045786368616e67652076312e310d0a2f2f2055736520617420796f7572206f776e207269736b0d0a2f2f20466f72206d6f726520696e666f2076697369743a2067686f73742e74726164696e670d0a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f0d0a0d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a2020202031302053544f524528226f776e6572222c205349474e45522829290d0a2020202032302053544f52452822666565546f222c205349474e45522829290d0a2020202033302053544f524528226e616d65486472222c202247686f73742045786368616e676522290d0a2020202034302053544f524528226465736372486472222c20225068616e746f6d2d706f77657265642066696e616e63652229200d0a202020203530202052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a2f2f2050726f7669646564206c69717569646974792077696c6c20626520747261636b6564207573696e6720424f4f20746f6b656e732e200d0a2f2f20424f4f20544f4b454e5320415245204e4f54204153534554532e2045616368206163636f756e74277320424f4f2062616c616e63652070657220746f6b656e20706169722069732073746f726564200d0a2f2f20696e736964652074686520536d61727420436f6e74726163742061732061207661726961626c6520776974682074686520666f6c6c6f77696e6720736368656d613a0d0a2f2f203c70726f76696465725f616464726573733e3a424f4f3a3c61737365745f616464726573733e0d0a2f2f2054686520746f74616c206c69717569646974792070726f766964656420627920616c6c204c5073206f6620612070616972206174206120676976656e206d6f6d656e742069732064656e6f6d696e6174656420737570706c792e0d0a2f2f20737570706c7920697320747261636b656420696e736964652074686520536d61727420436f6e74726163742061732061207661726961626c6520776974682074686520666f6c6c6f77696e6720736368656d613a0d0a2f2f203c61737365745f616464726573733e3a424f4f0d0a2f2f204465706f7369742061737365747320616e64204445524f2061742063757272656e7420726174696f20746f2067657420424f4f20746f6b656e732e200d0a2f2f207b61737365745f616464726573737d20546865206465706f7369746564206173736574277320534349440d0a2f2f207b6d696e5f6c69717569646974797d204d696e696d756d206e756d626572206f6620424f4f2073656e6465722077696c6c2067657420696620746f74616c20424f4f20737570706c792069732067726561746572207468616e20302e0d0a2f2f207b6d696e5f6c69717569646974797d20646f6573206e6f7468696e67207768656e20746f74616c20424f4f20737570706c7920697320302e0d0a46756e6374696f6e204164644c69717569646974792861737365745f6164647265737320537472696e672c206d696e5f6c69717569646974792055696e743634292055696e7436340d0a2020202030312044494d20746f74616c5f6c69717569646974792c206465726f5f726573657276652c2061737365745f726573657276652c2061737365745f616d6f756e742c206c69717569646974795f6d696e7465642c206465726f5f6465706f73697465642c2061737365745f6465706f73697465642c205359535f4d41585f56414c55452061732055696e7436340d0a202020203032204c4554205359535f4d41585f56414c5545203d203138343436373434303733373039353531202f2f2055696e7436342e4d61782f3130303020746f2070726f746563742066726f6d20696e66696e69746520737570706c7920746f6b656e730d0a202020203033204c4554206465726f5f6465706f7369746564203d204445524f56414c554528290d0a202020203034204c45542061737365745f6465706f7369746564203d20415353455456414c5545284845584445434f44452861737365745f6164647265737329290d0a202020203130204946202861737365745f6465706f7369746564203e20302026206465726f5f6465706f7369746564203e20302029205448454e20474f544f2033300d0a20202020323020474f544f203636360d0a202020203330204c455420746f74616c5f6c6971756964697479203d20206765745f737570706c795f7065725f61737365742861737365745f6164647265737329200d0a202020202f2f205061697220616c7265616479206578697374730d0a20202020343020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f20343120454c534520474f544f2036300d0a20202020202020203431204946206d696e5f6c6971756964697479203e2030205448454e20474f544f2034330d0a2020202020202020343220474f544f2036363620200d0a20202020202020203433204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329200d0a20202020202020203434204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020202020202034352049462077696c6c5f6164646974696f6e5f6f766572666c6f772861737365745f726573657276652c2061737365745f6465706f736974656429203d3d2031205448454e20474f544f203636360d0a20202020202020203436206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020202020203437204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f6164647265737329202f2f204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202020202020203438204c45542061737365745f616d6f756e74203d2020206d756c745f646976286465726f5f6465706f73697465642c2061737365745f72657365727665202c206465726f5f72657365727665202b2031290d0a20202020202020203439204c4554206c69717569646974795f6d696e746564203d206d756c745f646976286465726f5f6465706f73697465642c20746f74616c5f6c69717569646974792c206465726f5f72657365727665290d0a202020202020202035302049462061737365745f6465706f7369746564203e3d2061737365745f616d6f756e742026206c69717569646974795f6d696e746564203e3d206d696e5f6c69717569646974792026202861737365745f72657365727665202b2061737365745f6465706f7369746564203c3d205359535f4d41585f56414c554529205448454e20474f544f2035320d0a2020202020202020353120474f544f203636360d0a2020202020202020353220696e6372656173655f70726f76696465725f6c69717569646974795f6279285349474e455228292c206c69717569646974795f6d696e7465642c2061737365745f6164647265737329200d0a20202020202020203533207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a202020202020202035342049462061737365745f6465706f7369746564203d3d2061737365745f616d6f756e74205448454e20474f544f2035360d0a20202020202020202f2f2052657475726e20616e792072656d696e64696e67206173736574730d0a202020202020202035352053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f6465706f7369746564202d2061737365745f616d6f756e742c204845584445434f44452861737365745f6164647265737329290d0a20202020202020202f2f20496e63726561736520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203536207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f6465706f73697465642c2061737365745f61646472657373290d0a20202020202020202f2f20496e637265617365207468652061737365742072657365727665207265636f72640d0a20202020202020203537207365745f61737365745f726573657276652861737365745f72657365727665202b2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020202020202035382053544f52452861737365745f616464726573732b223a726f6f744b4c617374222c202073717274286465726f5f72657365727665202b206465726f5f6465706f736974656429202a20737172742861737365745f72657365727665202b2061737365745f616d6f756e7429290d0a20202020202020202f2f2052657475726e20677261636566756c6c790d0a2020202020202020353920474f544f2037300d0a202020202f2f20656c73650d0a202020202f2f204372656174696e67207061697220200d0a202020203630204946206465726f5f6465706f7369746564203e3d203130303020262061737365745f6465706f7369746564203c3d205359535f4d41585f56414c5545205448454e20474f544f2036320d0a2020202020202020363120474f544f203636360d0a20202020202020202f2f20496e697469616c697a65207468652061737365742072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203632207365745f61737365745f726573657276652861737365745f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036332044494d20696e697469616c5f6c69717569646974792061732055696e7436340d0a20202020202020203634204c455420696e697469616c5f6c6971756964697479203d206465726f5f6465706f73697465640d0a20202020202020203635207365745f737570706c795f7065725f617373657428696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a20202020202020202f2f20496e697469616c697a6520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203636207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036372053544f52452861737365745f616464726573732b223a726f6f744b4c617374222c20737172742861737365745f6465706f736974656429202a2073717274286465726f5f6465706f736974656429290d0a2020202020202020363820696e6372656173655f70726f76696465725f6c69717569646974795f6279285349474e455228292c20696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a2020202037302052455455524e20300d0a0d0a202020203636362052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a2f2f204275726e20424f4f20746f6b656e7320746f207769746864726177204465726f2026206173736574732061742063757272656e7420726174696f2e0d0a2f2f207b616d6f756e747d20416d6f756e74206f6620424f4f206275726e65642e0d0a2f2f207b6d696e5f6465726f7d204d696e696d756d204445524f2077697468647261776e2e0d0a2f2f207b6d696e5f6173736574737d204d696e696d756d206173736574732077697468647261776e2e0d0a2f2f207b61737365745f616464726573737d20546865206465706f7369746564206173736574277320534349440d0a46756e6374696f6e2052656d6f76654c697175696469747928616d6f756e742055696e7436342c206d696e5f6465726f2055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203031202044494d20746f74616c5f6c69717569646974792c206465726f5f726573657276652c2061737365745f726573657276652c206465726f5f616d6f756e742c2061737365745f616d6f756e742061732055696e7436340d0a2020202031302020494620616d6f756e74203e203020202620286d696e5f6465726f203e20302026206d696e5f617373657473203e20302920262028206765745f70726f76696465725f6c6971756964697479285349474e455228292c2061737365745f6164647265737329203e3d20616d6f756e742029205448454e20474f544f2033300d0a2020202032302020474f544f203636360d0a20202020333020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a2020202034302020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f2036300d0a2020202035302020474f544f203636360d0a20202020363020204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a20202020373020204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a20202020383020206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020393020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f6164647265737329202f2f204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202031303020204c4554206465726f5f616d6f756e7420203d206d756c745f64697628616d6f756e742c206465726f5f726573657276652c20746f74616c5f6c6971756964697479290d0a20202031313020204c45542061737365745f616d6f756e74203d206d756c745f64697628616d6f756e742c2061737365745f726573657276652c20746f74616c5f6c6971756964697479290d0a20202031323020204946206465726f5f616d6f756e74203e3d206d696e5f6465726f20262061737365745f616d6f756e74203e3d206d696e5f617373657473205448454e20474f544f203134300d0a2020203133302020474f544f203636360d0a202020313430202064656372656173655f70726f76696465725f6c69717569646974795f6279285349474e455228292c20616d6f756e742c2061737365745f61646472657373290d0a20202031353020207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202d20616d6f756e742c2061737365745f61646472657373290d0a20202031363020207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202d206465726f5f616d6f756e742c2061737365745f61646472657373290d0a20202031373020207365745f61737365745f726573657276652861737365745f72657365727665202d2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020313830202053544f52452861737365745f616464726573732b223a726f6f744b4c617374222c2073717274286465726f5f72657365727665202d206465726f5f616d6f756e7429202a20737172742861737365745f72657365727665202d2061737365745f616d6f756e742920290d0a202020313930202053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f616d6f756e74290d0a202020323030202053454e445f41535345545f544f5f41444452455353285349474e455228292c61737365745f616d6f756e742c204845584445434f44452861737365745f6164647265737329290d0a202020323130202052455455524e20300d0a0d0a202020363636202052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a2f2f2050726963696e672066756e6374696f6e20666f7220636f6e76657274696e67206265747765656e204445524f2026204173736574732e0d0a2f2f207b696e7075745f616d6f756e747d20416d6f756e74206f66204445524f206f7220417373657473206265696e6720736f6c642e0d0a2f2f207b696e7075745f726573657276657d20416d6f756e74206f66204445524f206f72204173736574732028696e70757420747970652920696e2065786368616e67652072657365727665732e0d0a2f2f207b6f75747075745f726573657276657d20416d6f756e74206f66204445524f206f722041737365747320286f757470757420747970652920696e2065786368616e67652072657365727665732e0d0a46756e6374696f6e20676574496e707574507269636528696e7075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a2020202030312044494d205359535f4d41585f56414c55452061732055696e7436340d0a202020203032204c4554205359535f4d41585f56414c5545203d2031383434363734343037333730393535310d0a20202020313020494620696e7075745f72657365727665203e20302026206f75747075745f72657365727665203e2030202620696e7075745f616d6f756e74203c3d205359535f4d41585f56414c5545205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d20696e7075745f616d6f756e745f776974685f6665652061732055696e7436340d0a202020203430204c455420696e7075745f616d6f756e745f776974685f666565203d20696e7075745f616d6f756e74202a203939370d0a2020202035302049462077696c6c5f6164646974696f6e5f6f766572666c6f7728696e7075745f72657365727665202a20313030302c20696e7075745f616d6f756e74202a203130303029203d3d2030205448454e20474f544f2037300d0a2020202036302050414e4943202f2f20496e66696e69746520737570706c7920746f6b656e2061747461636b0d0a2020202037302052455455524e206d756c745f64697628696e7075745f616d6f756e745f776974685f6665652c206f75747075745f726573657276652c2028696e7075745f72657365727665202a203130303029202b20696e7075745f616d6f756e745f776974685f666565290d0a456e642046756e6374696f6e0d0a0d0a2f2f2050726963696e672066756e6374696f6e20666f7220636f6e76657274696e67206265747765656e204445524f2026204173736574732e0d0a2f2f207b6f75747075745f616d6f756e747d20416d6f756e74206f66204445524f206f7220417373657473206265696e6720626f756768742e0d0a2f2f207b696e7075745f726573657276657d20416d6f756e74206f66204445524f206f72204173736574732028696e70757420747970652920696e2065786368616e67652072657365727665732e0d0a2f2f207b6f75747075745f726573657276657d20416d6f756e74206f66204445524f206f722041737365747320286f757470757420747970652920696e2065786368616e67652072657365727665732e0d0a46756e6374696f6e206765744f75747075745072696365286f75747075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a20202020313020494620696e7075745f72657365727665203e2030202626206f75747075745f72657365727665203e2030202626206f75747075745f72657365727665203e206f75747075745f616d6f756e74205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302052455455524e206d756c745f64697628696e7075745f72657365727665202a20313030302c206f75747075745f616d6f756e742c20286f75747075745f72657365727665202d206f75747075745f616d6f756e7429202a20393937202b2031290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206465726f546f4173736574496e707574286465726f5f736f6c642055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302049462020286465726f5f736f6c64203e20302026206d696e5f617373657473203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d206173736574735f626f756768742c2061737365745f726573657276652c206465726f5f726573657276652061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a202020203630204c4554206173736574735f626f75676874203d20676574496e7075745072696365286465726f5f736f6c642c206465726f5f726573657276652c2061737365745f72657365727665290d0a202020203730204946206173736574735f626f75676874203e3d206d696e5f617373657473205448454e20474f544f2039300d0a2020202038302050414e49430d0a2020202039302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c204845584445434f44452861737365745f6164647265737329290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313130207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2f2f20436f6e76657274204445524f20746f204173736574732e0d0a2f2f20557365722073706563696669657320657861637420696e70757420284445524f56414c55452829292e0d0a2f2f20557365722063616e6e6f742073706563696679206d696e696d756d206f75747075742e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a46756e6374696f6e204465726f546f417373657453776170496e7075742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c20312c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a2f2f20436f6e76657274204445524f20746f204173736574732e0d0a2f2f20557365722073706563696669657320657861637420696e70757420284445524f56414c55452829292026206d696e696d756d206f75747075742e0d0a2f2f207b6d696e5f6173736574737d204d696e696d756d2041737365747320626f756768742e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a46756e6374696f6e204465726f546f417373657453776170496e7075744d696e286d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c206d696e5f6173736574732c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206465726f546f41737365744f7574707574286173736574735f626f756768742055696e7436342c206d61785f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f626f75676874203e20302026206d61785f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f726573657276652c206465726f5f736f6c642c206465726f5f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203431204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a202020203530204c4554206465726f5f736f6c64203d206765744f75747075745072696365286173736574735f626f756768742c206465726f5f726573657276652c2061737365745f72657365727665290d0a202020203630204946206465726f5f736f6c64203e206d61785f6465726f205448454e20474f544f20363120454c534520474f544f2037300d0a2020202036312050414e49430d0a202020203730204c4554206465726f5f726566756e64203d206d61785f6465726f202d206465726f5f736f6c640d0a202020203830204946206465726f5f726566756e64203d3d2030205448454e20474f544f203130300d0a2020202039302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f726566756e64290d0a2020203130302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c204845584445434f44452861737365745f6164647265737329290d0a202020313130207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203133302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2f2f20436f6e76657274204445524f20746f204173736574732e0d0a2f2f205573657220737065636966696573206d6178696d756d20696e70757420284445524f56414c55452829292026206578616374206f75747075742e0d0a2f2f207b6173736574735f626f756768747d20416d6f756e74206f662041737365747320626f756768742e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a46756e6374696f6e204465726f546f4173736574537761704f7574707574286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f41737365744f7574707574286173736574735f626f756768742c204445524f56414c554528292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206173736574546f4465726f496e707574286173736574735f736f6c642055696e7436342c206d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f736f6c64203e20302026206d696e5f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f626f756768742061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f626f75676874203d20676574496e7075745072696365286173736574735f736f6c642c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020203630204946206465726f5f626f75676874203e3d206d696e5f6465726f205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c6465726f5f626f75676874290d0a202020203930207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2f2f20436f6e766572742041737365747320746f204445524f2e0d0a2f2f20557365722073706563696669657320657861637420696e7075742028415353455456414c55452861737365745f6164647265737329292026206d696e696d756d206f75747075742e0d0a2f2f207b6d696e5f6465726f7d204d696e696d756d204445524f207075726368617365642e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a46756e6374696f6e204173736574546f4465726f53776170496e707574286d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f496e70757428415353455456414c5545284845584445434f44452861737365745f6164647265737329292c206d696e5f6465726f2c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a0d0a46756e6374696f6e206173736574546f4465726f4f7574707574286465726f5f626f756768742055696e7436342c206d61785f6173736574732055696e743634202c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206173736574735f736f6c642c2061737365745f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206173736574735f736f6c64203d206765744f75747075745072696365286465726f5f626f756768742c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020202f2f206173736574735f736f6c6420697320616c77617973203e207a65726f0d0a202020203630204946206d61785f617373657473203e3d206173736574735f736f6c64205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f626f75676874290d0a202020203930204c45542061737365745f726566756e64203d206d61785f617373657473202d206173736574735f736f6c640d0a2020203130302049462061737365745f726566756e64203d3d2030205448454e20474f544f203132300d0a2020203131302053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f726566756e642c204845584445434f44452861737365745f6164647265737329290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313330207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2f2f20436f6e766572742041737365747320746f204445524f2e0d0a2f2f205573657220737065636966696573206d6178696d756d20696e7075742028415353455456414c55452861737365745f6164647265737329292026206578616374206f75747075742e0d0a2f2f207b6465726f5f626f756768747d20416d6f756e74206f66204445524f207075726368617365642e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a46756e6374696f6e204173736574546f4465726f537761704f7574707574286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f4f7574707574286465726f5f626f756768742c20415353455456414c5545284845584445434f44452861737365745f6164647265737329292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a2f2f205075626c69632070726963652066756e6374696f6e20666f72204445524f20746f20417373657420747261646573207769746820616e20657861637420696e7075742e0d0a2f2f207b6465726f5f736f6c647d20416d6f756e74206f66204445524f20736f6c642e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a2f2f204072657475726e7320416d6f756e74206f662041737365747320746861742063616e20626520626f75676874207769746820696e707574204445524f2e0d0a46756e6374696f6e204765744465726f546f4173736574496e7075745072696365286465726f5f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286465726f5f736f6c642c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a2f2f205075626c69632070726963652066756e6374696f6e20666f72204445524f20746f20417373657420747261646573207769746820616e206578616374206f75747075742e0d0a2f2f207b6173736574735f626f756768747d20416d6f756e74206f662041737365747320626f756768742e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a2f2f204072657475726e7320416d6f756e74206f66204445524f206e656564656420746f20627579206f7574707574204173736574732e0d0a46756e6374696f6e204765744465726f546f41737365744f75747075745072696365286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286173736574735f626f756768742c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a2f2f205075626c69632070726963652066756e6374696f6e20666f7220417373657420746f204445524f20747261646573207769746820616e20657861637420696e7075742e0d0a2f2f207b6173736574735f736f6c647d20416d6f756e74206f662041737365747320736f6c642e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a2f2f204072657475726e7320416d6f756e74206f66204445524f20746861742063616e20626520626f75676874207769746820696e707574204173736574732e0d0a46756e6374696f6e204765744173736574546f4465726f496e7075745072696365286173736574735f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286173736574735f736f6c642c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a2f2f205075626c69632070726963652066756e6374696f6e20666f7220417373657420746f204445524f20747261646573207769746820616e206578616374206f75747075742e0d0a2f2f207b6465726f5f626f756768747d20416d6f756e74206f66206f7574707574204445524f2e0d0a2f2f207b61737365745f616464726573737d2041646472657373206f662074686520617373657420746f2074726164652e0d0a2f2f204072657475726e7320416d6f756e74206f6620417373657473206e656564656420746f20627579206f7574707574204445524f2e0d0a46756e6374696f6e204765744173736574546f4465726f4f75747075745072696365286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286465726f5f626f756768742c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206d696e744665652872657365727665302055696e7436342c2072657365727665312055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302044494d20666565546f20617320537472696e670d0a2020202031312044494d20726f6f744b4c6173742061732055696e7436340d0a202020203230204c455420666565546f203d204c4f41442822666565546f2229200d0a202020202f2f2047657420746865206c61737420726f6f74206b20666f72207468652061737365740d0a202020203330204c455420726f6f744b4c617374203d204c4f41442861737365745f616464726573732b223a726f6f744b4c61737422290d0a20202020343020494620726f6f744b4c61737420213d2030205448454e20474f544f2035300d0a202020202020202034312052455455524e200d0a2020202035302044494d20726f6f744b2061732055696e7436340d0a202020203630204c455420726f6f744b203d207371727428726573657276653029202a2073717274287265736572766531290d0a20202020373020494620726f6f744b203e20726f6f744b4c617374205448454e20474f544f2038300d0a202020202020202037312052455455524e200d0a2020202038302044494d20737570706c792c206c69717569646974795f6d696e7465642061732055696e7436340d0a202020203930204c455420737570706c79203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a202020313030204c4554206c69717569646974795f6d696e746564203d206d756c745f64697628737570706c792c20726f6f744b202d20726f6f744b4c6173742c20726f6f744b202a2035202b20726f6f744b4c617374290d0a202020313130204946206c69717569646974795f6d696e746564203e2030205448454e20474f544f2031313120454c534520474f544f203132300d0a2020202020202031313120696e6372656173655f70726f76696465725f6c69717569646974795f627928666565546f2c206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a20202020202020313132207365745f737570706c795f7065725f617373657428737570706c79202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a2020203132302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a2f2f2048656c7065722066756e6374696f6e73200d0a2f2f20456e63617073756c6174656420746f2062657474657220756e6465727374616e64207768617427732068617070656e696e6720616e642061627363747261637420424f4f2073746f7261676520736368656d610d0a2f2f2066726f6d206d61696e20636f64652e0d0a0d0a46756e6374696f6e207365745f737570706c795f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f52452861737365745f616464726573732b223a424f4f222c20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f737570706c795f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946204558495354532861737365745f616464726573732b223a424f4f2229205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e204c4f41442861737365745f616464726573732b223a424f4f22290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f6465726f5f726573657276655f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f52452861737365745f616464726573732b223a4445524f222c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f41442861737365745f616464726573732b223a4445524f22290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f61737365745f7265736572766528616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f52452861737365745f616464726573732c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f61737365745f726573657276652861737365745f6164647265737320537472696e67292055696e7436340d0a2020202032302052455455524e204c4f41442861737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20696e6372656173655f70726f76696465725f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302049462045584953545328414444524553535f535452494e472870726f76696465725f61646472657373292b223a424f4f3a222b61737365745f6164647265737329205448454e20474f544f2034300d0a2020202032302053544f524528414444524553535f535452494e472870726f76696465725f61646472657373292b223a424f4f3a222b61737365745f616464726573732c20616d6f756e74290d0a2020202033302052455455524e0d0a2020202034302053544f524528414444524553535f535452494e472870726f76696465725f61646472657373292b223a424f4f3a222b61737365745f616464726573732c206765745f70726f76696465725f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202b20616d6f756e74290d0a2020202035302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2064656372656173655f70726f76696465725f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f524528414444524553535f535452494e472870726f76696465725f61646472657373292b223a424f4f3a222b61737365745f616464726573732c206765745f70726f76696465725f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202d20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f70726f76696465725f6c69717569646974792870726f76696465725f6164647265737320537472696e672c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f414428414444524553535f535452494e472870726f76696465725f61646472657373292b223a424f4f3a222b61737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2077696c6c5f6164646974696f6e5f6f766572666c6f7728612055696e7436342c20622055696e743634292055696e7436340d0a202020203130204946202861203e203138343436373434303733373039353531363135202d206229205448454e20474f544f203130300d0a2020202032302052455455524e2030202f2f204e6f206f766572666c6f770d0a202020203130302052455455524e2031202f2f204f766572666c6f770d0a456e642046756e6374696f6e0d0a0d0a2f2f2046726f6d20506965737761700d0a2f2f206c6f73736c657373202861202a20622029202f20630d0a46756e6374696f6e206d756c745f64697628612055696e7436342c20622055696e7436342c20632055696e743634292055696e7436340d0a0931302044494d20626173652c206d61786469762041532055696e7436340d0a093230204c45542062617365203d2034323934393637323936092f2f2028313c3c3332290d0a093330204c4554206d6178646976203d2028626173652d31292a62617365202b2028626173652d31290d0a0d0a0935302044494d207265732041532055696e7436340d0a093630204c455420726573203d2028612f6329202a2062202b202861256329202a2028622f63290d0a093730204c45542061203d2061202520630d0a093830204c45542062203d2062202520630d0a093930204946202861203d3d2030207c7c2062203d3d203029205448454e20474f544f20313030300d0a0d0a09313030204946202863203e3d206261736529205448454e20474f544f203230300d0a09313130204c455420726573203d20726573202b2028612a622f63290d0a0931323020474f544f20313030300d0a0d0a093230302044494d206e6f726d2041532055696e7436340d0a09323130204c4554206e6f726d203d206d61786469762f630d0a09323230204c45542063203d2063202a206e6f726d0d0a09323330204c45542061203d2061202a206e6f726d0d0a0d0a093330302044494d2061682c20616c2c2062682c20626c2c2063682c20636c2041532055696e7436340d0a09333130204c4554206168203d2061202f20626173650d0a09333230204c455420616c203d2061202520626173650d0a09333330204c4554206268203d2062202f20626173650d0a09333430204c455420626c203d2062202520626173650d0a09333530204c4554206368203d2063202f20626173650d0a09333630204c455420636c203d2063202520626173650d0a0d0a093430302044494d2070302c2070312c2070322041532055696e7436340d0a09343130204c4554207030203d20616c2a626c0d0a09343230204c4554207031203d207030202f2062617365202b20616c2a62680d0a09343330204c4554207030203d207030202520626173650d0a09343430204c4554207032203d207031202f2062617365202b2061682a62680d0a09343530204c4554207031203d202870312025206261736529202b2061682a626c0d0a09343630204c4554207032203d207032202b207031202f20626173650d0a09343730204c4554207031203d207031202520626173650d0a0d0a093530302044494d2071302c2071312c20726861742041532055696e7436340d0a09353130204c4554207032203d207032202520630d0a09353230204c4554207131203d207032202f2063680d0a09353330204c45542072686174203d20703220252063680d0a0d0a0936303020494620287131203c2062617365202626202872686174203e3d2062617365207c7c2071312a636c203c3d20726861742a626173652b70312929205448454e20474f544f203730300d0a09363130204c4554207131203d207131202d20310d0a09363230204c45542072686174203d2072686174202b2063680d0a0936333020474f544f203630300d0a0d0a09373030204c4554207031203d20282870322025206261736529202a2062617365202b20703129202d207131202a20636c0d0a09373130204c4554207032203d20287032202f2062617365202a2062617365202b207031202f206261736529202d207131202a2063680d0a09373230204c4554207031203d202870312025206261736529202b202870322025206261736529202a20626173650d0a09373330204c4554207130203d207031202f2063680d0a09373430204c45542072686174203d20703120252063680d0a0d0a0938303020494620287130203c2062617365202626202872686174203e3d2062617365207c7c2071302a636c203c3d20726861742a626173652b70302929205448454e20474f544f203930300d0a09383130204c4554207130203d207130202d20310d0a09383230204c45542072686174203d2072686174202b2063680d0a0938333020474f544f203830300d0a0d0a09393030204c455420726573203d20726573202b207130202b207131202a20626173650d0a0d0a09313030302052455455524e207265730d0a456e642046756e6374696f6e0d0a202020200d0a2f2f20626162796c6f6e69616e206d6574686f64202868747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4d6574686f64735f6f665f636f6d707574696e675f7371756172655f726f6f747323426162796c6f6e69616e5f6d6574686f64290d0a46756e6374696f6e207371727428792055696e743634292055696e7436340d0a2020202031302049462079203e2033205448454e20474f544f20323020454c534520474f544f2039300d0a2020202032302044494d20782c7a2061732055696e7436340d0a202020203330204c4554207a203d2079200d0a202020203430204c45542078203d2079202f2032202b20310d0a2020202035302049462078203c207a205448454e20474f544f20363020454c534520474f544f203133300d0a202020203630204c4554207a203d20780d0a202020203730204c45542078203d202879202f2078202b207829202f20320d0a20202020383020474f544f2035300d0a202020203930204946207920213d2030205448454e20474f544f2031313020454c534520474f544f203132300d0a2020203131302052455455524e20310d0a2020203132302052455455524e20300d0a2020203133302052455455524e207a0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20557064617465436f646528636f646520537472696e67292055696e743634200d0a20202020313020204946204c4f414428226f776e65722229203d3d205349474e45522829205448454e20474f544f203330200d0a202020203230202052455455524e20310d0a20202020333020205550444154455f53435f434f444528636f6465290d0a202020203430202052455455524e20300d0a456e642046756e6374696f6e0d0a6a53435f414354494f4e55011e4c263319988ab80da70bfa43d62aedbcefc71777ba5ac1e2f68c1614831dd1011e165fd24a5f10155075650bc7699724a98d30ea4125671b7ba285081f76acaa002528f654c232e95d2c758ccb80f92ccc39cd206f0ebd406b2bdee18c447dbff80009f3e5177d9afb93e92e95db2eaae4c22d5580e5091c6d947c65da40e8baa2df0100b86a416d6f7b43407577e2377473e2d830a43f13203b7b4e75e9ce49cf27f1002aba60680b125906d6fca04ef96ffc190f1d0bc67c16eb00c93726fc60441f80012b7a7b7d5e0f11e819080b77bd35b1675cc286cf447ed505cfebe760a4600482012333295a938bbf6ca34459575a493d1be8ba15d9182e212200c4bfddb636c7ce000a5d9e548b8d69db131e587a5c236ba911e32fa4b93257bf532cd645c05da1a801267e94a04c6c5c359d22236b34fce4d12c44dd8e37cfd14ab85289150874b228010fa2dc6d411adf4e9273e359672c458aa7bbc0cb96ca311ad4b0011698fe464d011dccb8b428cc9ea2f3c9c88bb205b80f04ef719d9d0fae70b25ace998b17841b0127fe9bf1dbaefc67a4e700d2c1d12fb1c2d149cdd1938ad9447c9a8f4bd575bd0100000000000000000000000000000000000000000000000000000000000000002ee683e0cdf2645777e03579ea6baac83e3018d12d416d61f85e6845e9ebeff91a739940e93d0df2445bd0bea8b41ddd5f8e6de618fb74f1d154990717bca98117d64854a63b938bd16c2814b9c120e40a9f4c04c78229d3373aa9b1c1a7e4d700044c06d1980f5bb7ef1720f554fd46c0745637be16b9a38beb18138626d704bb01011771a68f9199c0bf88a73c4df27de445af3cfb5f59876a734b74414d365a0b29eb1e26cf61356957305b2556a27371282ba88dca43e55167c06f91698aae7711082b5a57e9bbbfa3adf63408e3a598b0cfbc3d6312e2ea7e1d01cb3e7bd31c22195e4f2d5838d0dc3f3e8ee080ef3a628af2d31207999370096d61b4c96fae2e5a741e7841afe0059cb24173c394cbe4f485353045d077729c58e25642e3872d4be46915d4dace4b31eb4130e5858d68190771bda4a4fa98d693a59f9dc272223f4b2fdc1efe37e97512cb285a89a4c21862968d994a72d9ccb2eac47d19be299d9bcf1b69c6189d62a01d48e766e2ec5431988fc17fdd59d46da561fac69c1318a2a90d9cef36e2fddbdc65cc08ad134d47377f306c0edf8be7a9fa181588281f2bc69d37ac30f56bfd05ca54a9ac3eeeb371193fe70c8e375febb01225200104e07803b3cf8ba48791c5c0771c07ef8cd241173103d0bb601140a4fd42a4dd012f5041f150476ab89a145e261bfbb038acb8a5f5503d02adecae0ea4d52949570124379d10788fe491c67b33a1bbaf254ce79a8f99c39f03bd36a988ce8a061271011d65db601a1608969ee6b8e60cecb06f41e51b8c50bdf1613399100a926527f00012f869abb9af6c3cf8fe4fb18cbcdf0a47022d5a58cd78398d5b33a961aacc560126039802155e097061f6f8442aad05c47c36a96438d5e6a535cdfcab5b1bf9990017b81b73ac6548a9c6291a174259dd12272725f75aaa812946c3a09b506d1523001166d4b28ae96eb29a903d38667d01262c5575144f4681784d626bb749cca7a3002dd0ffef213362b9a71241c2debc1b0cfe1c8b1a081c8995e33728cd317e89e90116a636259ecb6ddfdee438678d417596c5e1e37e9942ad457a6630aaa99ac36a012060b8424043e28dd580814d1c1d84544165fb2d9b277b79b9270d0a8f5d63c30006bf04525a068ffc98c15882d13c429204a79261238d75c61c273790e7c66417001206887716782b8484bca9268b304afc3c1fda5c7b953a0013ad95fec85b671801
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project