#pragma version 6 intcblock 1 0 127 2 1000 214 216 220 285 278 244 252 268 86400 256 257 233 208 128 255 bytecblock 0x 0x0008 0x677561726469616e 0x63757272656e74477561726469616e536574496e646578 0x6e6f70 0x76657269667953696773 0x4d657373616765466565 0x76616c6964557064617465417070726f766548617368 0x767068617368 0x766572696679564141 0x7075626c6973684d657373616765 0x0001 0x0000000000000000000000000000000000000000000000000000000000000004 0x00000000000000000000000000000000000000000000000000000000436f7265 0x0000 0x626f6f746564 0x50726f6772616d 0x6d657461 txn ApplicationID intc_1 // 0 == bnz main_l75 txn OnCompletion pushint 4 // UpdateApplication == bnz main_l74 txn OnCompletion pushint 5 // DeleteApplication == bnz main_l73 txn OnCompletion intc_0 // OptIn == bnz main_l72 txn OnCompletion intc_1 // NoOp == bnz main_l6 err main_l6: txna ApplicationArgs 0 bytec 10 // "publishMessage" == bnz main_l69 txna ApplicationArgs 0 bytec 4 // "nop" == bnz main_l68 txna ApplicationArgs 0 pushbytes 0x696e6974 // "init" == bnz main_l52 txna ApplicationArgs 0 bytec 5 // "verifySigs" == bnz main_l51 txna ApplicationArgs 0 bytec 9 // "verifyVAA" == bnz main_l29 txna ApplicationArgs 0 pushbytes 0x676f7665726e616e6365 // "governance" == bnz main_l13 err main_l13: callsub checkForDuplicate_11 txn GroupIndex intc_0 // 1 - gtxns TypeEnum pushint 6 // appl == txn GroupIndex intc_0 // 1 - gtxns ApplicationID txn ApplicationID == && txn GroupIndex intc_0 // 1 - gtxnsa ApplicationArgs 0 bytec 9 // "verifyVAA" == && txn GroupIndex intc_0 // 1 - gtxns Sender txn Sender == && txn GroupIndex intc_0 // 1 - gtxns RekeyTo global ZeroAddress == && txn GroupIndex intc_0 // 1 - gtxns OnCompletion intc_1 // NoOp == && txn GroupIndex intc_0 // 1 - gtxnsa ApplicationArgs 1 txna ApplicationArgs 1 == && txn GroupIndex gtxns RekeyTo global ZeroAddress == && txn GroupIndex gtxns Sender txn Sender == && txn GroupIndex intc_0 // 1 - gtxnsa Accounts 0 txna Accounts 0 == && txn GroupIndex intc_0 // 1 - gtxnsa Accounts 1 txna Accounts 1 == && txn GroupIndex intc_0 // 1 - gtxnsa Accounts 2 txna Accounts 2 == && pushint 519 // 519 && assert bytec_3 // "currentGuardianSetIndex" app_global_get store 27 load 27 intc_1 // 0 != bnz main_l28 main_l14: txna ApplicationArgs 1 extract 5 1 btoi pushint 66 // 66 * pushint 14 // 14 + store 22 txna ApplicationArgs 1 load 22 intc_3 // 2 extract3 bytec 11 // 0x0001 == intc 5 // 214 && assert txna ApplicationArgs 1 load 22 intc_3 // 2 + pushint 32 // 32 extract3 bytec 12 // 0x0000000000000000000000000000000000000000000000000000000000000004 == intc 6 // 216 && assert load 22 pushint 43 // 43 + store 22 txna ApplicationArgs 1 load 22 pushint 32 // 32 extract3 bytec 13 // 0x00000000000000000000000000000000000000000000000000000000436f7265 == intc 7 // 220 && assert load 22 pushint 32 // 32 + store 22 txna ApplicationArgs 1 load 22 intc_0 // 1 + intc_3 // 2 extract3 store 30 txna ApplicationArgs 1 load 22 intc_0 // 1 extract3 btoi store 23 load 23 intc_0 // 1 == bnz main_l27 load 23 intc_3 // 2 == bnz main_l22 load 23 pushint 3 // 3 == bnz main_l21 load 23 pushint 4 // 4 == bnz main_l19 err main_l19: load 22 intc_0 // 1 + store 22 load 30 bytec_1 // 0x0008 == intc 8 // 285 && assert load 22 pushint 26 // 26 + store 22 txna ApplicationArgs 1 load 22 pushint 8 // 8 extract3 btoi store 25 load 22 pushint 8 // 8 + store 22 txna ApplicationArgs 1 load 22 pushint 32 // 32 extract3 store 24 itxn_begin intc_0 // pay itxn_field TypeEnum load 24 itxn_field Receiver load 25 itxn_field Amount intc_1 // 0 itxn_field Fee itxn_submit main_l20: intc_0 // 1 return intc_0 // 1 return main_l21: load 22 intc_0 // 1 + store 22 load 30 bytec_1 // 0x0008 == intc 9 // 278 && assert load 22 intc_3 // 2 + pushint 24 // 24 + store 22 txna ApplicationArgs 1 load 22 pushint 8 // 8 extract3 btoi store 25 bytec 6 // "MessageFee" load 25 app_global_put b main_l20 main_l22: load 30 bytec_1 // 0x0008 == load 30 bytec 14 // 0x0000 == || intc 10 // 244 && assert load 22 pushint 3 // 3 + store 22 txna ApplicationArgs 1 load 22 pushint 4 // 4 extract3 store 29 load 29 btoi store 26 txna Accounts 3 load 26 bytec_2 // "guardian" callsub getsigaddress_9 == intc 11 // 252 && assert intc_1 // 0 intc_1 // 0 == bnz main_l26 main_l23: bytec_3 // "currentGuardianSetIndex" load 26 app_global_put load 22 pushint 4 // 4 + store 22 txna ApplicationArgs 1 load 22 intc_0 // 1 extract3 btoi store 28 load 28 intc_1 // 0 > intc 12 // 268 && assert pushint 3 // 3 intc_1 // 0 txna ApplicationArgs 1 load 22 intc_0 // 1 pushint 20 // 20 load 28 * + extract3 callsub write_7 pop txna Accounts 3 txna Accounts 2 != bnz main_l25 main_l24: pushint 3 // 3 bytec_2 // "guardian" callsub meta_5 b main_l20 main_l25: intc_3 // 2 intc 4 // 1000 global LatestTimestamp intc 13 // 86400 + itob callsub write_7 pop b main_l24 main_l26: txna Accounts 3 txna Accounts 2 != intc 14 // 256 && assert load 26 load 27 intc_0 // 1 + == intc 15 // 257 && assert b main_l23 main_l27: load 30 bytec_1 // 0x0008 == intc 16 // 233 && assert load 22 pushint 3 // 3 + store 22 bytec 7 // "validUpdateApproveHash" txna ApplicationArgs 1 load 22 pushint 32 // 32 extract3 app_global_put b main_l20 main_l28: txna ApplicationArgs 1 extract 1 4 store 26 load 26 btoi load 27 == intc 17 // 208 && assert b main_l14 main_l29: txna Accounts 2 txna ApplicationArgs 1 extract 1 4 btoi bytec_2 // "guardian" callsub getsigaddress_9 == pushint 380 // 380 && assert intc_3 // 2 bytec_2 // "guardian" callsub checkMeta_6 intc_3 // 2 intc_1 // 0 callsub getbyte_2 store 13 load 13 intc_1 // 0 > pushint 384 // 384 && assert intc_3 // 2 intc_0 // 1 intc_0 // 1 pushint 20 // 20 load 13 * + callsub read_4 store 14 intc_3 // 2 intc 4 // 1000 pushint 1008 // 1008 callsub read_4 btoi store 19 load 19 intc_1 // 0 != bnz main_l50 main_l30: pushbytes 0x00000000 // 0x00000000 store 18 txna ApplicationArgs 1 extract 5 1 btoi store 15 pushint 6 // 6 load 15 pushint 66 // 66 * + store 16 txna ApplicationArgs 1 load 16 txna ApplicationArgs 1 len load 16 - extract3 keccak256 keccak256 store 17 load 13 intc_1 // 0 > load 15 load 13 <= && load 15 load 13 intc_3 // 2 * pushint 3 // 3 / > && pushint 403 // 403 && assert pushint 6 // 6 store 16 txn GroupIndex intc_1 // 0 > pushint 432 // 432 && assert txn GroupIndex intc_0 // 1 - store 11 load 11 gtxns NumAppArgs intc_1 // 0 > pushint 435 // 435 && assert load 11 gtxnsa ApplicationArgs 0 store 12 main_l31: load 11 intc_1 // 0 > load 12 bytec 5 // "verifySigs" == load 12 bytec 4 // "nop" == || && bnz main_l47 main_l32: load 12 bytec 5 // "verifySigs" != load 12 bytec 4 // "nop" != && bnz main_l46 main_l33: load 11 txn GroupIndex <= bnz main_l35 load 16 pushint 6 // 6 load 15 pushint 66 // 66 * + == pushint 510 // 510 && assert intc_0 // 1 return main_l35: load 11 gtxns TypeEnum pushint 6 // appl == load 11 gtxns RekeyTo global ZeroAddress == && load 11 gtxns ApplicationID txn ApplicationID == && load 11 gtxnsa Accounts 1 txna Accounts 1 == && load 11 gtxnsa Accounts 2 txna Accounts 2 == && pushint 454 // 454 && assert load 11 gtxnsa ApplicationArgs 0 store 12 load 12 bytec 5 // "verifySigs" == bnz main_l42 load 12 bytec 4 // "nop" == bnz main_l41 load 12 bytec 9 // "verifyVAA" == bnz main_l41 intc_0 // 1 intc_0 // 1 == bnz main_l40 err main_l40: intc_1 // 0 return main_l41: load 11 intc_0 // 1 + store 11 b main_l33 main_l42: load 11 gtxnsa ApplicationArgs 1 store 19 load 19 len intc_1 // 0 > pushint 470 // 470 && assert txna ApplicationArgs 1 load 16 load 19 len extract3 load 19 == pushint 474 // 474 && assert load 16 load 19 len + store 20 bytec_0 // "" store 19 main_l43: load 16 load 20 < bnz main_l45 load 11 gtxnsa ApplicationArgs 2 load 19 == load 11 gtxns Sender bytec 8 // "vphash" app_global_get == && load 11 gtxnsa ApplicationArgs 3 load 17 == && pushint 494 // 494 && assert b main_l41 main_l45: txna ApplicationArgs 1 load 16 intc_0 // 1 extract3 btoi store 21 load 18 load 21 getbit intc_1 // 0 == pushint 485 // 485 && assert load 18 load 21 intc_0 // 1 setbit store 18 load 19 load 14 load 21 pushint 20 // 20 * pushint 20 // 20 extract3 concat store 19 load 16 pushint 66 // 66 + store 16 b main_l43 main_l46: load 11 intc_0 // 1 + store 11 b main_l33 main_l47: load 11 intc_0 // 1 - store 11 load 11 gtxns NumAppArgs intc_1 // 0 > bnz main_l49 bytec_0 // "" store 12 b main_l32 main_l49: load 11 gtxnsa ApplicationArgs 0 store 12 b main_l31 main_l50: global LatestTimestamp load 19 < pushint 391 // 391 && assert b main_l30 main_l51: txn Sender bytec 8 // "vphash" app_global_get == return main_l52: bytec 8 // "vphash" txna ApplicationArgs 2 app_global_put txn Sender global CreatorAddress == pushint 312 // 312 && assert bytec 15 // "booted" app_global_get intc_1 // 0 == pushint 315 // 315 && assert bytec 15 // "booted" pushbytes 0x74727565 // "true" app_global_put callsub checkForDuplicate_11 bytec_3 // "currentGuardianSetIndex" app_global_get store 7 load 7 intc_1 // 0 != bnz main_l67 main_l53: txna ApplicationArgs 1 extract 5 1 btoi pushint 66 // 66 * pushint 14 // 14 + store 2 txna ApplicationArgs 1 load 2 intc_3 // 2 extract3 bytec 11 // 0x0001 == intc 5 // 214 && assert txna ApplicationArgs 1 load 2 intc_3 // 2 + pushint 32 // 32 extract3 bytec 12 // 0x0000000000000000000000000000000000000000000000000000000000000004 == intc 6 // 216 && assert load 2 pushint 43 // 43 + store 2 txna ApplicationArgs 1 load 2 pushint 32 // 32 extract3 bytec 13 // 0x00000000000000000000000000000000000000000000000000000000436f7265 == intc 7 // 220 && assert load 2 pushint 32 // 32 + store 2 txna ApplicationArgs 1 load 2 intc_0 // 1 + intc_3 // 2 extract3 store 10 txna ApplicationArgs 1 load 2 intc_0 // 1 extract3 btoi store 3 load 3 intc_0 // 1 == bnz main_l66 load 3 intc_3 // 2 == bnz main_l61 load 3 pushint 3 // 3 == bnz main_l60 load 3 pushint 4 // 4 == bnz main_l58 err main_l58: load 2 intc_0 // 1 + store 2 load 10 bytec_1 // 0x0008 == intc 8 // 285 && assert load 2 pushint 26 // 26 + store 2 txna ApplicationArgs 1 load 2 pushint 8 // 8 extract3 btoi store 5 load 2 pushint 8 // 8 + store 2 txna ApplicationArgs 1 load 2 pushint 32 // 32 extract3 store 4 itxn_begin intc_0 // pay itxn_field TypeEnum load 4 itxn_field Receiver load 5 itxn_field Amount intc_1 // 0 itxn_field Fee itxn_submit main_l59: intc_0 // 1 return main_l60: load 2 intc_0 // 1 + store 2 load 10 bytec_1 // 0x0008 == intc 9 // 278 && assert load 2 intc_3 // 2 + pushint 24 // 24 + store 2 txna ApplicationArgs 1 load 2 pushint 8 // 8 extract3 btoi store 5 bytec 6 // "MessageFee" load 5 app_global_put b main_l59 main_l61: load 10 bytec_1 // 0x0008 == load 10 bytec 14 // 0x0000 == || intc 10 // 244 && assert load 2 pushint 3 // 3 + store 2 txna ApplicationArgs 1 load 2 pushint 4 // 4 extract3 store 9 load 9 btoi store 6 txna Accounts 3 load 6 bytec_2 // "guardian" callsub getsigaddress_9 == intc 11 // 252 && assert intc_0 // 1 intc_1 // 0 == bnz main_l65 main_l62: bytec_3 // "currentGuardianSetIndex" load 6 app_global_put load 2 pushint 4 // 4 + store 2 txna ApplicationArgs 1 load 2 intc_0 // 1 extract3 btoi store 8 load 8 intc_1 // 0 > intc 12 // 268 && assert pushint 3 // 3 intc_1 // 0 txna ApplicationArgs 1 load 2 intc_0 // 1 pushint 20 // 20 load 8 * + extract3 callsub write_7 pop txna Accounts 3 txna Accounts 2 != bnz main_l64 main_l63: pushint 3 // 3 bytec_2 // "guardian" callsub meta_5 b main_l59 main_l64: intc_3 // 2 intc 4 // 1000 global LatestTimestamp intc 13 // 86400 + itob callsub write_7 pop b main_l63 main_l65: txna Accounts 3 txna Accounts 2 != intc 14 // 256 && assert load 6 load 7 intc_0 // 1 + == intc 15 // 257 && assert b main_l62 main_l66: load 10 bytec_1 // 0x0008 == intc 16 // 233 && assert load 2 pushint 3 // 3 + store 2 bytec 7 // "validUpdateApproveHash" txna ApplicationArgs 1 load 2 pushint 32 // 32 extract3 app_global_put b main_l59 main_l67: txna ApplicationArgs 1 extract 1 4 store 6 load 6 btoi load 7 == intc 17 // 208 && assert b main_l53 main_l68: intc_0 // 1 return main_l69: txna Accounts 1 intc_1 // 0 txn Sender callsub getsigaddress_9 == pushint 166 // 166 && assert bytec 6 // "MessageFee" app_global_get store 1 load 1 intc_1 // 0 > bnz main_l71 main_l70: intc_0 // 1 intc_1 // 0 pushint 8 // 8 callsub read_4 btoi intc_0 // 1 + itob store 0 intc_0 // 1 intc_1 // 0 load 0 callsub write_7 pop load 0 log intc_0 // 1 bytec 10 // "publishMessage" callsub meta_5 intc_0 // 1 return main_l71: txn GroupIndex intc_0 // 1 - gtxns TypeEnum intc_0 // pay == txn GroupIndex intc_0 // 1 - gtxns Amount load 1 >= && txn GroupIndex intc_0 // 1 - gtxns Receiver global CurrentApplicationAddress == && txn GroupIndex intc_0 // 1 - gtxns RekeyTo global ZeroAddress == && pushint 170 // 170 && assert b main_l70 main_l72: callsub optin_10 return main_l73: intc_1 // 0 return main_l74: bytec 16 // "Program" txn ApprovalProgram concat sha512_256 bytec 7 // "validUpdateApproveHash" app_global_get == pushint 572 // 572 && assert txn ClearStateProgram len pushint 4 // 4 == txn ClearStateProgram extract 1 3 pushbytes 0x810143 // 0x810143 == && pushint 573 // 573 && assert intc_0 // 1 return main_l75: bytec 6 // "MessageFee" intc_1 // 0 app_global_put bytec 8 // "vphash" bytec_0 // "" app_global_put bytec_3 // "currentGuardianSetIndex" intc_1 // 0 app_global_put bytec 7 // "validUpdateApproveHash" bytec_0 // "" app_global_put intc_0 // 1 return // intkey intkey_0: store 33 load 33 itob extract 7 1 retsub // zero zero_1: store 58 intc_1 // 0 store 59 zero_1_l1: load 59 pushint 15 // 15 < bz zero_1_l3 load 58 load 59 callsub intkey_0 intc_2 // 127 bzero app_local_put load 59 intc_0 // 1 + store 59 b zero_1_l1 zero_1_l3: retsub // get_byte getbyte_2: store 32 store 31 load 31 load 32 intc_2 // 127 / callsub intkey_0 app_local_get load 32 intc_2 // 127 % getbyte retsub // set_byte setbyte_3: store 67 store 66 store 65 load 65 load 66 intc_2 // 127 / callsub intkey_0 load 65 load 66 intc_2 // 127 / callsub intkey_0 app_local_get load 66 intc_2 // 127 % load 67 setbyte app_local_put retsub // read read_4: store 36 store 35 store 34 bytec_0 // "" store 38 load 35 intc_2 // 127 / store 37 read_4_l1: load 37 load 36 intc_2 // 127 / <= bz read_4_l9 load 37 load 35 intc_2 // 127 / == bnz read_4_l8 intc_1 // 0 read_4_l4: store 39 load 37 load 36 intc_2 // 127 / == bnz read_4_l7 intc_2 // 127 read_4_l6: store 40 load 38 load 34 load 37 callsub intkey_0 app_local_get load 39 load 40 substring3 concat store 38 load 37 intc_0 // 1 + store 37 b read_4_l1 read_4_l7: load 36 intc_2 // 127 % b read_4_l6 read_4_l8: load 35 intc_2 // 127 % b read_4_l4 read_4_l9: load 38 retsub // meta meta_5: store 42 store 41 load 41 bytec 17 // "meta" load 42 app_local_put retsub // checkMeta checkMeta_6: store 44 store 43 load 43 bytec 17 // "meta" app_local_get load 44 == pushint 145 // 145 && assert retsub // write write_7: store 47 store 46 store 45 intc_1 // 0 store 51 load 46 intc_2 // 127 / store 48 write_7_l1: load 48 load 46 load 47 len + intc_2 // 127 / <= bz write_7_l12 load 48 load 46 intc_2 // 127 / == bnz write_7_l11 intc_1 // 0 write_7_l4: store 49 load 48 load 46 load 47 len + intc_2 // 127 / == bnz write_7_l10 intc_2 // 127 write_7_l6: store 50 load 45 load 48 callsub intkey_0 load 50 intc_2 // 127 != load 49 intc_1 // 0 != || bnz write_7_l9 intc_2 // 127 store 52 load 47 load 51 intc_2 // 127 extract3 write_7_l8: app_local_put load 51 load 52 + store 51 load 48 intc_0 // 1 + store 48 b write_7_l1 write_7_l9: load 50 load 49 - store 52 load 45 load 48 callsub intkey_0 app_local_get intc_1 // 0 load 49 substring3 load 47 load 51 load 52 extract3 concat load 45 load 48 callsub intkey_0 app_local_get load 50 intc_2 // 127 substring3 concat b write_7_l8 write_7_l10: load 46 load 47 len + intc_2 // 127 % b write_7_l6 write_7_l11: load 46 intc_2 // 127 % b write_7_l4 write_7_l12: load 51 retsub // encode_uvarint encodeuvarint_8: store 56 store 55 load 56 store 57 load 57 load 55 intc 18 // 128 >= bnz encodeuvarint_8_l2 load 55 intc 19 // 255 & itob extract 7 1 b encodeuvarint_8_l3 encodeuvarint_8_l2: load 55 pushint 7 // 7 shr load 55 intc 19 // 255 & intc 18 // 128 | itob extract 7 1 load 55 load 56 load 57 uncover 4 uncover 4 callsub encodeuvarint_8 cover 3 store 57 store 56 store 55 encodeuvarint_8_l3: concat retsub // get_sig_address getsigaddress_9: store 54 store 53 bytec 16 // "Program" pushbytes 0x0620010181 // 0x0620010181 concat load 53 bytec_0 // "" callsub encodeuvarint_8 concat pushbytes 0x4880 // 0x4880 concat load 54 len bytec_0 // "" callsub encodeuvarint_8 concat load 54 concat pushbytes 0x483110810612443119221244311881 // 0x483110810612443119221244311881 concat global CurrentApplicationID bytec_0 // "" callsub encodeuvarint_8 concat pushbytes 0x1244312080 // 0x1244312080 concat global CurrentApplicationAddress len bytec_0 // "" callsub encodeuvarint_8 concat global CurrentApplicationAddress concat pushbytes 0x124431018100124431093203124431153203124422 // 0x124431018100124431093203124431153203124422 concat sha512_256 retsub // optin optin_10: txn GroupIndex intc_0 // 1 - gtxns TypeEnum intc_0 // pay == txn GroupIndex intc_0 // 1 - gtxns Amount pushint 1002000 // 1002000 == && txn GroupIndex intc_0 // 1 - gtxns Receiver txn Sender == && txn TypeEnum pushint 6 // appl == && txn OnCompletion intc_0 // OptIn == && txn ApplicationID global CurrentApplicationID == && txn RekeyTo global CurrentApplicationAddress == && txn NumAppArgs intc_1 // 0 == && pushint 148 // 148 && assert intc_1 // 0 callsub zero_1 intc_0 // 1 retsub // checkForDuplicate checkForDuplicate_11: txna ApplicationArgs 1 extract 0 1 btoi intc_0 // 1 == pushint 338 // 338 && assert txna ApplicationArgs 1 extract 5 1 btoi pushint 66 // 66 * pushint 14 // 14 + store 60 txna ApplicationArgs 1 load 60 pushint 34 // 34 extract3 store 61 txna ApplicationArgs 1 load 60 pushint 34 // 34 + pushint 8 // 8 extract3 btoi store 62 load 62 pushint 15240 // 15240 / store 64 txna Accounts 1 load 64 load 61 callsub getsigaddress_9 == pushint 348 // 348 && assert load 62 pushint 8 // 8 / pushint 1905 // 1905 % store 64 intc_0 // 1 load 64 callsub getbyte_2 store 63 load 63 load 62 pushint 8 // 8 % getbit intc_1 // 0 == pushint 355 // 355 && assert intc_0 // 1 load 64 load 63 load 62 pushint 8 // 8 % intc_0 // 1 setbit callsub setbyte_3 intc_0 // 1 pushbytes 0x6475706c6963617465 // "duplicate" callsub meta_5 retsub