diff --git a/scripts/fundraisingValidator.plutus b/scripts/fundraisingValidator.plutus index e616939..937c891 100644 --- a/scripts/fundraisingValidator.plutus +++ b/scripts/fundraisingValidator.plutus @@ -1,5 +1,5 @@ { - "cborHex": "591058591055010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232222232323232323232323232323232323232323232323253330643370e900000109919191919191919299983619831010002899299983699b87001337000266eb4c1d4c1cc01c54ccc1b4cdc482d9bad307530730071533306d337100266eb4c1d404054ccc1b4cdc399981180a1bae3075015375c60ea60e602a90010a99983699b87333023008375c60ea02a6eb8c1d4c1cc05520021533306d3370e6660460286eb8c1d4028dd7183a803a40042a6660da66e1cccc08c020dd7183a8051bae3075007480084c8c8c8c94ccc1c4ccc1c400528251149854cc1e924010334313500163302b002001302f3077011375a605e00260ea606060cc0242a660ec921033430380016153307649103343037001615330764910334303600161533076491033430350016153307649103343034001615330764910334303300161533076491033430320016305c00715330754901033430310016533306b3370e900000109919299983699b87371a002901c0991919191919191919191919191919299983e19b89480000044c8c8c8c8c8c94ccc20804cdc39b8d001480e04c8c926533308401001149854cc230042140458c2200400c54cc22c042240458dd70009844008009842808019bad00130850100130820100315330850107a16375a00261040200260fe0066eb4004c1fc004c1f000cdd7000983e000983c803299983919b87480000084c8c94ccc1d0cdc3984000800a4000264a6660ea66ebcdd383a1ba7307b00113253330763370e6e340052040132323232324994ccc1ec00452615330830107c16307f003375a00260fe00260f800a2a660fe0f22c6eb8c1f400454cc1f81e458c1fc00454cc1f41e458dd5000983d0008a9983d83e0b183e001183e0009baa00130760013073003153307607416375c00260e60022a660e80ea2c60ea00460ea0026ea8004c8c8c94ccc1a8cdc3a40040042a660e69210333303200161533306a3370e9002001098390008a99839a4903333031001630740023074001375460de60ac60c000660d80066eacc1b4c1acc178004c94ccc19800454cc1b9240103333036001613253330670011306e002153306f4901033330370016306b001303b016132323253330673370e66603a01c6eb8c1bc03cdd718379836807a40042a6660ce66e1cccc074038dd718378021bae306f306d004480084c94ccc1a400454ccc1a0cdc399980f1bab3070302e306100d375c60e00206eb8c1c0c1b8040c1512002153330683370e66603c6eacc1c0c0b8c184034dd718380029bae3070306e00530544800854ccc1a0cc084dd49bae307000c375860e0604460c201a264a6660d20022a6660d266e24dd698388060028a4c2646464a6660d86604e0040022930a9983a8158b181598398069bad302b0013071302c306200e153307203116333031375c60e060dc01201a0062a660e20782c2a660e207a2c2a660e207c2c2a6660d066e1cccc078dd59838181718308069bae3070010375c60e060dc02060a890010a99983419b8733301e375660e0605c60c201a6eb8c1c0014dd718381837002982a240042a6660d0660426ea4dd718380061bac30703022306100d132533306900115333069337126eb4c1c40300145261323232533306c33027002001149854cc1d40ac58c0acc1cc034dd698158009838981618310070a998390188b1998189bae3070306e00900d003153307103c16153307103d16153307103e16303e0191533070491033431300016153307049103343039001632330423374a90011982280083319ba548010198c1b8020cc88cc118c8c00488c8c8cdc0001299983619b873370c0069002240042a6660d866e20cdc1801a4008002290010a40002a6660d866e1ccdc1801a4008002266e1800920041533306c3371000266e0c00d2004148000520023370c00600466e0c008004cc88c00888c00c88c8c8c00488c8c8c8c88cc00400c008cdc100119b830040033370400266e0c0100094ccc1c8cdc380124000290000a99983919b890024800052001148008c8c8ccc19c8894ccc1d8cdc3800a4000200426600600266e18008004cc1480080054ccc1cccdc480100088010800982e801182e0011911980080100199b8200500232533306e3371200290000a9983b99b9649012a70747279506f7369746976653a206275696c64696e672077697468206e6f6e20706f7369746976653a200033062223372ca6660e066e20005200014901012d00149100323253330723370e00490000982900089919b96001305300230040023370a60b8004900a19b84305b00148050004584004cdc1001801182a19b8200200130544832004154dd6983680300099b81337020140a40a460dc00460dc0026ea8050c164c1a0024c194004c190004c130c18c004c154040c8c8c94ccc178cdc3a4004004260cc60ae0202a660ce92103333033001630680023068001375460c660c260a801a6094002646eacc188c180c14c004c8c188c180c14c004cccc12cc8dd61831182980098309829005982800590008a998312481033330350016305e001305000c53330563370e90000010991919299982ca9982999b87001480004cdc3800a40702646464a6660b866e24dc6800a4080264646464649329998308008a4c2a660d20c42c60ca0066eb4004c194004c18800c54cc19416058dd70009831000982f8020a9983102b0b1b8d001375c00260bc0022a6660ac66e1d2002002132323253330595330533370e0029000099b87001480e04c8c8c94ccc170cdc49b8d001481004c8c926533305e001149854cc19817c58c18800c54cc19416058dd70009831000982f8020a9983102b0b1b8d001375c00260bc0022a660be0c02c60c000460c00026ea80194ccc148cdc3a400000426464a6660a866e1cdc6800a40702646464646464646464646464646464a6660c666e252000001132323232323253330693370e6e340052038132324994ccc1ac004526153307306c16306f003153307207016375c00260de00260d80066eb4004c1b0004c1a400c54cc1b018458dd6800983480098330019bad00130660013063003375c00260c600260c000ca6660b266e1d200000213232533305b3370e60ce0029000099299982e19baf374e0b66e9cc1880044c94ccc174cdc39b8d001481004c8c8c8c8c9265333062001149854cc1a818c58c19800cdd6800983300098318028a998330300b1bae30640011533065060163066001153306406016375400260c20022a660c40c62c60c600460c60026ea8004c174004c16800c54cc17416c58dd7000982d0008a9982d82e0b182e001182e0009baa0032223333004002480008cccc014009200075a6eac00400c8c008dd480091111982011299982780088028a99982719baf305a305600100613004305930560011300230540010012303c22533304b00114a02a66609466ebcc14800400c52889801182800091826980500091198018011802982798269820000911929998239802182798268010991919299982519b87480000085280a99982519b87480080084c8cdc40008039bad305200114a260a800460a80026ea80044c8c8c94ccc128cdc3a40000042a660889405280a99982519b874800800854cc110c8cdc40008039bad30520011323370e00e0026eb4c14800454cc111288a50305400230540013754002609c002466e1cc140dd5000a4004076921033431320023301c3374a900002019ba548008cc07c0041008c8c8c94ccc10ccdc3a4004004260960022a6609800a2c609a004609a0026ea8c8c124c0e8004c120c0e40052410333303800230443002001230433002001230423002001230413002001230403029001490103323033002223300430050013300c0030022302b22533303a00114a02a660666006608200226004607e00244660066eacc0fcc0f4c0c0004ccc0100a00a000888cdd79ba6002374c002444a66606c66e1c0052000100713300400333005002001223300437520046e9800488cc00cdd48011ba800122330103376000400200697adef6c602233009300300237586070603e605200244646464a66606466e1d200200214a0266e3cdd7181d000802981e001181e0009baa3230383029001303730280014910334313100490103343134004901033431330023330023237586066604800260646046002646eb0c0ccc068c090004c0c8c08c004c084004888cccc07400c0048cc014c084c8c0d4c098004c0d0c0c8c09400400c54cc0d0014588c070894ccc0ac00440a44c94ccc0acc0100044cc024004c00cc0c40084c00cc0c4008c0c800524012063616e27742067657420616e7920636f6e74696e75696e67206f7574707574730022330033374a9000198028011980280201319ba548000cc014004cc01401009888cdd2a4000660080046600800204a980103d87a8000574044a66604666e240080044004400894ccc084cdc3800a400020042a66604266e1c00520021003153330213370e002900208020a99981099b8700148018401454ccc084cdc3800a4010200c2a66604266e1c005200a1007153330213370e002900608040a99981099b8700148038402454ccc084cdc3800a402020142a66604266e1c0052012100b16490101300049010131004901013200490101330049010134004901013500490101360049010137004901013800490101390025333016337120029000898010008800919b81480000048c88cc00400c0092002482024bd0048c060c06000494ccc0480045200013330113375e603a60320026ea4008dd6980e180c9bab301c3019001480012210022330033005001002300122253330110011225001153330103002301800113222300200330180011330030023016001232300223300200200123002233002002001223300300230153006001223375e6e9cc014008dd398028009191919299980699b87480080084c05400454cc05801458c05c008c05c004dd5180918081801800a49033330340023013375400246600e00200429452401327074727946726f6d28546f6b656e4e616d65293a206d757374206265206174206d6f7374203332204279746573206c6f6e67004901387074727946726f6d2843757272656e637953796d626f6c293a206d757374206265203238206279746573206c6f6e67206f7220656d707479004901257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665004bd702b9a5573e9201317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f004901257074727946726f6d2854784964293a206d757374206265203332206279746573206c6f6e670049012a7074727946726f6d2854784964293a20636f6e7374727563746f72206669656c6473206c656e203e2031004901267074727946726f6d2854784964293a20696e76616c696420636f6e7374727563746f7220696400574492012c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e67005742ae7124013f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72005573caae75", + "cborHex": "59145b591458010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232322222323232323232323232323232323232323232323232533305f3370e90010010991919299983119b8733303600e375c60d401e6eb8c1a8c1a003d2002153330623370e66606c01c6eb8c1a8010dd71835183400224004264a6660c80022a6660c666e1cccc0dcdd598359823982d8069bae306b010375c60d660d2020606890010a99983199b87333037375660d6608e60b601a6eb8c1ac014dd718359834802981a240042a6660c66603c6ea4dd718358061bac306b301f305b00d1323253330653370e00200a2a6660ca66e24dd698368068030a4c2646464a6660d06607e0040022930a998388128b182118378071bad3045001306d3046305d00f153306e023163053375660d860d460b80026604403460d660d20122a660d80482c2a660d804a2c2a660d804c2c2a6660c666e1cccc0dcdd598359823982d8069bae306b010375c60d660d2020606890010a99983199b87333037375660d6608e60b601a6eb8c1ac014dd718359834802981a240042a6660c66603c6ea4dd718358061bac306b301f305b00d1323253330653370e00200a2a6660ca66e24dd698368068030a4c2646464a6660d06607e0040022930a998388128b182118378071bad3045001306d3046305d00f153306e023163053375660d860d460b80026604403460d660d20122a660d80482c2a660d804a2c2a660d804c2c60960322a660d69201033431300016153306b491033430390016323303e3374a90011982700083099ba548010184c1a4020cc88cc098c8c00488c8c8cdc0001299983399b873370c0069002240042a6660ce66e20cdc1801a4008002290010a40002a6660ce66e1ccdc1801a4008002266e180092004153330673371000266e0c00d2004148000520023370c00600466e0c008004cc88c00888c00c88c8c8c00488c8c8c8c88cc00400c008cdc100119b830040033370400266e0c0100094ccc1b4cdc380124000290000a99983699b890024800052001148008c8c8ccc1848894ccc1c4cdc3800a4000200426600600266e18008004cc0c80080054ccc1b8cdc480100088010800981e801181e0011911980080100199b820050023253330693371200290000a9983919b9649012a70747279506f7369746976653a206275696c64696e672077697468206e6f6e20706f7369746976653a20003305c223372ca6660d666e20005200014901012d001491003232533306d3370e00490000981900089919b96001303300230040023370a6078004900a19b84303b00148050004584004cdc1001801181a19b82002001303448320040d4dd6983400300099b813370201406406426464646464646464a6660ce660b804000a264a6660d066e1c004cdc00099bad3070306e00715333068337120766eb4c1c0c1b801c54ccc1a0cdc40099bad3070010153330683370e6660780286eb8c1c0054dd71838183700aa40042a6660d066e1cccc0f0020dd7183800a9bae3070306e0154800854ccc1a0cdc399981e00a1bae307000a375c60e000e90010a99983419b8733303c008375c60e00146eb8c1c001d2002132323232533306c33306c0014a094452615330754910334313500163304200200130453072011375a609000260e0609260c00242a660e292103343038001615330714910334303700161533071491033430360016153307149103343035001615330714910334303400161533071491033430330016153307149103343032001630560071533070490103343031001653330663370e900000109919299983419b87371a002901c0991919191919191919191919191919299983b99b89480000044c8c8c8c8c8c8c8c8c8c8c926533308201001149854cc2280420c0458c218040194ccc1fccdc3a4000004264646464646464646464646464932999846008008a4c2a661280211a022c61200200ca6661120266e1d20000021323232323232324994ccc240040045261533098010910116309401006533308d013370e900000109919191919191924ca666128020022930a9984e0084a808b184c0080329998488099b87480000084c8c94ccc24c04cdc39b8d001480e04c8c926533309501001149854cc274042580458c2640400c54cc270042680458dd7000984c808008a9998488099b87480080084c8c94ccc24c04cdc39b8d001480e04c8c926533309501001149854cc274042580458c2640400c54cc270042400458dd7000984c808008a9984d0084d808b184d80801184d808009baa0013095010011533308d013370e900100109919191919191919191924ca66612e020022930a9984f8084c008b184d808019bad001309b01001309801003375a002613002002612a020066eb4004c2540400454cc2580425c0458c25c04008c25c04004dd50009848808008a9998448099b87480080084c926533308a01001149854cc2480422c045854cc2480424c0458c24c04008c24c04004dd500098468080098450080329998418099b87480000084c8c94ccc21404cdc39b8d001480e04c8c926533308701001149854cc23c042200458c22c0400c54cc238042300458dd70009845808008a9998418099b87480080084c8c94ccc21404cdc39b8d001480e04c8c926533308701001149854cc23c042200458c22c0400c54cc238042080458dd70009845808008a9984600846808b1846808011846808009baa001308701001153308801089011630890100230890100137540026106020026100020066eb4004c20004004c1f400c54cc200041d458dd6800983e800983d0019bad001307a0013077003375c00260ee00260e800ca6660da66e1d200000213232533306f3370e60f60029000099299983819baf374e0de6e9cc1d80044c94ccc1c4cdc39b8d001481004c8c8c8c8c9265333076001149854cc1f81dc58c1e800cdd6800983d000983b8028a9983d03a0b1bae3078001153307907416307a001153307807416375400260ea0022a660ec0ee2c60ee00460ee0026ea8004c1c4004c1b800c54cc1c41bc58dd700098370008a998378380b183800118380009baa00132323253330653370e90010010a99837249033330320016153330653370e9002001098368008a99837249033330310016306f002306f001375460d460a060b400660ce0066eacc1a0c198c160004c114c120058c1a4008c1a4004dd500a182998318049830000982f8009823182f0009827808191919299982c99b87480080084c184c14404054cc189240103333033001630630023063001375460bc60b8609c01a6088002646eacc174c16cc134004c8c174c16cc134004cccc114c8dd6182e9826800982e1826005982500590008a9982ea4810333303500163059001304a00c53330513370e90000010991919299982a29982699b87001480004cdc3800a40702646464a6660ae66e24dc6800a40802646464646493299982e0008a4c2a660c80ba2c60c00066eb4004c180004c17400c54cc18014858dd7000982e800982d0020a9982e8280b1b8d001375c00260b20022a6660a266e1d20020021323232533305453304d3370e0029000099b87001480e04c8c8c94ccc15ccdc49b8d001481004c8c9265333059001149854cc18416858c17400c54cc18014858dd7000982e800982d0020a9982e8280b1b8d001375c00260b20022a660b40b62c60b600460b60026ea80194ccc134cdc3a400000426464a66609e66e1cdc6800a40702646464646464646464646464646464a6660bc66e252000001132323232323232323232324994ccc1a4004526153307106a16306d00653330663370e900000109919191919191919191919191924ca6660e60022930a9983d83a0b183b803299983819b87480000084c8c8c8c8c8c8c9265333077001149854cc1fc1e058c1ec0194ccc1d0cdc3a400000426464646464646493299983d8008a4c2a66106020f82c60fe00ca6660f066e1d200000213232533307a3370e6e340052038132324994ccc1f000452615330840107d163080010031533083010810116375c0026100020022a6660f066e1d200200213232533307a3370e6e340052038132324994ccc1f000452615330840107d1630800100315330830107716375c0026100020022a6610202104022c6104020046104020026ea8004c1f000454ccc1d0cdc3a400400426464646464646464646493299983f0008a4c2a6610c020fe2c6104020066eb4004c20804004c1fc00cdd6800983f800983e0019bad001307c001153307d07e16307e002307e001375400260f00022a6660e066e1d20020021324994ccc1c4004526153307907216153307907a16307a002307a001375400260e800260e200ca6660d466e1d200000213232533306c3370e6e340052038132324994ccc1b8004526153307606f163072003153307507316375c00260e40022a6660d466e1d200200213232533306c3370e6e340052038132324994ccc1b8004526153307606f163072003153307506916375c00260e40022a660e60e82c60e800460e80026ea8004c1b800454cc1bc1c058c1c0008c1c0004dd5000983500098338019bad00130670013064003153306705c16375a00260c800260c20066eb4004c184004c17800cdd7000982f000982d803299982a19b87480000084c8c94ccc158cdc39831000a4000264a6660ae66ebcdd382b1ba7305d00113253330583370e6e340052040132323232324994ccc174004526153306505e163061003375a00260c200260bc00a2a660c20b62c6eb8c17c00454cc18016c58c18400454cc17c16c58dd5000982e0008a9982e82f0b182f001182f0009baa00130580013055003153305805616375c00260aa0022a660ac0ae2c60ae00460ae0026ea800c8c0e4894ccc1240045280a99982419baf305000100314a226004609c00246096604c0029210334313200490103323033002230293302e3037001300300223237586094606060740026092607200292010334313100490103343134004901033431330022533303e33712004002200220044a66607866e1c005200010021533303c3370e002900108018a99981e19b8700148010401054ccc0f0cdc3800a400c200a2a66607866e1c005200810061533303c3370e002900508038a99981e19b8700148030402054ccc0f0cdc3800a401c20122a66607866e1c0052010100a1533303c3370e002900908058b248101300049010131004901013200490101330049010134004901013500490101360049010137004901013800490101390025333031337120029000898010008800919b81480000048c88cc00400c0092002482024bd004888cccc01000920002333300500248001d69bab00100323002375200244446604244a666062002200a2a66606066ebcc0f0c0e00040184c010c0ecc0e00044c008c0d800400488cc00c008c014c0ccc0c4c08c00488c94ccc0acc010c0ccc0c40084c8c8c94ccc0b8cdc3a4000004294054ccc0b8cdc3a400400426466e2000401cdd6981b0008a513038002303800137540022646464a66605c66e1d200000215330274a0294054ccc0b8cdc3a40040042a6604e6466e2000401cdd6981b00089919b87007001375a606c0022a6604e944528181c001181c0009baa001303200123370e60686ea8005200201e2330023374a900001299ba548008cc04800409488cc00ccdd2a4000660240046602400804a66e9520003301200133012004025223374a90001980880119808800812260103d87a8000232323253330253370e9001001098168008a998170028b181780118178009baa32302b301b001302a301a0014901033330380023026300200123025300200123024300200123023300200123022300a0012533301c001153302400216132533301d00113024002153302500416302100149103333036004901033330370023330023237586042602200260406020002646eb0c084c01cc044004c080c040004c038004888cccc02800c0048cc014c038c8c08cc04c004c088c080c04800400c54cc088018588c024894ccc064004405c4c94ccc064c0100044cc014004c00cc07c0084c00cc07c008c0800055d02492063616e27742067657420616e7920636f6e74696e75696e67206f75747075747300230193019001253330130011480004ccc048cdd7980f180d0009ba9002375a603a60346eacc074c06800520004890022330033005001002300122253330120011225001153330113002301900113222300200330190011330030023017001232300223300200200123002233002002001223300300230163006001223375e6e9cc014008dd398028009191919299980719b87480080084c05800454cc05c01458c060008c060004dd5180998089801800a49033330340023014375400246601000200429452401327074727946726f6d28546f6b656e4e616d65293a206d757374206265206174206d6f7374203332204279746573206c6f6e67004901387074727946726f6d2843757272656e637953796d626f6c293a206d757374206265203238206279746573206c6f6e67206f7220656d7074790049012c7074727946726f6d285053637269707448617368293a206d757374206265203238206279746573206c6f6e67004901257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665004bd702b9a5573e9201317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f004901257074727946726f6d2854784964293a206d757374206265203332206279746573206c6f6e670049012a7074727946726f6d2854784964293a20636f6e7374727563746f72206669656c6473206c656e203e2031004901267074727946726f6d2854784964293a20696e76616c696420636f6e7374727563746f7220696400574492012c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e67005742ae7124013f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72005573caae75", "description": "Fundraising validator", "type": "PlutusScriptV2" } \ No newline at end of file diff --git a/scripts/protocolValidator.plutus b/scripts/protocolValidator.plutus index f7ebbd3..3239f5d 100644 --- a/scripts/protocolValidator.plutus +++ b/scripts/protocolValidator.plutus @@ -1,5 +1,5 @@ { - "cborHex": "59145d59145a010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232222232323232323232323232323253330523370e90010010991919191919191919299982d9981a181a80b1bab3063306230530091533305b3370e6660726eacc18cc188c14c024dd71831982980c9bae306330623053019480084c8c8c8c94ccc17ccc148070c10803454ccc17ccdc399981e9bab306730323057011375c60ce606660ae0186eb8c19cc0c8c15c0312002132323232323232323253330683375e60e0607460c002460e00022a6660d0a6607e66e24dd698380029bad30700081337126eb4c1c0020dd698380020a9998341991191919299822198161818983a8011818983a8008998161818983a983a0009818983a983a00118320011831801191981800080099ba548008cc16c0081a4c1c001ccc88cc0bccdd2a4004660b60040d266e9520023305b00106933030375a60e000600c660606eb4c1c000801854ccc1a0cdd7983818378009838183798378038a99983419b89371a6eb8c1c0025204613232533306a3370e6660900046eb8c1c8c1c4c18805cdd71839182f983100ba40042a6660d466e1cccc120008dd71839181f183100b9bae3072303d30620174800854ccc1a8cdc380099b800400401533306a3303837526eb8c1c8c188050dd61839181c983100e0a4c2a660e69201033133340016153307349103313232001615330734910331323100161533073491033132300016533306a0011480004ccc1a4cdd7983a98388009ba9488100375a60e860e26eacc1d0c1c40052000375660e060de60c00262a660e29210331333300161533071491033132370016153307149103313236001615330714910331313900161533071491033131380016306e001306d001306c001306b001305b020306a3034305a00f3068001306700130543057009153306849010331323500161533068491033131370016533305e3370e900000109919191919191919191919191919191919299983799b87371a002901c0991919191919191924ca6660ee0022930a9983f83c0b183e003299983a19b87480000084c8c94ccc1d8cdc3984100800a4000264a6660ee66ebcdd383b1ba7307e00113253330783370e6e340052040132323232324994ccc1f400452615330850107e16308201003375a00261020200260fe00a2a66102020f62c6eb8c1fc00454cc200041ec58c2040400454cc1fc1ec58dd5000983e0008a9983e83f0b183f001183f0009baa00130780013076003153307807516375c00260ea00260e60066eb4004c1c8004c1c000cdd6800983780098368019bad001306c001306a003375a00260d200260ce0066eb4004c19800454cc19c1a058c1a0008c1a0004dd5181f0048a9983201e0b0a9983201e8b299982d19b87480000084c8c94ccc170cdc39b8d001480e04c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94ccc1accdc4a40000022646464646464a6660e266e1cdc6800a4070264649329998398008a4c2a660f60e82c60f00062a660f40ee2c6eb8004c1dc004c1d400cdd6800983a00098390018a9983a0330b1bad0013071001306f003375a00260dc00260d80066eb8004c1ac004c1a40194ccc184cdc3a400000426464a6660c666e1cc1bc005200013253330643375e6e9c18cdd39835800899299983299b87371a00290200991919191924ca6660d40022930a998390358b18378019bad001306e001306c005153306e06816375c60d80022a660da0d02c60dc0022a660d80d02c6ea8004c1a400454cc1a81ac58c1ac008c1ac004dd5000983280098318018a998328310b1bae00130620011533063064163064002306400137540026072002607a66088608e002646eb0c178c12cc138004c174c134040c170c130004c16c008c0e403454ccc148cdc3a40080042a6660a4660406ea4dd7182d181218250079bac305a3021304a0041325333054001153330533370e6660626eacc16cc098c12c014dd7182d98258089bae305b305a304b011301f48008526153305c02016153330533370e6660626eacc16cc098c12c014dd7182d98258089bae305b305a304b011301f48008526153305c02016303d00d153305b0381613253330533302137526eb8c16cc094c12c040dd6182d98111825802899191919299982b99baf305f3029304f014323060302a3050001303a005153330573375e60be6050609e0286460c0605260a0002607400a2a6660ae605866094028607400a264646464a6660b666e240c4dd698318020a99982d99b88375a60c60086eb4c18c00c54ccc16ccdc4240046eb4c18c00854ccc16ccdc41bad3063002375a60c60022a6660b6a6606466e252000375a60c660c4002266e20dd698319831000a4190022a6660b666068606a02c6eacc18cc188c14c02454ccc16ccdc399981c9bab306330623053009375c60c660a60326eb8c18cc188c14c0652002149854cc1900f05854cc1900f45854cc191241033133320016153306449103313331001615330644910331333000161533064491033132390016153306449103313238001630610013060001305f001304f303a00515330604910331313400161533060491033131330016153306049103313132001653330563370e900000109919191919191919191919191919191919299983399b87371a002901c0991919191919191924ca6660de0022930a9983b8380b183a003299983619b87480000084c8c94ccc1b8cdc3983d000a4000264a6660de66ebcdd38371ba7307600113253330703370e6e340052040132323232324994ccc1d4004526153307d07616307a003375a00260f200260ee00a2a660f20e62c6eb8c1dc00454cc1e01cc58c1e400454cc1dc1cc58dd5000983a0008a9983a83b0b183b001183b0009baa0013070001306e003153307006d16375c00260da00260d60066eb4004c1a8004c1a000cdd6800983380098328019bad00130640013062003375a00260c200260be0066eb4004c17800454cc17c18058c180008c180004dd5181b0008a9982e01c8b181c806982e001182e0009baa00b32323253330513370e90010010982c98248060a9982d2481033330330016305b002305b001375460ac60aa608c012a66609a66e1d20000021323232323232324994ccc150004526153305c05516305900653330513370e900000109919191919191919191919191919191924ca6660c20022930a998348310b18330019bad00130650013063003375a00260c400260c00066eb4004c17c004c17400cdd6800982e000982d0019bad0013059001153305a05b16305b002305b001375400260aa0022a66609a66e1d20020021323232323232324994ccc150004526153305c05516305900653330513370e90000010991919191919191919299982d29982999b87001480004cdc3800a40702646464a6660ba66e24dc6800a4080264646464a6660c2a660b466e1c005200013370e002901c0991919299983219b89371a00290200991919299983399b89480000044c8c9265333069001149854cc1c41a858c1b800c54cc1c018858dd6800983680098358018a998368300b1bae001306a0013068004153306a05e16371a0026eb8004c198004c19000c54cc19816458dd7000983180098308020a9983182b8b1b8d001375c00260be00260ba00ca6660aa66e1d20000021323232323232323232323232324994ccc188004526153306a063163067006533305f3370e900000109919191919191924ca6660cc0022930a998370338b1835803299983199b87480000084c8c8c8c8c8c8c926533306a001149854cc1c81ac58c1bc0194ccc19ccdc3a400000426464a6660d266e1cdc6800a4070264649329998358008a4c2a660e60d82c60e00062a660e40de2c6eb8004c1bc00454ccc19ccdc3a400400426464a6660d266e1cdc6800a4070264649329998358008a4c2a660e60d82c60e00062a660e40ce2c6eb8004c1bc00454cc1c01c458c1c4008c1c4004dd500098358008a99983199b87480080084c8c8c8c8c8c8c8c8c8c926533306d001149854cc1d41b858c1c800cdd6800983880098378019bad001306e001306c003375a00260d60022a660d80da2c60da00460da0026ea8004c19c00454ccc17ccdc3a40040042649329998300008a4c2a660d00c22c2a660d00d22c60d200460d20026ea8004c18c004c1840194ccc164cdc3a400000426464a6660b666e1cdc6800a40702646493299982e8008a4c2a660ca0bc2c60c40062a660c80c22c6eb8004c18400454ccc164cdc3a400400426464a6660b666e1cdc6800a40702646493299982e8008a4c2a660ca0bc2c60c40062a660c80b22c6eb8004c18400454cc18818c58c18c008c18c004dd5000982e8008a9982f02f8b182f801182f8009baa0013059001153305a05b16305b002305b001375400260aa0022a66609a66e1d20040021324994ccc138004526153305604f1615330560571630570023057001375400ca66609266e1d200000213232323232323232323232323232323232533305a3370e6e340052038132323232323232324994ccc188004526153306a063163067006533305f3370e900000109919299983099b87306d001480004c94ccc188cdd79ba7061374e60d2002264a6660c666e1cdc6800a4080264646464649329998340008a4c2a660e00d22c60da0066eb4004c1b0004c1a801454cc1b019858dd718350008a998358330b18360008a998350330b1baa001306700115330680691630690023069001375400260c600260c20062a660c60c02c6eb8004c180004c17800cdd6800982e800982d8019bad001305a0013058003375a00260ae00260aa0066eb4004c150004c14800cdd680098288008a998290298b182980118298009baa0032232323232533304753304053301e0021001153301e301c0021301c0011330070040031330090040033009304e304d0043008304d304c004304c002304b0022253303b330040020011330030020012232323253330443370e90000010991919299982399b87480000085288a503051002305100137540082a66608866e1d2002002132323253330473370e900100109919b87375a60a000a0026eb4c13c004528182880118288009baa004132323253330473370e90020010a5114a060a200460a20026ea8010c138008c138004dd500111191919299982199b87480000085288a99982199b87480080084c8c8c94ccc118cdc3a4000004294054ccc118cdc3a400800429444cdc41bad304e004375a609c00260a000460a00026ea80104c8c8c94ccc118cdc3a40080042944528182800118280009baa004304d002304d0013754004466e1cc128dd5000a4004068446600666e9520003302e0023302e00403c3374a9000198170009981700201e1119ba548000cc0b4008cc0b40040ed300103d87a8000223300300137506008004446ea0cdc01bad002375a002466e08cdc1000a40f0004906807919b8148000005240103313233002302322533303600114a02a66606a66ebcc0f400400c52889801181e0009181c98010009181c18010009181b98010009181b18010009181a98010009181a18110009199816000a504a29040497a00911998158010008018a50223375e6e98008dd30009191bab3030302f30200013002001232302f302e301f0013330020012001153302f00316233012323758605c603c002605a603a002603600292103333035002223333004002480008cccc014009200075a6eac00400c8c008dd480091111980a11299981380088028a99981319baf3032302e001006130043031302e00113002302d0010014901033131360049010331313500232323253330213370e90010010a998150028b0a99981099b87480100084c0a400454cc0a801858c0ac008c0ac004dd518131809980b000a49033330320049010333303100490103313131002300230050012533301a001153302200216132533301b0011302200215330230041630200014910333303600490103333037002333002323758603e601e002603c601c002646eb0c07cc030c03c004c078c038004c030004888cccc01000c0048cc01cc028c8c084c044004c080c07cc04000400c54cc08002c5888cc00cc01c004008c0088894ccc058004489400454ccc054c008c0740044c888c00800cc0740044cc00c008c0700048c008894ccc054004404c4c94ccc054c0100044cc018004c00cc0700084c00cc070008c0700048c8c0088cc0080080048c0088cc0080080055d01119801801180c18040009119baf374e600e0046e9cc01c00524012063616e27742067657420616e7920636f6e74696e75696e67206f757470757473002301330130012323232533300e3370e90010010980b0008a9980b8028b180c001180c0009baa301330123003001491033330340023014375400246601000200429452401257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665004901327074727946726f6d28546f6b656e4e616d65293a206d757374206265206174206d6f7374203332204279746573206c6f6e67004901387074727946726f6d2843757272656e637953796d626f6c293a206d757374206265203238206279746573206c6f6e67206f7220656d7074790049012c7074727946726f6d285053637269707448617368293a206d757374206265203238206279746573206c6f6e67004bd702b9a5573e9201317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f004901257074727946726f6d2854784964293a206d757374206265203332206279746573206c6f6e670049012a7074727946726f6d2854784964293a20636f6e7374727563746f72206669656c6473206c656e203e2031004901267074727946726f6d2854784964293a20696e76616c696420636f6e7374727563746f722069640049012c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e67005744ae855ce2493f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72005573caae75", + "cborHex": "591d5e591d5b0100003232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232222232323232323232323232323253330573370e900000109919299982c998191ba9001375860bc6066609c00c264646464a6660ba66ebcc188c138c148054c8c18cc13cc14c004c0bc01854ccc174cdd79831181c982900a991831981d182980098178030a99982e980f9982380a9817803099191919299983099b89030375a60cc0082a6660c266e20dd698330021bad3066003153330613371090011bad306600215333061337106eb4c198008dd698330008a999830a9981099b8948000dd698331832800899b88375a60cc60ca0029064008a9998309980d980e00b9bab30663065305600a153330613370e66607c6eacc198c194c158028dd71833182b00d1bae30663065305601a48008526153306703116153306703216153306749103313332001615330674910331333100161533067491033133300016153306749103313239001615330674910331323800163064001306300130620013052302f006153306349103313134001615330634910331313300161533063491033131320016533305c3370e900000109919191919191919191919191919191919191919191919191919191924ca6660f00022930a9983e83c8b183d003299983a99b87480000084c8c94ccc1dccdc3984000800a4000264a6660f066ebcdd38399ba7307c00113253330793370e6e340052040132323232324994ccc1f800452615330830107f16308001003375a00260fe00260fa00a2a660fe0ea2c6eb8c1f400454cc1f81d458c1fc00454cc1f41d458dd5000983d0008a9983d83e0b183e001183e0009baa00130760013074006533306f3370e900000109919191919191919191919191924ca6660f80022930a998408083e8b183f003299983c99b87480000084c8c8c8c8c8c8c926533308001001149854cc214042040458c208040194ccc1f4cdc3a4000004264646464646464932999842008008a4c2a661120210a022c610c0200ca6661020266e1d2000002132325333083013370e6e340052038132324994ccc21404004526153308a0108601163087010031533089010820116375c002610c020022a6661020266e1d2002002132325333083013370e6e340052038132324994ccc21404004526153308a0108601163087010031533089010860116375c002610c020022a6610e02110022c6110020046110020026ea8004c2080400454ccc1f4cdc3a4004004264646464646464646464932999843808008a4c2a6611802110022c6112020066eb4004c22004004c2180400cdd68009842808009841808019bad0013082010011533083010840116308401002308401001375400260fc0022a6660f266e1d20020021324994ccc1e8004526153307f07b16153307f0800116308001002308001001375400260f400260f000ca6660e666e1d20000021323253330753370e6e340052038132324994ccc1dc004526153307c078163079003153307b07416375c00260f00022a6660e666e1d20020021323253330753370e6e340052038132324994ccc1dc004526153307c078163079003153307b07816375c00260f00022a660f20f42c60f400460f40026ea8004c1d000454cc1d41d858c1d8008c1d8004dd5000983800098370019bad001306d001306b003375a00260d400260d00066eb4004c19c004c19400cdd6800983200098310019bad001306100115330620631630630023063001375460560042a660be08e2c608e60ba6092609a020605801a2a6660ae66e1d2002002132323232323232323253330603301a301b016375660ca60c860aa0122a6660c066e1cccc0f4dd598329832182a8049bae30653055019375c60ca60c860aa032900109919191929998321982700e181b0068a99983219b87333041375660d260ac60b20226eb8c1a4c15cc164030dd71834982b182c806240042646464646464646464a6660da66ebcc1c8c178c188048c1c800454ccc1b54cc0b4cdc49bad3072005375a60e4010266e24dd698390041bad30720041533306d33223232325330323303130393077002303930770011330313039307730760013039307730760023066002306500232330380010013374a90011982b801035183900399911981b99ba548008cc15c0081a8cdd2a4004660ae0020d4660706eb4c1c800c018cc0e0dd698390010030a99983699baf307230710013072307130710071533306d337126e34dd71839004a408c26464a6660de66e1cccc130008dd7183a1839983200b9bae3074306330640174800854ccc1bccdc39998260011bae307430623064017375c60e860c260c802e90010a99983799b870013370007c07c2a6660de660906ea4dd7183a183200a1bac30743049306401c149854cc1d52401033133340016153307549103313232001615330754910331323100161533075491033132300016533306f0011480004ccc1b8cdd7983b98398009ba9488100375a60ec60e66eacc1d8c1cc0052000375660e460e260c40262a660e692103313333001615330734910331323700161533073491033132360016153307349103313139001615330734910331313800163070001306f001306e001306d001305d020306c3058305c00f306a001306900130583059009153306a4901033132350016153306a49103313137001653330633370e900000109919191919191919191919191919191919191919191919191919191924ca6660fe0022930a9984200840008b184080803299983e19b87480000084c8c94ccc1f8cdc3984380800a4000264a6660fe66ebcdd383d1ba73083010011325333080013370e6e340052040132323232324994ccc21404004526153308a010860116308701003375a002610c0200261080200a2a6610c020f82c6eb8c2100400454cc214041f058c2180400454cc210041f058dd50009840808008a9984100841808b1841808011841808009baa001307d001307b00653330763370e900000109919191919191919191919191924ca666106020022930a9984400842008b18428080329998400099b87480000084c8c8c8c8c8c8c926533308701001149854cc230042200458c224040194ccc21004cdc3a4000004264646464646464932999845808008a4c2a6612002118022c611a0200ca6661100266e1d200000213232533308a013370e6e340052038132324994ccc2300400452615330910108d0116308e010031533090010890116375c002611a020022a6661100266e1d200200213232533308a013370e6e340052038132324994ccc2300400452615330910108d0116308e0100315330900108d0116375c002611a020022a6611c0211e022c611e02004611e020026ea8004c2240400454ccc21004cdc3a4004004264646464646464646464932999847008008a4c2a661260211e022c6120020066eb4004c23c04004c2340400cdd68009846008009845008019bad001308901001153308a0108b0116308b01002308b010013754002610a020022a6661000266e1d20020021324994ccc2040400452615330860108201161533086010870116308701002308701001375400261020200260fe00ca6660f466e1d200000213232533307c3370e6e340052038132324994ccc1f800452615330830107f1630800100315330820107b16375c00260fe0022a6660f466e1d200200213232533307c3370e6e340052038132324994ccc1f800452615330830107f1630800100315330820107f16375c00260fe0022a6610002102022c6102020046102020026ea8004c1ec00454cc1f01f458c1f4008c1f4004dd5000983b800983a8019bad00130740013072003375a00260e200260de0066eb4004c1b8004c1b000cdd6800983580098348019bad0013068001153306906a16306a002306a001375460640122a660cc0602c2a660cc0622ca6660be66e1d20000021323253330613370e6e340052038132323232323232323232323232323253330703371290000008991919191919191919191924ca6660f60022930a998400083e0b183e803299983c19b87480000084c8c8c8c8c8c8c8c8c8c8c8c8c926533308501001149854cc228042180458c21c040194ccc20804cdc3a4000004264646464646464932999844808008a4c2a6611c02114022c61160200ca66610c0266e1d20000021323232323232324994ccc2340400452615330920108e0116308f01006533308a013370e90000010991929998460099b87371a002901c0991924ca66611c020022930a9984980847808b1848008018a9984900845808b1bae001308f010011533308a013370e90010010991929998460099b87371a002901c0991924ca66611c020022930a9984980847808b1848008018a9984900847808b1bae001308f01001153309001091011630910100230910100137540026116020022a66610c0266e1d20020021323232323232323232324994ccc240040045261533095010910116309201003375a002612202002611e020066eb4004c23804004c2300400cdd68009845808008a9984600846808b1846808011846808009baa00130870100115333082013370e900100109924ca666106020022930a9984400842008b0a9984400844808b1844808011844808009baa001308301001308101006533307c3370e900000109919299983f19b87371a002901c0991924ca666100020022930a9984280840808b1841008018a998420083e8b1bae0013081010011533307c3370e900100109919299983f19b87371a002901c0991924ca666100020022930a9984280840808b1841008018a9984200840808b1bae0013081010011533082010830116308301002308301001375400260fa0022a660fc0fe2c60fe00460fe0026ea8004c1e4004c1dc00cdd6800983b000983a0018a9983b0340b1bad00130730013071003375a00260e000260dc0066eb8004c1b4004c1ac0194ccc198cdc3a400000426464a6660d066e1cc1c4005200013253330693375e6e9c190dd39836800899299983519b87371a00290200991919191924ca6660de0022930a9983a0380b18388019bad0013070001306e005153307006616375c60dc0022a660de0cc2c60e00022a660dc0cc2c6ea8004c1ac00454cc1b01b458c1b4008c1b4004dd5000983380098328018a998338300b1bae0013064001153306506616306600230660013754002605a0026060660806086002646eb0c180c13cc140004c17cc13c040c178c138004c174008c0b00344c94ccc160cc0c4dd48009bac305d3032304d005132533305a001153330593370e66606c6eacc178c12cc138018dd7182f18270091bae305e305d304e012303948008526153305f03a16153330593370e66606c6eacc178c12cc138018dd7182f18270091bae305e305d304e012303948008526153305f03a16303a00e153305e046163046305c3048304c00f305e002305e0013754016646464a6660ac66e1d20020021305b304b00c153305c4901033330330016305d002305d001375460b060ae6090012a6660a466e1d20000021323232323232324994ccc164004526153305e05a16305b00653330563370e900000109919191919191919191919191919191924ca6660cc0022930a998358338b18340019bad00130670013065003375a00260c800260c40066eb4004c184004c17c00cdd6800982f000982e0019bad001305b001153305c05d16305d002305d001375400260ae0022a6660a466e1d20020021323232323232324994ccc164004526153305e05a16305b00653330563370e90000010991919191919191919299982fa9982a99b87001480004cdc3800a40702646464a6660c466e24dc6800a4080264646464a6660cca660b866e1c005200013370e002901c0991919299983499b89371a00290200991919299983619b89480000044c8c926533306e001149854cc1cc1bc58c1c000c54cc1c819058dd6800983780098368018a998378310b1bae001306c001306a004153306c06016371a0026eb8004c1a0004c19800c54cc1a016c58dd7000983280098318020a9983282c8b1b8d001375c00260c200260be00ca6660b466e1d20000021323232323232323232323232324994ccc19c004526153306c06816306900653330643370e900000109919191919191924ca6660d60022930a998380360b1836803299983419b87480000084c8c8c8c8c8c8c926533306f001149854cc1d01c058c1c40194ccc1b0cdc3a400000426464a6660dc66e1cdc6800a4070264649329998380008a4c2a660ea0e22c60e40062a660e80da2c6eb8004c1c400454ccc1b0cdc3a400400426464a6660dc66e1cdc6800a4070264649329998380008a4c2a660ea0e22c60e40062a660e80e22c6eb8004c1c400454cc1c81cc58c1cc008c1cc004dd500098368008a99983419b87480080084c8c8c8c8c8c8c8c8c8c9265333072001149854cc1dc1cc58c1d000cdd6800983980098388019bad0013070001306e003375a00260da0022a660dc0de2c60de00460de0026ea8004c1a400454ccc190cdc3a40040042649329998328008a4c2a660d40cc2c2a660d40d62c60d600460d60026ea8004c194004c18c0194ccc178cdc3a400000426464a6660c066e1cdc6800a4070264649329998310008a4c2a660ce0c62c60c80062a660cc0be2c6eb8004c18c00454ccc178cdc3a400400426464a6660c066e1cdc6800a4070264649329998310008a4c2a660ce0c62c60c80062a660cc0c62c6eb8004c18c00454cc19019458c194008c194004dd5000982f8008a998300308b183080118308009baa001305b001153305c05d16305d002305d001375400260ae0022a6660a466e1d20040021324994ccc14c00452615330580541615330580591630590023059001375400ca66609c66e1d20000021323232323232323232323232323232323232323232323232323232324994ccc1a8004526153306f06b16306c00653330673370e900000109919299983499b873072001480004c94ccc1a8cdd79ba7065374e60dc002264a6660d666e1cdc6800a4080264646464649329998380008a4c2a660ea0e22c60e40066eb4004c1c4004c1bc01454cc1c419c58dd718378008a998380338b18388008a998378338b1baa001306c001153306d06e16306e002306e001375400260d000260cc00ca6660c266e1d20000021323232323232323232323232324994ccc1b8004526153307306f163070006533306b3370e900000109919191919191924ca6660e40022930a9983b8398b183a003299983799b87480000084c8c8c8c8c8c8c9265333076001149854cc1ec1dc58c1e00194ccc1cccdc3a400000426464a6660ea66e1cdc6800a40702646493299983b8008a4c2a660f80f02c60f20062a660f60e82c6eb8004c1e000454ccc1cccdc3a400400426464a6660ea66e1cdc6800a40702646493299983b8008a4c2a660f80f02c60f20062a660f60f02c6eb8004c1e000454cc1e41e858c1e8008c1e8004dd5000983a0008a99983799b87480080084c8c8c8c8c8c8c8c8c8c9265333079001149854cc1f81e858c1ec00cdd6800983d000983c0019bad00130770013075003375a00260e80022a660ea0ec2c60ec00460ec0026ea8004c1c000454ccc1accdc3a40040042649329998360008a4c2a660e20da2c2a660e20e42c60e400460e40026ea8004c1b0004c1a80194ccc194cdc3a400000426464a6660ce66e1cdc6800a4070264649329998348008a4c2a660dc0d42c60d60062a660da0cc2c6eb8004c1a800454ccc194cdc3a400400426464a6660ce66e1cdc6800a4070264649329998348008a4c2a660dc0d42c60d60062a660da0d42c6eb8004c1a800454cc1ac1b058c1b0008c1b0004dd500098330008a998338340b183400118340009baa00130620013060003375a00260be00260ba0066eb4004c170004c16800cdd6800982c800982b8019bad00130560013054003375a00260a60022a660a80aa2c60aa00460aa0026ea800c88cdd79ba6002374c0024646eacc130c12cc0f0004c0080048c8c12cc128c0ec004ccc008004800454cc12c00c588cc0a0c8dd61825181d0009824981c8009818000a4903333035002232323232533304753303d5330070021001153300730090021300900113300a00400313300c004003300c304b304a004300b304a3049004304900230480022233304200200100314a0466607e002941289129981a9980200100089980180100091191919299982099b87480000084c8c8c94ccc110cdc3a40000042944528182580118258009baa004153330413370e90010010991919299982219b87480080084c8cdc39bad304a005001375a60920022940c12c008c12c004dd50020991919299982219b87480100085288a50304b002304b0013754008609000460900026ea800888c8c8c94ccc100cdc3a4000004294454ccc100cdc3a40040042646464a66608666e1d200000214a02a66608666e1d200400214a2266e20dd698240021bad3048001304a002304a00137540082646464a66608666e1d200400214a22940c128008c128004dd5002182380118238009baa00223370e60886ea8005200202e22330033374a9000198110011981100201a99ba548000cc088004cc0880100d488cdd2a40006604200466042002068980103d87a8000223300300137506008004446ea0cdc01bad002375a002466e08cdc1000a40f0004906807a410125e802921033131360049010331313500232323253330323370e90010010a9981c0028b0a99981919b87480100084c0dc00454cc0e001858c0e4008c0e4004dd5181a18119812000a4903333032004901033330310023002300e0012533302c001153303100216132533302d00113031002153303200416302f0014910333303600490103333037002300f22533302b00114a02a66605466ebcc0bc00400c52889801181700091815980100091815180100091814980b0009111999802001240004666600a00490003ad3756002006460046ea40048888cc030894ccc0a0004401454ccc09ccdd7981818160008030980218179816000898011815800800919b814800000524103313233002333002323758604a602a00260486028002646eb0c094c050c054004c090c050004c02c004888cccc01000c0048cc01cc028c8c09cc05c004c098c094c05800400c54cc09802c5888cc00cc01c004008c0088894ccc07c004489400454ccc078c008c08c0044c888c00800cc08c0044cc00c008c0880048c008894ccc07800440604c94ccc078c0100044cc018004c00cc0880084c00cc088008c0880048c8c0088cc0080080048c0088cc0080080055d01119801801180f18070009119baf374e601a0046e9cc03400524012063616e27742067657420616e7920636f6e74696e75696e67206f75747075747300232323253330183370e90010010980e8008a9980f0028b180f801180f8009baa301a3019300a001491033330340049010331313100232323253330153370e90010010a9980d8028b09bae301a001301c002301c0013754602e600e002921033331320023014300200123013300200123012300200123011301100123014375400246601600200429452401257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665004901327074727946726f6d28546f6b656e4e616d65293a206d757374206265206174206d6f7374203332204279746573206c6f6e67004901387074727946726f6d2843757272656e637953796d626f6c293a206d757374206265203238206279746573206c6f6e67206f7220656d707479004bd70249257074727946726f6d2854784964293a206d757374206265203332206279746573206c6f6e670049012a7074727946726f6d2854784964293a20636f6e7374727563746f72206669656c6473206c656e203e2031004901267074727946726f6d2854784964293a20696e76616c696420636f6e7374727563746f722069640049012c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e67005734aae7d241317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f0049012c7074727946726f6d285053637269707448617368293a206d757374206265203238206279746573206c6f6e67005744ae855ce2493f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72005573caae75", "description": "Protocol Validator", "type": "PlutusScriptV2" } \ No newline at end of file diff --git a/src/Fundraising/Create.purs b/src/Fundraising/Create.purs index e1c6552..5625ca8 100644 --- a/src/Fundraising/Create.purs +++ b/src/Fundraising/Create.purs @@ -31,7 +31,7 @@ import MintingPolicy.NftMinting as NFT import MintingPolicy.NftRedeemer (PNftRedeemer(..)) import MintingPolicy.VerTokenMinting as VerToken import MintingPolicy.VerTokenRedeemers (PVerTokenRedeemer(..)) -import Protocol.Datum (_protocolFee, _minDuration, _maxDuration, _minAmount, _maxAmount, _managerPkh) +import Protocol.Datum (_protocolFee, _minDuration, _maxDuration, _minAmount, _maxAmount, _managerAddress) import Protocol.Models (PFundriseConfig(..)) import Protocol.ProtocolScriptInfo (ProtocolScriptInfo(..), getProtocolScriptInfo) import Protocol.Redeemer (PProtocolRedeemer(..)) @@ -94,7 +94,7 @@ contract protocolData (CreateFundraisingParams { title, amount, duration }) = do , frAmount: targetAmount , frDeadline: deadline , frFee: view _protocolFee protocolInfo.pDatum - , managerPkh: view _managerPkh protocolInfo.pDatum + , managerAddress: view _managerAddress protocolInfo.pDatum } let diff --git a/src/Fundraising/Datum.purs b/src/Fundraising/Datum.purs index e7f6f71..1ca1373 100644 --- a/src/Fundraising/Datum.purs +++ b/src/Fundraising/Datum.purs @@ -2,7 +2,7 @@ module Fundraising.Datum where import Ctl.Internal.FromData -import Contract.Address (PaymentPubKeyHash) +import Contract.Address (Address, PaymentPubKeyHash) import Contract.PlutusData (class HasPlutusSchema, type (:+), type (:=), type (@@), I, PNil, Z, genericToData) import Contract.Prelude (class Generic, class Show) import Contract.Time (POSIXTime) @@ -23,7 +23,7 @@ newtype PFundraisingDatum = PFundraisingDatum , frAmount :: BigInt -- amount to raise in Lovelace , frDeadline :: POSIXTime , frFee :: BigInt -- percentage - , managerPkh :: PaymentPubKeyHash + , managerAddress :: Address } derive instance Generic PFundraisingDatum _ @@ -48,8 +48,8 @@ instance := I POSIXTime :+ "frFee" := I BigInt - :+ "managerPkh" - := I PaymentPubKeyHash + :+ "managerAddress" + := I Address :+ PNil ) @@ Z diff --git a/src/Fundraising/ReceiveFunds.purs b/src/Fundraising/ReceiveFunds.purs index 8955843..f08e366 100644 --- a/src/Fundraising/ReceiveFunds.purs +++ b/src/Fundraising/ReceiveFunds.purs @@ -23,7 +23,6 @@ import Fundraising.Calculations (calcFee) import Fundraising.Datum (PFundraisingDatum(..)) import Fundraising.FundraisingScriptInfo (FundraisingScriptInfo(..), getFundraisingScriptInfo, makeFundraising) import Fundraising.Models (Fundraising(..)) -import Shared.OwnCredentials (OwnCredentials(..), getOwnCreds) import Fundraising.Redeemer (PFundraisingRedeemer(..)) import Fundraising.UserData (FundraisingData(..)) import MintingPolicy.NftMinting as NFT @@ -32,6 +31,7 @@ import MintingPolicy.VerTokenMinting as VerToken import Protocol.UserData (ProtocolData, dataToProtocol) import Shared.MinAda (minAda) import Shared.NetworkData (NetworkParams) +import Shared.OwnCredentials (OwnCredentials(..), getOwnCreds, getPkhSkhFromAddress) import Shared.RunContract (runContractWithResult) import Shared.Utxo (checkTokenInUTxO) @@ -41,7 +41,6 @@ runReceiveFunds onComplete onError pData networkParams fundraisingData = contract :: ProtocolData -> FundraisingData -> Contract Unit contract pData (FundraisingData fundraisingData) = do - -- TODO: use mustPayToPubKeyAddress for managerPkh (need stake key hash) logInfo' "Running receive funds" protocol <- dataToProtocol pData let threadTokenCurrency = fundraisingData.frThreadTokenCurrency @@ -53,7 +52,7 @@ contract pData (FundraisingData fundraisingData) = do let currentFunds = frInfo.frValue (PFundraisingDatum currentDatum) = frInfo.frDatum - managerPkh = currentDatum.managerPkh + managerPkh /\ managerSkh <- getPkhSkhFromAddress currentDatum.managerAddress now <- currentTime let donatedAmount = Value.valueOf currentFunds adaSymbol adaToken - minAda - minAda when (now <= currentDatum.frDeadline && donatedAmount < currentDatum.frAmount) @@ -87,7 +86,7 @@ contract pData (FundraisingData fundraisingData) = do (Redeemer $ toData $ PBurnNft fr.verTokenName) verTokenToBurnValue <> Constraints.mustPayToPubKeyAddress creds.ownPkh creds.ownSkh amountToReceiver - <> Constraints.mustPayToPubKey managerPkh (Value.lovelaceValueOf feeByFundraising) + <> Constraints.mustPayToPubKeyAddress managerPkh managerSkh (Value.lovelaceValueOf feeByFundraising) <> Constraints.mustValidateIn (from now) <> Constraints.mustReferenceOutput (fst frInfo.frScriptRef) diff --git a/src/Info/AppInfo.purs b/src/Info/AppInfo.purs index bcc62ff..be046dd 100644 --- a/src/Info/AppInfo.purs +++ b/src/Info/AppInfo.purs @@ -7,12 +7,12 @@ import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM) import Contract.Utxos (utxosAt) import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) -import Shared.OwnCredentials (getOwnUserInfo) import Info.UserData (AppInfo(..)) import Protocol.Models (Protocol) import Protocol.ProtocolScript (getProtocolValidatorHash) import Protocol.UserData (ProtocolData, dataToProtocol, getConfigFromProtocolDatum) import Shared.NetworkData (NetworkParams) +import Shared.OwnCredentials (getOwnUserInfo, getPkhSkhFromAddress) import Shared.RunContract (runContractWithResult) import Shared.Utxo (UtxoTuple, extractDatumFromUTxO, getUtxoByNFT) @@ -32,7 +32,7 @@ appInfoContract protocolData = do protocolUtxo <- getProtocolUtxo protocol utxos protocolDatum <- liftContractM "Impossible to get Protocol Datum" $ extractDatumFromUTxO protocolUtxo logInfo' $ "Current datum: " <> show protocolDatum - let managerPkh = unwrap >>> _.managerPkh $ protocolDatum + managerPkh /\ _ <- getPkhSkhFromAddress (unwrap protocolDatum).managerAddress userInfo <- getOwnUserInfo managerPkh let diff --git a/src/Protocol/CloseProtocol.purs b/src/Protocol/CloseProtocol.purs index 4022387..5ab390e 100644 --- a/src/Protocol/CloseProtocol.purs +++ b/src/Protocol/CloseProtocol.purs @@ -2,6 +2,7 @@ module Protocol.CloseProtocol where import Contract.Prelude +import Config.Protocol (mapToProtocolData, readProtocolConfig) import Contract.Address (getWalletAddressesWithNetworkTag) import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder, mustSendChangeToAddress) import Contract.Log (logInfo') @@ -13,8 +14,8 @@ import Contract.TxConstraints as Constraints import Contract.Value as Value import Data.Array as Array import Data.BigInt (fromInt) +import Effect.Aff (launchAff_) import Effect.Exception (throw) -import Shared.OwnCredentials (OwnCredentials(..), getOwnCreds) import MintingPolicy.NftMinting as NFT import MintingPolicy.NftRedeemer (PNftRedeemer(..)) import Protocol.Models (Protocol(..)) @@ -22,8 +23,7 @@ import Protocol.ProtocolScriptInfo (ProtocolScriptInfo(..), getProtocolScriptInf import Protocol.Redeemer (PProtocolRedeemer(PCloseProtocol)) import Protocol.UserData (ProtocolData, dataToProtocol) import Shared.KeyWalletConfig (testnetKeyWalletConfig) -import Config.Protocol (mapToProtocolData, readProtocolConfig) -import Effect.Aff (launchAff_) +import Shared.OwnCredentials (OwnCredentials(..), getOwnCreds, getPkhSkhFromAddress) runCloseProtocol :: Effect Unit runCloseProtocol = do @@ -36,7 +36,7 @@ contract protocolData = do logInfo' "Running closeProtocol" protocol@(Protocol { protocolCurrency, protocolTokenName }) <- dataToProtocol protocolData (ProtocolScriptInfo protocolInfo) <- getProtocolScriptInfo protocol - let managerPkh = (unwrap protocolInfo.pDatum).managerPkh + managerPkh /\ _ <- getPkhSkhFromAddress (unwrap protocolInfo.pDatum).managerAddress (OwnCredentials creds) <- getOwnCreds when (managerPkh /= creds.ownPkh) $ liftEffect $ throw "current user doesn't have permissions to close protocol" let nftOref = (unwrap protocolInfo.pDatum).tokenOriginRef diff --git a/src/Protocol/Datum.purs b/src/Protocol/Datum.purs index 07346be..9eee4e0 100644 --- a/src/Protocol/Datum.purs +++ b/src/Protocol/Datum.purs @@ -1,7 +1,7 @@ module Protocol.Datum where import Ctl.Internal.FromData -import Contract.Address (PaymentPubKeyHash) +import Contract.Address (Address) import Contract.PlutusData (class HasPlutusSchema, type (:+), type (:=), type (@@), I, PNil, Z, genericToData) import Contract.Prelude (class Generic, class Show) import Ctl.Internal.ToData (class ToData) @@ -20,7 +20,7 @@ newtype PProtocolDatum = PProtocolDatum , minDuration :: BigInt , maxDuration :: BigInt , protocolFee :: BigInt -- the percentage - , managerPkh :: PaymentPubKeyHash + , managerAddress :: Address , tokenOriginRef :: TransactionInput } @@ -39,8 +39,8 @@ _maxDuration = _Newtype <<< prop (Proxy :: Proxy "maxDuration") _protocolFee :: Lens' PProtocolDatum BigInt _protocolFee = _Newtype <<< prop (Proxy :: Proxy "protocolFee") -_managerPkh :: Lens' PProtocolDatum PaymentPubKeyHash -_managerPkh = _Newtype <<< prop (Proxy :: Proxy "managerPkh") +_managerAddress :: Lens' PProtocolDatum Address +_managerAddress = _Newtype <<< prop (Proxy :: Proxy "managerAddress") _tokenOriginRef :: Lens' PProtocolDatum TransactionInput _tokenOriginRef = _Newtype <<< prop (Proxy :: Proxy "tokenOriginRef") @@ -65,8 +65,8 @@ instance := I BigInt :+ "protocolFee" := I BigInt - :+ "managerPkh" - := I PaymentPubKeyHash + :+ "managerAddress" + := I Address :+ "tokenOriginRef" := I TransactionInput :+ PNil diff --git a/src/Protocol/StartProtocol.purs b/src/Protocol/StartProtocol.purs index 7b597fe..bb0470f 100644 --- a/src/Protocol/StartProtocol.purs +++ b/src/Protocol/StartProtocol.purs @@ -82,7 +82,7 @@ startProtocol params@(ProtocolConfigParams { minAmountParam, maxAmountParam, min , minDuration: minDurationParam , maxDuration: maxDurationParam , protocolFee: protocolFeeParam - , managerPkh: ownPkh + , managerAddress: ownAddress , tokenOriginRef: oref } nftValue = Value.singleton cs tn one diff --git a/src/Protocol/UpdateProtocol.purs b/src/Protocol/UpdateProtocol.purs index 3a51b09..84170bc 100644 --- a/src/Protocol/UpdateProtocol.purs +++ b/src/Protocol/UpdateProtocol.purs @@ -18,13 +18,14 @@ import Data.Array (head) as Array import Data.Lens (view) import Effect.Aff (launchAff_) import Effect.Exception (throw) -import Protocol.Datum (PProtocolDatum(..), _managerPkh, _tokenOriginRef) +import Protocol.Datum (PProtocolDatum(..), _managerAddress, _tokenOriginRef) import Protocol.Models (PProtocolConfig(..)) import Protocol.ProtocolScriptInfo (ProtocolScriptInfo(..), getProtocolScriptInfo) import Protocol.Redeemer (PProtocolRedeemer(..)) import Protocol.UserData (ProtocolConfigParams, ProtocolData, dataToProtocol, getConfigFromProtocolDatum, mapToProtocolConfig) import Shared.Config (mapToProtocolConfigParams, readDonatPoolConfig) import Shared.KeyWalletConfig (testnetKeyWalletConfig) +import Shared.OwnCredentials (getPkhSkhFromAddress) import Shared.Utxo (getNonCollateralUtxo) runUpdateProtocol :: Effect Unit @@ -46,7 +47,7 @@ contract protocolData protocolConfigParams = do ownAddress <- liftedM "Failed to get own address" $ Array.head <$> getWalletAddresses walletUtxo <- utxosAt ownAddress >>= getNonCollateralUtxo - let manager = view _managerPkh protocolInfo.pDatum + manager /\ _ <- getPkhSkhFromAddress $ view _managerAddress protocolInfo.pDatum when (manager /= ownPkh) $ liftEffect $ throw "Current user doesn't have permissions to update protocol" let protocolConfig = mapToProtocolConfig protocolConfigParams @@ -96,6 +97,6 @@ makeDatum currentDatum (PProtocolConfig { minAmount, maxAmount, minDuration, max , minDuration: minDuration , maxDuration: maxDuration , protocolFee: protocolFee - , managerPkh: view _managerPkh currentDatum + , managerAddress: view _managerAddress currentDatum , tokenOriginRef: view _tokenOriginRef currentDatum } diff --git a/src/Shared/OwnCredentials.purs b/src/Shared/OwnCredentials.purs index c7d6541..0d796fa 100644 --- a/src/Shared/OwnCredentials.purs +++ b/src/Shared/OwnCredentials.purs @@ -2,13 +2,27 @@ module Shared.OwnCredentials where import Contract.Prelude -import Contract.Address (addressWithNetworkTagToBech32, AddressWithNetworkTag, PaymentPubKeyHash, StakePubKeyHash, getWalletAddressesWithNetworkTag, ownPaymentPubKeysHashes, ownStakePubKeysHashes) +import Contract.Address + ( Address + , AddressWithNetworkTag + , PaymentPubKeyHash(..) + , PubKeyHash + , StakePubKeyHash(..) + , addressWithNetworkTagToBech32 + , getWalletAddressesWithNetworkTag + , ownPaymentPubKeysHashes + , ownStakePubKeysHashes + , toPubKeyHash + , toStakingCredential + ) +import Contract.Credential (Credential(..), StakingCredential(..)) import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM, liftedM) import Contract.Transaction (TransactionInput, TransactionOutputWithRefScript) import Contract.Utxos (utxosAt) import Data.Array as Array import Data.Map as Map +import Effect.Exception (throw) import Info.UserData (UserInfo(..)) import Shared.Utxo (UtxoTuple, getNonCollateralUtxo) @@ -51,4 +65,18 @@ getOwnPkhAndAddress = do ownPkh <- liftContractM "Impossible to get own PaymentPubkeyHash" $ Array.head ownHashes logInfo' $ "Own Payment pkh is: " <> show ownPkh ownAddressWithNetworkTag <- liftedM "Failed to get own address" $ Array.head <$> getWalletAddressesWithNetworkTag - pure $ (ownPkh /\ ownAddressWithNetworkTag) \ No newline at end of file + pure $ (ownPkh /\ ownAddressWithNetworkTag) + +getPkhSkhFromAddress :: Address -> Contract (PaymentPubKeyHash /\ StakePubKeyHash) +getPkhSkhFromAddress address = do + pkh <- liftContractM "Impossible to extract payment pkh from script address" $ toPubKeyHash address + stakingCreds <- liftContractM "Staking creds missed from provided address" $ toStakingCredential address + skh <- case stakingCreds of + StakingHash creds -> liftContractM "Impossible to extract staking pkh" $ pkhFromCreds creds + _ -> liftEffect $ throw "Unexpected staking credentials" + pure (PaymentPubKeyHash pkh /\ StakePubKeyHash skh) + where + pkhFromCreds :: Credential -> Maybe PubKeyHash + pkhFromCreds creds = case creds of + PubKeyCredential pkh -> Just pkh + _ -> Nothing