diff --git a/star_lock/assets/s10-g711.bin b/star_lock/assets/s10-g711.bin new file mode 100644 index 00000000..9f5085b2 --- /dev/null +++ b/star_lock/assets/s10-g711.bin @@ -0,0 +1 @@ +}~y~zu||}~zruxxvyy|}|zuu}|{}|zztvxyvyyuztpptvyxwsxvvqsqxssssxxvsoouuwsrmoqmjjmnoljjkjjhijllmmljhgecadfegedfifccdfffgfehfcbacddcedacb``cbcbbcccda_^`____^a_^_]]^]]^]^__^^^^____^__]]^]\]]^]]]]][[[[`\\\\[[Z[\\[[[\\\\\\[[\[\]]]]]\[[[[[[[]\\[[\ZZ[[[[[[[[[Z[[[\\]][[\[[[[\]]\\[[[ZZ[[[\\\\ZZZYY[[[[[[[ZYXXXXZ[\]][\ZYYYZZYZZ[[[ZXXXYZYYZYYXWXXZZYXXYXXYXXYYYZZXZYYXXXXWWWWWXXXXWVWXXYVVWTTURTUUTTTUWWVUUUVVVVVVUVVVWWWWVVWWWVUUUWVVVVUTTTUTTTTSTSSSRQRRSSSSSRQRQRSTTTTSUTSTSSTTUUUUTSSSRSSSSSRRRQQQPRRQRQQQQRSRQRPPPOOQPQPPRQQQPPPOOPOPQPPPOOONNOOOOOONOOOOOPPOOOOONNNMNNMMMMMMMMNNNNONNNNNNNNNONNNNNONNNNNNMMNMNNNNMMONMNNOONNNNONMNNOOONNNNMMMMMMNNNNOOPPPRRPONNNNMMNONOOOONOOOOOONNMMMMMNNOOOPOOONMNMMMMNNNNNNOOONNNNMMNNONNMMNMMMMMNNNNNNOOONNNNPNNNNONOONMNNNNNONNOOOONMNMMMMNMMMMMNNNNNMMNNMNNNNNNNMNNMLLLLMLLLLLMLKKKKLKKLLLLKKKKKJIIIIJJJJKKLLKLLLLKJJJJIJJIJJJJJIKJKKJKKKKKKLLLLKKKJJIIJJJKJJKJKKKKLKKKJJJJJJJKKJJJJJLKLLLLLKIJKKKKKKKLLKKKJJJIIIIJJJKKKKKKKJKJJJIJIIIJKKKKKLLLKJJJKKKJJKKJKKJKKIJIHIHHHHIKKKKLLMLKKJJIHIIIJJIJJJKJJIHIHHIIIJJKJJJJIIHHIIJJIIIHIIHJJKLKKKIHIHHIIJJJKJIIIIIIIIIIIHIIJJKKKJJIHHGFHHHJIIJIIIIIJIIIHIIHHIHIIJKKKKJIIHIIIIIIJIIJJIIIIIHIIIIIHJKKLKKKKKJJJJJKKKJIHHGHIIJJJJIJJJJIHHHHIJJJIIHHGHFFFFHHHIHIJIJKJJJHHHGIIHJIIKJIJIIJJJLKJKIHHHIIIJJJJJIIIHHHGGHGGHHHJLIIHIIHIIHHHHIIHIJIIIHHHHHHHIHHIHGHIIJIIJHGGFGGFHIIJKJJJIIIIIIHHHHHHHGHIHHHGGFFGGHHHJIHIIIIIHIIIIIIIHHHGHHHIHHHHHHHGHGHIIJIHHIHGGGGFFFHIIIHHHIIIHHGGGFFFGGHHGHIHHGGGGGIHGIHHIHHIIIHIIHHGFFFFGIHIIIIHHHHGGGFGGGGGFGFGHGHHGGGFGGGGGGIIHHGFFEFFGGGFFFFGGHHHIHHHGGGFFFFGGGHGGGGHHHGGGGGGGGHHHHIHHHGFFGGGGFFFGHIIJJJJIIIGGFGGGGHGGHGGHGHHGGGGHHHHIIHHHGGGGGGHHHHHGGGGHHHHHHHHHGGHHHIHHHGGGGHGGHHGHHHGFGFFFFFGGGFEEEEFFFGGGHHHHGGGGGGFFFFFGGFFGFGGFGIHIIGHIHIHFHHGIHHHHGGGGHGGGFHHHIGGGGFGFFGFGHGHIHHHHHHHHHGGFGGGHIHIIHHHGGFFGHIHHHGHIHHHGHGFFEFFEFFFHJHHGGGGGFFFFFFGGGGGHHGHGFFEFFFFFFFGGHHHGGFFFFFFFFFGGGHHGGGFFEEEEEFFGHHIHHHIHHHGGGFGGGGGGHHHIHGGFFFFFGGGHHHIHHHHHHHHGGGGGGGGGGGGGHHHGGGFFFFGGGGGGGGGFFFFFGGFFFFGGGGGGHGHHGGGGGGGGHHFGFFGFFFFFFFGGGGGHGGGGFFFFGFFFFFGGGHGGHGGHGGHGHHGGGGHHHHGGGGGGGGGHHHHHGHGGGGFGFGGGHHHHHHHHHHHGHHGHIIIHHIIJJJJIIIHHHHHHIIIHHHGHHIHGHGFHHGIHHIGGGGGHGHGGGGGGGFFFEEEEEEEEFFFGGGHHHHHGHGGGGGGGGGGGGHGGGFFGGGHGGGFFFGGHHHHGGGFGGFGGGIIHHHHHHGHHGHHGHHGGFGGHHHHGFFFGHHGHGHHHGGGGGGGGGGFEEEFGGGGHGGGGGGGFGGFGFEFEEFFFFEEFFFFFFFEFFFFFFEEEEEEFFFFFEEFEFFEFFEFEEEEEFFFFGIFFFFEEEFGGGGHGGGGGGGFFFEFFFGGGHHHIHIIHHGGGHHHHHIIIIIIHIHHIHHIGHHHIIIIIIIIIHHHHHIIIJIIHHHGGGGGGGHHHHIIJIIIHHHGHHHIIIIHHIHIHHIIIIHHGGFFGGGHGHGHHGGGGHHHHHHHGGGGGHHGGGGHGGGGGGGGGHGHGHHGGGFGFGFGGGGGHHHHHGGHHHGGHHHHHHGGGGHHHHHHHHIIIHHHIIJJJJIIIIHIIHHHHHIIIIIIHHIHHIHIIHHIHHIHHHGGGGHGGGGGGGFGGGFGGGHHHIHHHGGGGGGFFFFGGGHGGHGHHHHGGGGGHHHHHHHHHHGGGFFGFGGFGGGHHHHHHHHHHHHIIIIIHGGGFHGGHGGHHHHHHHHHGHHHHHHHHHHHHHHHIHHHHHHGGGGGHIIIIIHHHHHHHHHHHIIJJJIIHHHHHGHHHHIIIIIIHHIHHHGGGGGGGHHHHGFFFFFGGGHGHHGGGGGHGGGGGGGHHHHHIIIHHHGFGFGGGGGFFGGHHGGGHGIJIIIIIIIJIIIHHIIJJJJJJJJJJKKKJJJJJJJJIIJIJJJKJIIIIIJJJJJJJJJJJJJJJIJJIJIIIHHHIIIIIIIJJIJJJJJIIHIIIIJJJIIIIIIIIHHHHHIIIIHHHIIJIIIIHHIIJIIIHHHHHHHHHIHHHIIIIIIIHIIIIHHIIIIIIIIHHHHIIHIIIIIIJJJIJIIIIIIIIIIIIHIIIJIHHHHHIHHHHHHHHHHHHHHHIIIIIIIIJJIIHGGGGHGGGGHHHHHGGGGGFGGHHGGGGGHHHGFFGGGGGHHHHHGGGGHHGHHHHHHHHHIIJIIIHIIIIIHIIIIIIIIIIIHHHHIIJJJJJJJJJJJJJJJJJJJJJKKKJJJIJJJKJJJJJKJKKJJJJJJIIIHHHHIJJJIIIJJIIHHHIIIHHHHGHHHHHHHHIIIHHIIIIJJJIIIJJJJIIIJJKKJIIJIJJIIIIIIIIIIJKKKJIIIIJJIJJJJJIJJJKKKKKKKKKKKKLLLKKJKKLLLKKKLLLKKJKLLLKKJJJKJKKKJLLJKKKKKKKKLLLLLKKKKLLLLLKKKKJJKKKKLLKKJJJJJJJJIIIIIIIJJIIIIIIIIJJJIIHIIJJJJIIIIIJIJJKKJIIIIJJJJJJIJJJJJJJJIIIJJJKKKJJKKKLKKJJJJKJKKKKKKKKKKKKLLMMMMLKKKKLLLKKLKKJJJKKLKKKKKKKLLLLLKKKKKJJJJJJKKKKKKKLKLKKKKJIIIIIJKKKKJIJJJJJJJJJJKKKKKJJJJJJJIIIJJKKJJIIJJJJIIIIIJJJJJIIIIJJJIIHHHHHHHHHIIIIIHHHIIIIIIIIJJJJJKKKJJJJJJKKKJJJJJJIIIIIIIHHHIIJIIIIIIJJJJIIIIHHHIJIIHHHIHIIIJJJJKKKKKKKKJJJJJJJJJJJJJJJJKKKKJJJKKKKKJJJKKKKJJKKKKKKKKLLLLLLLLMMMLMMMMLMMMMMMMMMNMMMNNNMNMMLMMNNNMMMMMMMNOOONNNNNNNNNNNNNNNOONNNMMMNOPPOOONNNNNNNNNNNNMNMMNNNMLLLMLNOMMMMLLLLMMLLLLLKLLLMLLKKKLLLLKKJJKKKKKKKKJJJJKKKKJJJJJJJJJJJKKJJIJJJKJIJJKKKKKKKKKKKKKKLKKKJJKKKKKKKKKJJJKKKKJJJKKKKKKKKJJJJKKKKJJJJJJJKKKKJJJKKKKKJJJJKKKKKKKKKKKKKKKKKKLLLKLLLKKKKJKJKKKJJJJJKJKKJKJKJKKKLLLLLLKLLLLLLLMLMLMMNMMMMMNNNNNMMNNNNNNNNNNNNMMMMNNNNNMMLLMMNNNNNMMMNMMMNNNNNNNOONMMMNOOOONNNNNMMMMMNNNMMMMMMMMMMNMMMMMMNMMMMMLLLLKLLMNNMLLMMNMMMLMLMLMLMLLLLLMMMMMNLMLMMMLLKLLLKKKKLLLLLLLLLLLLLLKKKLLLLLLLKLLLLLLLLLLLLLLLLLLKKLKKKKKKJKJKKKKKJIIIJJJKJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKLLKLKKLLLKKKLMMLLKKLLLLLKKKLLLLLKLMMMMMMNNNMMMONNNNNNNNNNNNNOOONNNNOOOONNNNMNNNONNMMMNNNOOPOOOOOOOOONNOOOOOOOOONNNNONOPOPOONOOOOOOPOOOOOOOOOOOOOOQQPPPOOOONNOOOOOOOOOOOOPPOOOOOPQPPOONNNNNNNNOONNNNNNNNNNNMMMMMNNNNNMMMMMMNNNNNNNMNMNNNMMMMMMMMMMMNMMLMMMMMMLLLMMMMMMMMMMMMMMMMMMMMMMNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMNNNNNNNNNNMMMMMMMMNNMMMMMMMMMMMLMMMMMMMMMMMMMMNNNNNNNNNOONNNNNNNNNNNNNOOOOONOOOOOOOOOONNNOOOOOOOOOOOOOOOPPPPPPPPOOOOOOONNNNNNOOONNNNNMMMNNNNNNNNNNNNNNNNNOONNNMNMMMNNNNMMMMMMMMMMMMMMMMMNNNNNNNNNOOONOOONNNNONNNNNNNOOOOONNNNNOOOOOOONOOOOOOOOOOOOOPPOPOONNNOOOOOOOONRPOOOOOOOONONNOOONNNOOPOOONNNOOOONNNNNNNNNNNNNMMNNOOOOOOOOOOOOONNNMNNNNNNNNONNNNOOONNNOONOOOOOOOOOOPOOOOOPQQQQQRRSRQQQQRRRRRRRRQQQQRRQQSTTSRQQQRRSSRSSTTTTSRSSUTUSSSSUUUTTTUUUUUTUTSTQRRRRSRSSSRQQQQQRSRQQQQRRRQQPPOOONOOOOOOOOOOOOOOOOOOPOOOOONNNNNNONNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNMMMNNNNNNNNNMMMMNMNMMMNNMMMMMMMMMMLLMMMLLLMMMMMMMMMNNNNNNNNNNNOOOPOOOOOOOOOOOOPOOONOOOOOOOOOOOOOOPOOOOOOOPOOPPPQQRQQQQQQQQQRRRRRRRRRPPPPPPPPPPPPPPPQQQQQRQRRRRSSSSTUUTTUTTSRRRRSSSRQQQQQRQQQRRQQQRSSUTSTTTTSSRRRQRQQPOOOQQQPPOOOPPPPPQQQQQRRRRRQQPPPOOPOPOSQPPPQPPPPQQQQQQQQQQQQQRRQRRRRQQRSSRRRRRSSSSSSTSRRSSTTTTTUUTTTTTUVUVVUVVWWWVWVVWVWVWXXXWWWVVUUVVWVVUUTUTTTTTSTRSSSSSSSSSRSSSRSRRRRRRSRRRRRQQQQQPPOOOPQQQPOPPPQPPPQQQPOOOPPPOPOOOOPOOPOOONOOOOOOOOOOOOOOOOONNNOOOOOOOOOOOOOOOOPOOOOOOOOOOOOOOOOPPPPPPPPQQQQQRRRQQRQQQRSSSSSRRRRRQRQRQQPPPPQQQQQRSSSSRRSSSSRRSSSSSSSRRQQPPOOPPQRRRQQRRRRRRRRRSSRRRRRRRRQQQQQQQQQQQQPPQRRROOOOPQRPOPQSSRSRSSSSRRSSTUTSTTTTSSRSSTTTTSUTTTTSSTTUTTTTSSTTUUVVVUUUUTTTUTSTRRRQQQQQRRRSSSSSTTTSSTTTUUWVVVUUUTTTTUUTTTTTUTUUTTTTTTUUVVWWWWWXXXXXYXXXWWWWWVVVWWXWXWWWXWVUVUZYWXWWWWWWXXXXXWWWXXYYYYXXXXYXWVVWWWVWWWWWVWVVWWWXXXXWWWVVWWWWWWWWWWWWVUUUTTTTUVVUUUUUUUUTTTUTTSTTTTTTSSSSSSTTTTTTSRRQQQRQPPOOPOOOPPPQQQQRQRQQPPPPQQQQQQQRQQQRRRQQPPPOOOOOOOPPPQQRPOQPQQOOPPRQQRRRRRRRSSTTTTTTUUUUVVVUVVVUUUVVVVUVWWWVVUUUTUUUUUVVVVVVWWWWVVVVUUUTTUUUTUUVVVWUVWXWWUVVVVWVVUUTVVUTSQSSSSTTSTSTTSSSSTTTTSSSSSTTTTUUVUUVWVVUUVVUTTTUVUUUUTTUVWVVWWWWVVVVUUUUVUUUVVWWWWVVUUVVWVWVVVUUUUUUUUTTTTVUUVVVVTTUVVVUUUUTUUUTTTTTTTSTTUTUUUUUUUUVUUTTTSTTTSSSSTTTTUUUUUUUTUUUUTUUUUTTTTSSTTUUUVVVWWVWVVVVVWWWWWWWWWXXXXXYXYYXYZZZZZYYXYZ[[[Z`]]]]]]]]\]]]\\]^^]]\[ZZZZZZZZYZYZ[[[ZZYYYYXXXXXXWWWWWXXXYXXXYXXXXYXXXWXVVUVVVVWWWVVUVVWWWWWVUUUUVUTTUVUUTUVVVUUUUUUUTVUUUUUTTTTUUUUUUUUUVVVVVUTTTTUTUUUVUVVWWWWXWWWWWWVWWXXXXWWUVSSUTUUSSSSSSTTTTTTTTTTUUVVVWWWUVVVVVVVVVVVWUTSTVVVUVWWWVVVWWWVVVUVVWWWWWWWVVVVVWXWXWWWWWWWXYYXXXYYYXWXWXYZ[ZZZ[\\\\\\[[Z[\[[[[\\\[[YYXXYYYXYYYZZ[\[\[[\[[[[[[ZYYXXWWWXYXYYYZZZZZYYYYYYYXXXXYYYXWWVXXXXWWXXWWVVVVVVXXXXXXXXYZYYVUUVVWVVWVWWXWVVUVUVWXXWWVVVVVWWWWVVVUUUTTUUVVWWXXWWWWXYYXXXXYXWWWWWVTTUVUTTUVWXXYYYXWXYZYWWWWVUUUUUUVVVVTTUVVVXYZYXWVVVUVVWVUVWW\YZ[[[[[[YYZ[ZYYXXWXXXXYZ[[\[ZYXWWWWWXXXXXXYYYYZZYYZZ[[ZZ[\\[[[ZYZZYYXXYZYYYZZZYYZ[[\\]]\]\\\[YXXYZ[[ZZZYZZZZZZYZ[[\\\\[\\]^\[[\]\[Z[ZZZZ[\\[ZYYYYZYYYZZ[]]]]]\[ZYXWVVVVWYZZYZYYYYWYZXXXWXXWWYZ[ZYZ[\\[ZZZZ[\]^^]\\]]\ZYYYXXXY[\[ZYZ[ZYYYYZYYZ[\]\\[[[\[ZZZZYYYZZZZYYZ[ZYYYZZYYZZZYXXXYYYYZ[[ZYXXYZZYYYYZZYYZZZXXYZ[[[[ZZZYZ[[\[\[Z[ZYYXZ[[[[ZZZYYYYZ[[ZYYYYXWVWWXXXWXXXXXYZZYXXWYYYXYYYYWWWXWWWWXXWWXXXXXXYYYXYYZYWVWXYYYZ[[ZZ[]]][ZZ[\\[Z[ZZ[\\\[[[[ZZZ[\\[[Z[[\\]][ZYZZZZYYXXXXXWVUUUUWWYZ[[ZZYXXYZZXWVUVVVWXXXYXZZYXYZYYXXXXXWWXYZZZZZYYXWXYX]ZZYYYYZZ[[[[ZZZYZZZZZ[[\\\\[\]]]]]]\\]^^]]\]]\[[\]^`aaa`^^^___^_^^__`_^]]^^^]]^^]]]\\\\]]]]]]]\\\\\[\\]^^^_`__^^_^^^]]]\\[[[\]^^^^^]][[[[[[\]]\[[[\\\\]^^^^^^_^^^]\[[[[[ZYXYZ\]]]Z[][\\\]^^^\\\\[[[[[ZYZ\]^^^^__^]\\]]][[\]\\\]]____^]\[Z[\\\]]\\\[ZYXXWXYXWWWXZ\^^__`^^\\[ZYXWWXYYZZYYYYYYYYYZYYYZZZYYZZXWVVVWXYZZYYYZ[[YXXYXXXYYXXWWXYXWXYYZYYZZ\[[Z[[[[[[[ZYWVUVXZ[[ZZZ[\\\\\\\]]\\[ZZYYZ[\\]\[Z[[[[[[\\\[[\\\[[[[[YYZ[\[[Z[[[[[Z[[ZYXYZZZZZZ[[[\]]\\\\\]]\\[[\\\\]]^][[[[[[\]]^\\]]_`_]\\\[Z[\\[[[Z[[[[[ZZYYZZ[\[[[\\\]]]]\\\]^^^]]\[[[\\[[Z`\\\]__^\[[\\]]^^__^^___^__`_^]]\\\\[[\\\\^]^_acbb`_^]]]^__^]]]\\ZXY[]]^^____^^]]\\[[[\]]_aacbaaba_]]]^___`a`^^^_```adeffggjighjigedfgfcabbba__`aa__`cedcbbaabb`_^^__ababbbbbccdcc^_a___]^^^__^__^^]]]]]]]^^^^^^]]\\\]]^^_____```_`__^]]^]\ZYZ[[ZYZ\]]]^^]]\]]]\\\]]^^^]]]]]\[ZZZZZ[[[[[\[[[[\\\\]]]\\[[[[[[[\]]^]]]^^^^^]]]]]]\\]]\\]]]]\\\\]]^]]]]\\[\[\\\[[[\]^^__^_^^^^^\\[ZZZ[\]^^^^]]]]]]]]^^^____^^^]\\\[ZYYYZZ[[]]]]]^__^]\[[[YYZ[\\\]^^]]\\]]]]\[ZZZ[ZYYYZZ[ZZ[[[[\\]]]\[[[]^_^__aaa`_^]]\]\]^__^^^_^^^^^^_^^]]]]^^^^^^]]]]]]]^^^^]\\\[Z_\^^^]]]]]^_`_^^^_^^^]]]]]\\[[\]^_abaabb``_`bca`^^_``adeeda_^^__^]]_abdefgghhecaabbbbbdeffgjkiebbb`___`abcdeghiiigfecbcdeghgffedb_^^___`ceefdefgijkihfeeecaabcddca`_^]]\\]]^^^^_`b^`a^^^]^]]^]^^]]]]]\\\\]]\\]]]]]\\\[\\^^_`abcba__^][[[\]]]^__ab`^]^]]\\]^^^^^_aa`_^^^]]]]_^^^^^^^^]^]]\]^__^]]]^___]\\[\]]]]]^___^^^^^]^^_____`bdeffedb`__^^^^^]^_`accb________a``abbbccccddddffgecba_``aba`_``aabcddeefffeccdeeeffgfghiigfffdb`^]]^____`adedccddcccdefggcb`____`__^]]]]^]]]^___^^^]]]]][[ZXXXXYYZ[\\Z[\[[\\\[[\]]]\\\]]]^^^^]\\\\[[[Z[[[[\]__`h_```_^^^____abcddedc`_____^^^__`bdddbbabbaabcdacdfggdaaaba```aa`aacdfgfeffffffggihgedffdcdeeddfhiiigeb`_^_`bbcccdeeda______`aabcbbcb`_^^^]]]]]]^^^^^__aa`ccdccbbbbccdefeedddbaaab^`_^_^]^_acdcbbaaabceffggfghhggggfghhjjjgffffffeecbbcfijjjjkkmmnoonkjkhgfddddeedddddcbbbabbbcabbbcceeffecbbcca__``ba__^^^]\\]____ab`______^^]^^________`^^^]\\]^^]\]]]^^^`aaa``__^^___^^^^^^__^_`aa``_^^]^__acdeeeeedeeecb`__```__aa___``a`acb`______^_`adghgfeeecb`_____`aba```a__`bccdcabaaa__```bb``____^_____`abbbba``___^^_```__^^^^^_____adedbcddb`_____ahaeeedffgggghjklkiffggffddeghhhhgghgghjkjiijjjkkjijjkkjhgeeecccccbbabceeedcbcdefggeefgihjiggffefeeedeeefdddeedcca``abaa`__^^_aaabbbba`_________^^]]^______^^]]^___`````__`aaa``aceadfdeb__]]]]]]^_````_``__a`_^]]^^^^`aa`bcdffeddcbba_^]^__a`__^^^^^^___`abbbbbccdeddccbaa`aabbbbcba``bcccccdcdeffeeeefhkllkklmlkkklklmlkllkkklmnooonnoomkkjlmlllkigggijjkmmmlkkkjijiggefgikkkihgggfgghgffggfdb`__^^^^^]\]]^^]]^^^__`ababcbaabbbb`bccbbabbba`_`___`bbccddeghijjjkklkkkkklkjjjihiiiihhggfddcdcccceeeefeffgijjjjjiiijkljihgggggedcbb``abaa```abbcafmdhfhghhhijjjigghghhhijklkkjihfffefdcbcabcceeecefgiiihghjiijihhfghhfedcbbccddeeceffhhihhhgghgffffffghkkkklmnmlkjiigfggffgffdccdefgigfgghffgfgfhhiiikigfhiigggefdccefda_]]]]]]]^^^^]acbdc_`_`__^^^^]]]]]^___^_^]^^^^_bccbaba```aabb`____`aacbbdbddcca`___adeggfeddbcdefddcbcccbccbcaacffhijjigegfeeffghgfhhijllmllkkjllmnmmllmnmnnmkjjiiijjjjihghhhhhgggffedccfhhhjkkjkjiifdddeedeffhijjljhgfedddddccaaabcbbdeddccdfffggghggfgfeedbabbbcdfhjjlnmllkkjkjihghgghiihfeccbcbcbbbabaceeeeedeeeedffhhggijjkigfeeddbdffc``__`a`bbccbdfffgdecbccbbbeefccafkcfdhgiggdddccccccccccdcbb`abcdeddceghiiiiiijhhgihiijkkkmmmklkkjjjjlmlklklllloqsrpoorpnoonnmmmlmllihhiihiiihijjklmllljjjiihhhghfddcddefeeedeefeeddccdefeddedfeedccdddffhjmllnossspknliifefcbaba`a`___^^^^_`bddbcdefgghiijjklllmlmoosstuttqpqrrsutqrqqrutsqssvwvpnnlkkklllllkkkkjiigfegggffffddfffhhhijkkkiijjjjijkjjjjjiiiihhhggfgeddcddcccccbccbbbddcfghjhgggfgggggeddedeefgghfghgfeeefeeedffedeedca`abbbcddeefeeffffghijhihhhhiiihgfefefhggijihhgfeeefhiiigghhgffffgfeedddefeghhihiiiiiiiihgeeddddeeeedccedddeeffghghhggfdedcdcbceefededeeggihovkonopssuuz}}~zxvvtqnnnnlkjllnorrrqpqprsux{{{|~~|yxwwwwvvwywwvturooonmmlmlnnnnoqrrqonnoppoptututrrpoqonmmmmnonnnmnnnmllklmmmmmmlkjihghihghfgfffeeefgehhfffhffdddfgegghgffeecba`___^```a`_a_`_````__a```_abccefdddcaaabbcdcdecbabbbba`aaa`_``adefgjjiihhhhikkjjiiiiggedeffhihhhiklkjilkijijkkmllkkkllllmkklllklkjjjkjiihhgefgfffffeefegillllkkijklmlmnmnnnmnmlllmlmlkkllmoomnnopposppppopuuwyxxxwvuonnoopoooorrrqoonnnmmlmllljjjjikllnnnmlllkklkjjjkkkjjhgfddcccccdfffgddeccbbbdeefggfffdba_`abccedfeeggggfdefefgijjiijkljjkkkkjkllmmjijhigfegeiekngihjknlmnnopnnmmmlmkkjjkkijjkmllmmmmlmmmnnoqssqonmllklkkjkkkmnnooqoooooppqpprqqpnllmmmjijjklllnnnlnnptuvvvspoponpqqspronpoortwwutsqqwwxyy|{~~}{|}~~|}|{vvtponmkmljjijlllkijjdeaaedbfegggfffffeefffeddb`___````____`b`adbcdbabccbccccffgeffghghhhihfhgefegghggggjlllkjigikklllonnopnmomnklnooprrortqqrqrqproqrpqqopopqonopomljkkkklmllkggihiigegehgghgfeddccefgfghhedeeffeeehijkhikhfeeghefiiikhiiffilkkkhghijlmnnnonkljlllnpoookmnnousrtssrtv{{xxtortsxsttrtrpssrwuorsnoomonnnomqppopqmkkjiijlnomnnnnonnkklikkjjijjjkkihkmonknuqrttvxrtssoz{qwrrqvuspqooqoppnnmlmmmmmlmmonnooonnmonmmmnnmmlkkmoqsqnmkihihgjjmnnmjiikmijkikmmnnlljihgggfgfgifhfgfggffgfhifigegffgiffhhjgfhfefgkieggeihikkkklkjklonorqqlmpmmppooororuwvrquruqtmlrmmomlpnnnomnmnquswx{}xxvqqqpponorrtvvuvuy}{{y~|{}|~~zy{z{|{{wswtu{zz|yxy~{yyvtrutwxzwxxvuwwvvsuuvstrtrptqoropnkknmmmmkkjhjjjjjhikkkigggefedbab_`b_`adcececbdbdefcfdcbbbbccdaaa_```abaaaba________`__bbccb`ddfgfeddddcdbccbdbcddeeeffffhjmmmmjijjikmlmmmllklnmlllnqoqotrpuwtyvuxxxx}xz}|}y|~~{}||z|{{}}{}}}}|}|{yzvuvrorpoqpsyvzxvurosutsvwxrsqtnuwsssvxzxxx}xx|}|ywwvuuwvvvooqrqturtwtoqrpstsurpopmmonmpnmnllkkljijihikiijgfdeefeefgedeggdeefjkmnkjkhiijknlkmihhefhgghdeecdefgfdfcehggiggggikjkkjjjijkllkjjijkklllnllliiiljjklkmihmifihhiikhihklllonomnmkljlllmlnnlnnpmopqsyxvtqmlklmmmlnnmmmllkllmmjkkjkkkmmllmkkkjgijiknomnqonprrsupsoooppoqqsooqpqqpsqpsrrrppsrooopuwtuwztuoqwyuyuvwuvuprrorvsssundwhqommqnnmolmmlklopoosq|lzhunolnlkjnnmmonnoolpnnmlmnmoommpqropqqomllolporoomoqosooookmnntsvsrnoknnnnnmmsjpnmmlmnoonssrrqppntwprrotormvnuonpvrvuxvwwuwz{{vuprnrowt|ry~ytvyopkpjlinnpkwzotnoylptpvzxz{qtrproost{ypolmvruouotpoqqtrtsropqrwv|{}twppvuyrxsvqoopoorsvpspqppyuxoqnlkmkjimjklklommklihjuinifgedebf`eed`edhhejkijgkkkjnimkkhkintlqookmmnlnknnomqytswr|{}nqlxieliiqjjmmkjkmkjililljmiknnrplppouvvionmiejnnjkm{mpmnnjhjkkiijkgkgmojiljljikljjekmjfhhljiknrmnmnykvlmommokpnpmjipjlhmjpeniqgxhomomlimlnollqmporx}pt|twu}xswv|rvuuuyvxrwusnwqvwo~zuu|oqwkzzmyykrkxmujvuptlzvroz{{vy{tvyw{sv}uxytuwovprprott{uwwywnqlsvqmnlllgkklllnsronnqomlnlnjkoomklkpknmxnsimnoltr}tspwmtmwmuirkonnrqrquktlomkjjmglgljkhilmmjqntmkjmwvmxtvv{wx{vuslpomnlsromqrtlmkjnjiglkolkljmmkillwpqlstxsoqnnkkgqonlmsqqltmyqnmromhgjhgab`jfdblllhflnomnozxlldbcc```_babfgggddjlsokeb]ZYXUUSUSSSVX[[msg`YOMKIGFEIJNZj_cj|aTLGB?>>>AFKRiug[SOPkgNFB??=<>DKRXle]XUOORh~gSFDACCABIO[jg]WWUUXetj[MEDBFDEGOVdvk_[VVTY^ujbXMFECFFFFMO]cwhj[]Y^^`_VLHFFHGFIMPZdulc_]bhyeaVNIHFHHGHJMR[jtic_lkomfZRLKJKIHHJLOU_f}hc]^`gn^TMJIIGFDGILM\ck\YTY[hhYMJFGDDCEHJMVf|oaZWW\_zm[PLIGGGGHILNQYgxlcZXZ\d}m_VOKHGHHIIIKMOX_lsf^\\_f}ueZTNLIIIKJKKLOS[gszgb^_^fsoe[VQOONNOOPNOPZ`im|lgceeeyneYTRPOPOPRPOOQ[afm{michjtld[WTTTSPPQQQOOVagoqqovz~shZUSUUSQTY]\]Zb__\igydji|yr}jd_^^]^aglklunmrfe^][XURSY[a_mzz{|y}|rxoohead_b]_^d_hi||~q{lwiljpmxtw~yrwjoeqeshjjqu~{}wq|kl`g]jZj[o\_dlnq~nokjjnnpktozn{m~n~mli~htiolnnmnnooiwg|dydtescuj}m|sy}vvxqlqjoitlxpzu{xsvsqogiejhedhfjglnqrumrkpl~s{jomtknmvuyv{rws}ltjndifjcjeijmnv|upolrr|oxo}}|wnoniigjhojspwxxunoomlknlmijotx}zzyyvrry}}n}nvkmdlfkeccgjotn|w}}r~ojjvfi]h_c__^a_cani|isv|{|yqpr|{kmbd`_^^_a_a_heujymrotzwywtu|hjef`c^f_c^bdmmqnz|}st|~znpkiiad_a\`]h`ykmvzpj~k~jnuwhudmdfadeiiqo|}{uqi~n~vt}vy}mtjnhmhpdnnz|wwpztzomwlwnxp|qpjjinhkglfnkrwx}uoxvo~mxsx{zuuktktkulnijfghhiiigfhilur~xrzy~rtommoqsvpllmlllmnmlknltoyoxmwn{{torv{yznylsmqhpgsfre}d{dvfu_sgpklnoys|x{yz{tomwilhmllokyjimjn{nvqwuwrqrvs~}t{pvovnqrturyswpy{zvtxuspzp|y{~zwwz}}trnxnxtxtyy{|z{xxvyrsnnoy{~tznsjkgmhfdai_l^j\l^k_ffhjimnvw|~yullfa_^\_W_V^T[VYWY\^bfjoy{|}}umiba^e[Z[WYSWP\Y``gmyxupzx~{stjc^]ZWUSSRRQWVa_xr}mg`ZZVUPPNOOXXadnxyw{hi^\VUSTRQQQ[\hg|}uwhc[\VWQROROQWZhh|umofo~ic`ZXROMNKMLMRTY]e}{xlohdcip|{jbaZWTQONLLLLSX[aiuwogfllwgd]WTOMNLLMMX\gjynlmzype^VUQOOMMNS]bn|{nihjuvnaaUXPQNMLNO\^hn|noko|umb^VUOONLKLMVY_l{syfecgmoosuhb^]VRVOOMLMOS\Zmwj}ou{|upkg\]XVONMNMSZ[koyuuxzznf^[VPOONOWW^ltssrwy}fd]WOONMMSTW_dvhjgccnuwj^[UQNMKLMQNV[cw{jfg_a`hnwze_ZTNMKKIJNMNZXlohn\^^]bcnuli[WPOLLJJJMLNVTccnma_^Ygfif`YUPNLLKKNKTR\dpkt_nklqf]UUNMLJKNLOXRla|okxhu~me[WTOMLKKMNMVO_]mnzdsnu}vif\YVQPNMLNNLVM^Xjm{ikmhxnswlh_\WUSOOPSOZPc]runtvo{yj`]USONMNNMWNaXnvldnkjws|yjd]XVRPNOPNXP`^piqcgeilo|wwhaZVQONNOPNYRd`}saj]bbgovpd^XSOMLLONNXRh_gm]gYj^mnuc^XTNNKLKNMOTRd]}zogbf^gatm~{c_VSONLKLOLVP[_ojl\aZ^^ehuj_ZROMKKKNLNVSheif][][_droi_XROMLMMQN]Wntof`Z^_^jx|c^TSMNKMNSN\Zmvwiccqi|j_UTMNLMLRNX\hn]^\_`ftoaZROLLJLJQOU^cxia\[\_`jwwe^XUOMLKLJMMOUYes|nc_[ZY]_fmwune`\YXXVVUTXWZ]chm~orilfjgmkomptzzx{nnfd`a[][Z[\^_ejjlzw~~xnokjmffhehjjsssz~~}vzuryovrronmijjigiiljkknmoux}z}zxtqponolmmllnknlmnmmlsqwwy~z}~{|~vyxropnmknlkiknlnopuuoqsrqnvxqouutqrsv{}wvnpnjifefddgehjlontnqrsvqvnmjkjmjmnlny|zoljhicddfgjns}{uonpswz~zxnmmmmosz~}qpnonww}|spnpoorsz~xjtxujtzswxt|w{pnqrssjpuz~ysw~{zv|v|zokmotqklhdabbgjn{{vzr~mvoloqvu}zrrhgcegcdefjnot}~womlgc__][\Z[YZ[^djw{{uu}z~{phghd][Z[YY[\\^_edlnnxzxuuy{~ojcadbcda`^\YY\^cjv|w|urrtrpmjhg`]\\]_ehnyu~vonpofb]]\ZVTWX[gpz~||he`ZURPPSV`nzwqv}}j_[ZXXWY]`d|uoyw{|x{}mkb`_]XXVXZZ\myxzs{y|vnzoec\^\\Y[\]eqmy~xrumc][X\\\]p{}{{wysne^XWXXY]iowt{|uu}{yw{ykkgc\YTQQQS\kvuyxmnp~x}xwomjle]YZWTTUV[jowzzqoxqnilgrvroji]VTYYXXinwqopkkekzynsx{xu{so{~zyule]XUUUUYgjolns~nim}vvqll}~{z}wxssli_[XXWWT]kklguyoahn{vovw|tqfab_\\ZYXYkfhdmqoeit|qoyzymjc_[XUTRW\]ehq~xpkhia^ZWVTS]_entynrx|ngf_[XZY\Y^^\`_pwq{}~yxrllih`]XWVURV][`cknjj|{~|toj`^YVSPRRWYZ]`cfhop~}{urkc`\WUQPORUU[]_bcmu|}|~~{le^[XWTTRTXV[Z\cfnzwput~|~~ynqid_[VTPNMMONSW[deowtzmec][VTTSWVY_\abj|vh^\XUSOQPTZXbep|||ng_ZWROONNOPUY_kq|ng_YVPNNNNOVW\^iw}~wzqqhd^ZWQOMMLNOQWZdiz|uqqid^\YUQNMMMPOTXZemzv{vqogj^]XVQONNOSPWY]gv{snjhca\YTROPNSSY]gnx}uuqif]\XUSONOLONSV\it{wkj__[YTRNMMMKNNRUZag|}|ynmkea\\XWSQNNMMLOPU[_pwvojjeda`[[XUSPNOMQPTY]kp~vnlg_^YWSQRQPVV^cn|zoib[YVSUVV]]fk|xxqkeb\YXTQOOPOQXV^cvxwyqoilfb__ZYUROMNOMSUU_bx|wtpihgba^ZYUSOOPPPWX]fpz|tuojjc_][XTQONNOOTZ\dm{zvxpomgd_\YWRQOOPRZ_gr|rtwwutmgc\XVRPPRQSZ^doxwrni`]XUQOOOPQU[`gr~~{{trnhc_[YTQOOPPSVZ]bk|vokf_]YYVPONOOOOSX\bnvojea]YVTRQQQRSTY]aht{sqmjg`]ZXWURQQPPQRUX]dp~rnlfa`]ZWUSQQSUW[`ju|uolhf^\YVUSQRSSTW[_gw}ypljhd`]ZXVTSPPPQSUY^enz|wtqkfa]XUSRPPRRTW[_enzookga^[XUSRQQQQRUX[_hs~{wqnmklfd^[WTRPOOOPRUY\`jpwpkfb][YWUTTSSTX[^fo~xsnleb_\ZWVUUUVX[]bho~}sskffa]]ZZZXVVVWXZ^cho{~|ttpllhgc`]\ZZZ[\]]^_dhot~ztpjifdb`_`__begknrzvtokhejhfhifhjklmooppoorptw||tojhhehfgdefghjlmnonponooqqsutvyyy{}|}}{||zyxywomkljigebbcccfhjkkmnnussuuvwtyyuywxvtxx{~~z|~ysuppnlmkhjhhjggijmmnprqovrszz{~~~}{wupmmjkihiijjklloqy}{~||xzxxvwyy|~|}xrtpnllonmkntortzv}zvx~~y}}}}z}t{ontmyppxvmpq{z~~}}vv{r|o~{{v}{|~||vwpp}moxiluei~hixnrxuz|}|xumonpupjklngjrkhjslmrkyoiqkzmpvv{ng}l|w{mulxqtttn}m{|ws}|w||~y|xu|~tz|{{t|wsvmnvlnsn}wuwy~|w~}t}utupovttzz}z{|wvwstl}onmnihjghijnmtowlqvm{nvyzyuvoroosorpunsuslsrmwpurqvpokkmjjknmkjgkmnptswvtussmmsovtswtpwusuopoopsosnqjkolnpquuprvu{s~~~}}ux}t|tqxvxxw{{wuvysvwwxssv{x|}}{~{{}z~~xwusstopomjkmorrvuwrsusvvtvuyvzy~{yqnlifc___]]\\[ZZZZ[\^admu|tnmjifba^]ZWTRQPQQTWX_al~|ohb^[WTQONNNORUY^bku~rle_\ZXVTSTTWZY_eh~~xqmjjmosysle_]ZXWWVVWZZ^cdoz{znkjfghinmsy}vrlgg_][XVUSUWX[__gr~z{uuzzyonh_^[XXUVVXXZ^]iku|~xv{s{|usnd`]ZZXXY\Z_`frxxrjca^\[YYZ[]a_jty|t{zznkd]]ZVUSQRRTVY[ben}}ysmlmilllrsywqrmlga_]YXVTUVWXY\^djz{omjedbbeeiont||~uunmjd_\ZXUUVWX\]_hjwvmjjjjoqu{slhca_^]^^^cemv{wt|znia][WXXXYZ[^_clvpldha]YXWVXZ[\aioq}yrjgc_\YYXWYZ[^cms}}{pwxxvw{olifa][YXYZ^^abilmy|~{skgc`]][\]\\\admu~{|{{||{tnlea^\[[ZZZ\^_fiox~~}{wujdb^\ZYZZXZ\]^ddklrytohc`][YXXXWYY\acfmo{yoid_^]\[Z[[[]_djru~uolheb_]\[ZZZ[^_cins}}sonkic__]\]]^^`fioxwy|ururxvxvtolggbha_a_`deklv|~}}|{|}|pmkfdceegfhmux~}wunkjiffgjgijmtz{~}}~ywtnkjhebdceefehilro{zsvnmkiifdcc__cfehjnrw|{||~~|upqqmljjhhhhjjknosw~~|wxuomnkjlkhmmnt{~{~|{||vsuuqpqvottxrwwxyuz~}|~~|yysqomnmlnkmmkilkklnnortvrtqoosvvyw}zuruqoosopqttpoqooorpnrukqqononnnoonptw{x|{|{yy}|~}{}z|z~}|}~|~{ywuwtppssuxxxy{z~{vyyx{yxzyvz{xx~~zzytwwxvsvuxz}}}~~|~zw{ruomrurvw|}~xwv{}~~}|xvroklkljjjhgghhhklnqtvx|}}|tuponkmmnmnjjhhgjijlnnrsw{|}~|{y}wrtrnmmmklmljlkkkmmosruy{~yvvrqoponmmmmnpsvw{|}}wxurnnnmlmmlnonouz{{zztwuuvssvooolmkjjjiiiirklmnnorqvvtuusvy|yy~~~|xuoonmlonmmllllpnmonoppprtuswyw{}|{zzvwyqrpommmnmrrvtzyz}~~~~~}{}zz}~{|{|ywy{x}~~yyttqrtvpponloklmnnooooqonmnnnosquvvuwtwvy{wwyvuwvstvsrqonnooooopqprrsstvyutvxsqtrprqsoqssqtttsuxxuwwxxw|xtsrrprqqtrnqooqnooqnnorqqtvusuyuvxzy}~|~z}~~{zz||~{}zywxuwwxvruuosustvtuzuwz}z~{z{{sz{wy~~~zz}zx}~{|{|||}~}||~}~~zz}{}~}}}}}}|xwwvvvvvwyvwvvtvuvtswvttzvvxztx|yz{|}}|~~~}xy|y{}yzyzw{|vwxttxwvuwsuqpqqprooqurqspmmmlnopoonlmmmnrrwxxwvvz|{y{~~~x|}|{~~wvzvy}{|~~}}~~}~~~~~~}|~|||{xyzzzwwtrprpopqonnmkmmlklmlmnmmooprtrqsqoqqopossrsutstrruvsz{}}}}}}|~{zyzy|{xyzxxzyz}~~~||{xy|||{|{zz~}xx~~}|~|~zz}{y|~xxxvrtvttsssnpqopqrrttstrprpptquzrosknpnoonsqoomnnnnnooonmomlmnllmlmmlmmonnoqqpooqropoopopopposrrusssrqtttwwuwwstttsvvv||y{zx~}w~}~}}zvzzw{}{}|}z{z}{}~}|~~{|zz{{{yxz{z~~||{{|}|z{ysuwutwxy}|}|z}~}~|~|}z}|||~wxyzxvvvswvuttrqoonnpqooqpnqrnoqonqpuvyx{z{ywxwqtvqruqoonnoprtux|}{{|x{zy|~|{{xyvrrwxvwzyxvvwuvzyyxyy{z{zxx{yy}{yz{xyy{zzzyyzzzxz{{}|~|~|z{}{y{{~|yyzyzyy}~z}}}zzwxvrxurvqsrqqqponpppppqqopsqpqqoqrotspstrtwttwwvxwy{zzyvtuustttuvtvuuttutvtvxvxy|yzurtvtsstuvvxxyyxxyy}~~}}~~~|}}~~}}|~|~~~~}~~}|z~|y~|w|zzsspmnmlmmnonnopoomklmnqponmkjlkkkklkkigihghijkkljiiijjlmmooprsonmorpqusrqpnqqrtwyzuuzwzyz|z~}{{xy{~}{}vwyvtttuvuswx{~zx|{}{|{}|~~}|}z{||~|}{|{}|}~~~|{{x}~}{zxsruwxvxyuwvqrrsoqrptqoqtuttuusrsstxxwusropvuwuwz||{{zz{yz{xrxwrxutwzwuuuvzxwwyz{zx}zy|{}|~~}|~}|z{}zzy|zuzxw|~~}~}}zxwssvyzwww{vsnnjm}nurvt|~~yvyxyz|~|zvx|zvwy{~{vy{|~xusssppqwwxwjokjnooosroupqmlllnmnmlllsprtornqqwssww|x}zywuqommopvpouq}{otmxszwrwxswxy}xx{~y{|vv~zuw~sux}{~xz}zzyr~z{}v|w~s||z||}s{|{vn|oruoyx{vpvtlxioqj|lvtjylvtkqhiognlirdifdrhqljsfifbk`heamemocvckm`wcmoc|bnoo|i|tjinn~iuplorlpoyrzxv}t|sx|ow}qqtmvyttom~wniwhjrvfatxcco~_cnu^~cn~bgibsgaxc`y}d`ua_dcc_~~_^|\^|]`p\bp]go^ek^fk]gmalfd}q{kwkrkqjddmomliz{oxlsnsmjimruno|yoqkylvot}nm|ixxixqdvji|lfuhasf_ne`mg_tjc`sheq_ngmyi}nkrdlfjlkmigjcfcfiilhijekfllhmihidkilmiolkmfmejkinhnlfrevomcgtit{ilucktmqhgoxzu~ty}~~}~}{~zt}|{}y{}|~{}~x|||v{}~~|xwmsxuqq}pqx|vtswzpp{l~gqoh|gptfkvdi}ga}lg^`iu^_rmb_nnepnmvovuzhymovmzqnllsooqvw{pvqs}}vslhjlhngkgidfgieielhldnmktj}uskn}~jlwrh}f~mjxhskkvl~y{vvvx{}~uyzk~ou{rn|xtrvqy}uyzyzu~~{u}t~~~zxw}zvzz}p{ws}svvouourmquvxwwyq|qzyy{x|{qtwuqoxxz}{s}}~|~w}|~~zvzysszznv~~}~zuysnnmmkklmnnpmonstx}}zysvnklfgedfegffefjip|ztpkjieeba^]^\\[[\^`ddiq{qvnvqox~pjhdc^\\[ZYWWWUVRUTTZY_biw{~{nmffffll{rmjec_]^]\[[XXWWYZZ^baox}|wsx{p~~pjf_^^_]]]\^[Y[\]ejoxnnkxzzlhghgeaa`^^[\`^hloz~~rkjec`^_]`_^^__clm}|ojhhjjm~pjdb`]^\]^\\[\\\bejtofgfjihm~pli_^^\[[YWXVTVVX^_dqxvjhbijlkqtokc]ZZZYVUXYZZ]dluviegknqpphc_\[ZYXY[ZZ[_l{phhbhkmtziga`][XXXWWWUUWYbfmoomlnowmc]YXWVUUUVVUW[_grwnmnnmn|ohb_][XXXYYY\_gn|yomoyxtnif__][\Z[YWWX\\aahu|}|xqikjmmjlgffhifecbcehlt{tqoqmmnnihgibdaecfknrz}|x~zx{zwqwmjlkphljltv{nq}|||}wpllmfebf_faghk{r}qluhsmkkfeddjjpwk~qxpr{uwkmeldibae^fdgkeubxfytolmodkbgc^e[`d_j_lmu|~rmpvw}mvjjwby_eoauidzixx|oxq~~}osw}~tyx{{{zrqwmzmf{npzkyqosqm~lkvjvmt{t~}w~}{s|sn|mlviomjpkoly~u|~qzoepiekgdnmzp}t{~xxrpuwv{lylpmluhvorojmy}w|~y|whyljgdceebfkltvwykxr{owz|uk}}kp}~w{n~yq}z}wz{qowyo}utpy|nphsqimjfm|m}|y|u|yov}vwp~oourllyml}my|}y~xws}|y|}}xyv{yqnvqkuvrt{oq{}~x}nzozqnylmpgmpjomuqtzszz|sw|smonlpmo{xux||uuxlqmjkjomorpqw~}{ywpppyxv{}~~}~z{wyvx}x|{otksojnqpsuu|yvuvurlmupyuu~uy|z~~xy}uyyt~|y{{y~v~vsrpqzwu}|z{tnqqoonklmowt{}}pkida^\\\[ZZ[^`gq~jk\[WOONNNORX\]i}rkf_corrf\UQNMLLMNQ[]hnlc^bcsxbZSNLMKLMTYZesnhadeu}oc[QOLKLLNW[cld^Z[^bhe]UOMJIIJKOVYjvo][YSQTW[]v^WQKMKIJIIKO[[t|l\XYTTVZcjw^XONMKKKMOT^kum^Y\]\\asw_WUSQOOTY[aoprmzlfetoaZXZWVTWZ]`mzylfnhfdn|lf^YVTPRUV[\]_ddxxtpgf_dlwxogb\[]\[\VWSRSXZ\hx~l_^^YZUW^enxvocYUPRPQSUVXY^Z_psf_[Z\^golhab^[\ZUVYYchwsfkkeiwyvjab^ZXXXYX\gen~t_`dholoocb_]][]Z[\\\Z\hjz~x~}vmmkfp~xqkdhb]ihde`e^^`^e^]__]^\cdinhnmnnyx~{qvjnkgtmltootqxttoil`jegkntw}}{n}kqrxzzx}}|}tw~l|wr{wupk{z{pznkmoqm{~~u|||rxlqoimepqgphttip}v|wx~vsow|l}oor{o{xoqozlwjqnnsnynoviuolwkkmh|yeh|nnniwek~flyufpfimikpllzru|sy}y}jmmgjjmnoo|kmmgr|mflofvhel`lccmgtsgqsutpqjzoqnwzvzprvfkiikkoltilnmijgnhzm{wvsr{s{|~||~sz|sz{x|otsm|whzllw|xu|zuorskxsoyjc|nhydqlgkcpfpirpj{vgk}zomizyqwnsoomosqjp~s{t{t}w}upvk}km|m~{xy}uqzokypczbvpkwk|zou}xun~kvvypznzxvv}xty|z}tz{v|wz|y~yzousyu~}pmrxnwumrvtxt~{o}lomuwqzt~limpmunpuvmwz}pommtmkxot~hzsh|lmvlqxmxonvn}wmzrtzilvdrivv}wnrx}zwqtvwplzuplnosnnoukyvwx}uuxu||w~xxzn|~~}zs|w~yx}zz}uzyytwmkthnolynrsk}umtvgmehqow}zxxojginjnhhjcc^__addfkhwv{~p{tqlhpjde]bd^bZ^kgox|usv|zy{{hibdg`]^_b^]]fn}}yml|~xpjeebfa__^__]Z\\[^deuuqqp{||xtrnjhhd_\ZWWXYbbjy|{z|xxpjfbdda]ZZXWV[af|w~ussq~yofc^[[WVXVZ^]l~{|y{yptrmnnqqikc__ZUROQRTZ]eszlkkiklosyytsslf`\ZVUSUVY_dm~}qkc_]ZY[^aejs~nhb]ZXWVWWY[^dmz}zyqid`^[XXVVVVY]bl~{|yoornpjec^[XTTTSTVWY\`emuwnjfd_\[YXXXXY[^`jnsz}||{zyrunhd_\[YWWWXY\_fn|{xwnic^\YXVVVWZ]ckq{ymh_\ZVTSUVWZ\ajvzrlhe`][XVTRRUXY[`gp}}zohc^[XVTRSTTVW\_fo|tlgb_[ZXVWXWY[ajp~wnf_]ZZXXX[\]]`gnxumgd_]ZZYXZ`dcov{nqhx~prloiac^\YSUQRYZ]klrqrvum}|vkmih^[[ZVTW\h_h~|mfwontx~|mec_[XUVUT_`dzokcihljtxtttzxxwnjf]YTTUSZhbuv{vi\^_gji}{uyzxohb\WRTTR\ecrh|xkikyuyld^\_elns}~|~xkc\XSUSUZljovvv|x}sigo}~mf^[ZZZ[]mjwkor~usr}~tkg]YZWZ\inuvo}|{}ojlk|md`\XSQPRSV_ilwk~qigcbefoxoi_[VVTSPRSV\imtlw~wnmno|{}s~mhfe`^]\[\]]_cv~zsv~{}s}zsvpulic`bcdi~pwz~~~mg_\ZZ[]hzzyqwrmf`dgimkm|z|oqwupnlc^[WVUUWZ_kqxoojmpuvpgjfdijmtsuoijhc_[VTRQRTW_jz|wottznleegilry{}yxzsng_[[XYZZ^lwvx}nrmpv~zkjghd_[XXWX\_dvvuu{{xupld_]\]^^^bjtzuqx}wpoos~ypha_^_`a`ckv}z{}{okikpzrmib^ZVUUUVWXZ^ix}slkmv}xuuuoic_][YWVWY]`ku|umlmos}wkkikv~{qlfdbeijhed_^\YXXX[_fm{wqroz}}z{}|xvuttomkjggfddggkmt~ytomkihhijiikmoovx~|y~}|}x{vomjfdbaabchkms{ytolkjjkklponpqqrruxz}{zz|utqookigdba__abchjouy|zwuqnmklkjhdddefffhjimnpusw{~}}|zzyvzwwxwtwtqqrvxyxyy{{y|~~zxxutrostruusxwvy{z~~}~{{xvvpopopommkkk{}jrqrwkknjkhjiejheikjmnlromsonppqvurxrv|rvsnqoqvx}}z}zt{svzo{|}x}svwwwzuyvtrrrpzzy|||}~yzwxutwoonmnmlnkkllimllnmopouvx|yroljjigggfgfegeeggkqr{}slkfghfhcaa_`aabiosujolmsuxtoijhfjhkkhgeeaabaiov~tjlhglms~xnkhecaacccda^]\\\\adm{~mib_^_eht}nida_^^^^^^^]\ZXXXYZ_ep|roggdeikx|sjg`][YWUWXZ_mz}~smfea_^^^`em}~zplhfba^][\Z]^gsw|wmifca_^][[Z[\dkxxojmszzxqoliggda_\[WVUWX^ep}|}~}|umgehmu|wyupliec_\ZWVSTV[dm|lfdio|wxzttsuomkgb]ZVTSTV[amyv{rqtt}mheemw}vzx|~snf_[YVWY\fpxrlp|xle^[YY[^husnjnyqld^ZXUUWZ_goyv|u}trkow~{voga\ZXWWZ_gotpwq{vsknt}~}tnfc][YWXZ_hty{~x}{smnmt|xxutmic^][ZZ]dlu|xppoz{sljd_]ZZZ[ahpt~~~zsljiglo{y{{qled^]YXWVWZ^dglonrr}|sliggehjruzyxrtrw}ynjc`^]YZXWXZ]bglst{||smkijgjlpv{xzttvx|zplfb^]\[ZZ[]afknu{upjgd`_aaekotz{uoljijggehmpquxsomihhgfgiknpvw||{y{}|ytnljjijjklosy|}||~~zwyxwvsromjhfedccddfejjvzs~}{|}zupnlkiiijjlnrx~|{xvvtxx|}~~{zz{||~~wvsomlmllmnoquxz~zyxsonnlkjiiijkllnnnmmlmlooqtv{}~{tomkjhfecdefhjlnqw{}zupmlkkjhhghhhghijlnpuz{}|}{vomkhhedddcddehklnopuw}~wuqmkihfeccdeffhhkmnrsvx{||xsnlkhgfdeeffgikooty|}ywysqmnlkiiikjlmmoorrtuuyy{~~|yyvuwttqooommmnnplyt{xyy{{}~}{vvvwuvwvvyzy{}~~}|{{yzyywxxxwwz}~|v~wwyuuxvvtututtqqonnprtwy}~yvqonmlljjhhihjkmmoquwyyy||~{|{xwvutrsuuxvxxxvusstvxzyxvvxxwuurrqssvyyzywyxzzxxxzz{xywuuvvvuuxyz}~~~|zzxwyyy{{||{|~~~~|}}~~~~}||~~~}}~~}}|z{zwyyy~}~~~}{xxxxx|}|y{|{|~||~~|zztuwwustqsrrstutpsoqm|zrvrtrwttuuwwxvxz|||}~}|z}z}~}~}}{{zyyxzz{|}|}}{{{yyyywxxvvxxvwy{}~~~}{|vu|{|~}}|yyyxywx{zzyyvtqsrpqqsroonoqpqrorqstuttuqrppprtqqrrponnnnnnnnnnnnnmooppoorqprsrrstvuttstwuuvuvwxxyyyz{z{z|}{||{}{y{zzyvwvtxxxyxyvxwwwx{}}}~~~}}~~~|{{|yxxxzy{~~~~~|z{{yx{yxwwwyxwxvvstrrrqqqpppqnonoooosprq{~}|~}|}~|z{z{zyy||{}}}}~~~~}}|~~~}z|{||{|{wwwvtussvz{|{v|wy|sxuuxuuutrooonoonnooooonnonnnmmmmnlmlllklmnmnnnoooopooonnnnmnnnoooqrppttsstsqroqqpqsqrrpooponnmmmnnnmnmnnqttz{z||{}}~~}{}~}}~~~~~|{y{xvwwusutqsrtutttvurtsrrtowvuuuuvyz}~{}|yz|{zyzyxzxxwwzwyz{|~|}|yvwwvvvstssqqrrwuuvxx}~~}}{xz|}{|{{ywwx{z{{z{|~}~~}|z|}~~}||yy|ywwvwxx|}~~~|}~~}~~~~~{|~}}|{{y|~~~}~}|zzzzywyyyxtqrpopttvxzwwxuvttvvwuvuvsrpqtuvtttrsoqopprrssrqqqqpoqstqopqpqpsuvwyxz|z|}{{}~||y{zvvyxw{z}}}~}~}}}~~}}}}~}~||}{}~~|||}{}~~~||||~|~{zzxzxxvvwwyx{{{zz}}|zz|z{yzywwwwtvwxzzwuwwwvusprpqqopqrrrsprpooopqrtsrqpvrwnovrusqtustrrsqsqorptrtttuyuurrsrsrprqrttstvstx{~}~|||}z{|~}}~{{{z}~~}zywxxtutssstwvtvtqqtsssttrqpooqqstvvwwvvuxyz{{zyxwwstsqrrsrusrqponooonorqsuuspnmnnnmnoptrrrsqprrstwvxyzy|}|~}}~~~~}~~}{z}~}~}{~|{{yxvvxwzz}~~ztronnlkkjklmmnqqrtuy{{uqmjhhaaa^^^]^__`acefjmnut}ywpokkhfdc`__^^]]^__`egls{~x|~{twkjg`a^^]\]^^ddls|{yyv|}sohe`]]\[[[]^ahkxvutquw~ymic_][YXWWYZ\adpwxrikfhjkuzolea]ZXWUUTUWV\\blp{mlfbc`cdfkoyyrjd_\ZXWWVXZZadn~zylilglnsohb][XWXXZ]]eiqz{nlljnqunic^\\[[X\^^lk{nohggejlu}rid_][ZYYY^]dmoofccbbhgox{ne`\YWTSRSTXY]dgmgdaa`dgkstkc]ZUSPPOOOTUY`bz~vrhb_^]__egm~xmb^ZWURQPQRVW\diqnhehfmp}ukb^ZXVUSVU[[ckstnhdeihvuxkf^ZYUVTVWZ\ckxolgbcbeknxib\XURPOOOQTU]^lwynec^]^__ii{|ic]XWSRQQQUVY_bv|mfb^^__cinzlc_[WUQPOPQVT]]jvsnhddcfltrha[XUTQRPUU[_d{yvlomo}}~skc_\YXWWZZbfl|pmlipr|qjb]ZWVUWUX]^imzmnhkkmr{}}snhb^[XUSQQRQVV\^gooofidffeillwx~zzpoic_\ZXVUVUWX\`eq}}~tytvxzvpjhb_^^]]a`jl|{unlkkgnly|~yzxvpommhhehdhlltu~|}{zzltjhjegcdccfccbdcfhkmsx|}}}vuolkffa`a_a_`_^^]^^^_acdhkow|}}z~~wvnokjhfedbbbbddehjmux~ywspnkiigidhljrquyurklggcbdcbccehjos|tmkjhgghikloptyz{zsqnkhfeddffjmoy}{utpoononyux~}pwkjicea`_]^]]]]^`bginuw}~xvsopnooqvu|{yqnlifdca____`abdfjkosz~{xutrsrrx~xsnnklkkmmmoqz|ytpmmnnqrw{~}}xzyvursrstw}~}|}|{z~{}yyvrpnnmmmopqtx{}~}{zzzzuutqrrsruw{zz{~{}tuonlmmlkkllnoonmmnopsrqoonmlkjjihhgghjkmsw{~~}zvrnliggeffhgiknsw|}}}~}~~}{{vvuuwz}{tuolnklkllmmqsx~|zwvuttrrw|~}|{{zz{}~}zxwxyz{~{y||||}}}|xxssrqstvzyzy|wtspsswyx||}{yvsutttuutuwy|{~~~~}zxurqprrqstw{~~~|}|zxwwtutstuvvxyyxwzzz}}}~}}|}~~~yxsqoooojnonoonstwzz{{xyxwvvwwwwvvvtuuvwx{}~}~}~}}{zz{y||{|}}}~|zxuuqssppqprprrqsrqxxy{}{{{zzxxwuuvvwxyzy{|}}}zyyyz|~~~~~~~}|}}zzxyy||~}{xvsqoprppooomnnopqpooopnnmnknzmporqqsqprrtwwvwxzzxwvttqpnnmlklmnoortuuwwtvwwwxyxyzyyzz{{~}}~}~~}|zzwwwuussrstuuutttuvvyxwxuuuvtuvwxy|~}|zz{zyyxxyyy{~}~~~~~{zyz|zywyxzzy{zzxyzwvvvuwsqponnnmklkiiiiiiiijklmmooooqtstststuuwyyz{{~||}}}}|{yy{z|y|||~~~||zwyzzzzxxxyxy{{|{||{{{{{}~~}z|~}~}~}}|zyxwxxyyxvuuvuuttxwwuvuwwxxwy|~~~}{xtrqqqpqqpqsruuvy{{zzwuvwvy{{yxxxxxxwvvvwxz|~}}{yxywxvvxyxyzz||}}~}{{|}~~{yxwxx{z}}}|{z{||{xxusrponmmmllllmmmmquvwwvvuttxwuvwwuutsqqrqrtuvwvwsqpoppppppnnmlkkklllmoppooooopoqrroopppoppqoqqqrrsuwwyzzyyxusqporuuttqpponotvy}{|}~~{{yxvrqpquyy|}}zzxxxzxz{yxz||~}|~~}{{{{|z|~}}~}zwurtuvxyzzy~~~~}{}}}}}}}|yxvxvuvuu}~~}~~|zxxyyyvuuwvvtuttsqqtplqnnonknmmmnnopqssstrprrqooonlmkkkllkjlkkllllnnnmlmlmnoqsqsrqqopnnnnopqsrrqrw{|~|{zxyyywuutvw|}~~|{y|~|zyvv{{|}}|z}}|}}~|||}~}~{~yzyx{y|~~}{|||~~|{zzxyzuvyyzyyxuvuttstwvxy{~|}xu}|ssx|xunotzzytvyz{wxz}~|}}~yxxy||}yz~}~~}~}}|}|}~|}}|zututsuuuuvvwvvvwrtussutuuvtrqsruumvtrollnmnmmllkllkkljklmnmmnmooooruuuutpsroppsrrtroppnooonmquvutrrruv{{{yz{wvwvz{zywvpqsuwyyyxyxywusruuxzxwzyxvwwyy||}~|wz{}}{usu}~ypnoonpt{|{vvw{}|}xuytpqw|}zuou}rnopokgeeda^_dgjq}zupmjifd`___`fm~{y{z||{sounpleeedfq~{uohdeffeacjyqmjhea^\YWWZ\_hngegjnr{~unonjc]\[Z\^afsvlnry{uuqpkhb_\\]_bhm~xyoomf^ZW[]_]\^konu}zznnsoe^\\\ZZ]cjqrp||~w|qrpof_\[\]^]ajoowvvtwwml|{uzzmhjig_ZWUVUX[\_k|vcdeor{zx}{xru|sx~~sstne_\Z[Z]`dklmrukefeflnvyylkrnkb\[Z]`cfk|~xzx|zj_]`adegpy{qmrrf`XVYYY[]gptiinruvyv}yutxstzvigffc]XUVXYZ]akwmknuwz||z{w}~xtvwj`\Z[Z[\^ekovstx{~|}zyywqlc^]^^ZY]dms{~qlmo~|y|{|trmkhga][[^`dhksqtx|~}{yxst||yvmotume`^]^^_agmxxsz{wzzuv~ynhb`acabcjlxw|}|wqppkf`_beecchou|{}zsmjkifb^_dkp{}uvz}ysspookg`^\\^bgzorljhfgw|zsoljmqy{rmnomjknz}~voorsnkiijha^[ZYY[_hypkgikvxwuw|ssu~~~zyysnga^]`iq{v{}y}|{omnnljf`][ZY[^fk}|uxvlkn~|zuqqqqmhd`a_`emzunlikozyvtw~yxy}yrnjgba`dbck{wljjjkls|zwwvuu{}zw||vxljedbcdda``is{~{yrmkljfdaaca__`abdkv{z~{~~zurorpnmliihhiiijklnopssxzvpsqqysstllmouxzz|{~zxywvqnlllmmnoqrx|}~z}~|zuooorsuqnlllklklooollklmoqponnnnlklnnopsqty{{ywy|{|~}xx|}ywwz}|wwsoprtuuusrooopqtvvvxx{}}}~~}}{zyy|~}}~}}~|~|{wuvw{~|yuy{~~zwusruuvyyusrpopsvvvwvutsqqrqstuvupnmlmprruvsutrtx||zxvvsopomllklnnnoonmjijmpqqonnommorstpnnnnpssuy|}xsoqtuwzzxsnllmnrrqppsvxz{{z|z~{zz}~~yursvy~|yvrnnotxzzxvsttuvutsqoommoorrqpooooomlllkllkkkiffeefddeffeccba`abehkjihhiiiknommlllllkklnoqomkklnqrponooorvy{yvrqqquusqnmllmov}yuvz}~~|~~~~}}}}~zy|~{txzy|yxxxwvy{zxxwwxxvwwwvvtuvwywtrpqqrstuwx{|{|{xwxzz|{xvuvvuusurrvvvvuuy{yzzy{z{}~~yxz|}|||~{vtsvzzzxxwvwz~|yyzx{|{z{~}~~}~~|{||zz{~yxuruuttuutroonnnqqrtwwxwwz{zy}zwwvvyyxwxxwxwuttwyxyzxxyzywutsuvwvvvutsvvxz{z{~}}zz{xxwuturqpoonooptqqqrp}~~{xwssuvyz||}~|{~}~{|x|}}}}~|zwtqponmnoomoqsuwwxwxvxxz~|~~}{xyvvsqonlklmonnooruux|~}zy}~~{vspooooqqtuqssruvxz}||{wvutropppsrrprruxwwvzyxywx|~~~~|yzyxvvy|~yxz}}zzywvuuuvtvtvwyzx{}~}}~{yxwx{}}}~~}}~~~~~zyx}||ywx}~}~~~~|wvxyxxx|}yvwwxx{}|yy{zyyy|~|{{{{~}}||~|}~|{{wyz~|z}~~}~~w{z{|twvxxz{{|zxvxuvy{}~~|{{{}~}|xxvutww{wzuywvuuwz{zy{zzzzxzzwyvtvuwvtwtvuvstuwxxwwvxxwxvwwz}|~}y|}}}~|{zzrursrsorpoomplnmqrutqrpoopqsttwwvturspqqtuttqpooruuxyyzvuttxx|xyxvvrtrvv}|~{|zz|~}~|~~~~||z{z{|}~}|z}}}|{~}~}~{}}y{yy}{zwxxyv{}~~~~~{yyvttuwxsqonmllorvwz|||x{w~|}~z}wwppnpoqpoonmmmmotzrz|wyvotxxwvsqoljihiikklmnnomorqvy||{|{{yvvxttsroonnooptvwwxy{~|{zxvyswvxy~|zyyz{{~~~{xxxz||~~}}|{zzyxy}}{yxrrpponnoqqqssrtrvwz}xwstprnqoonmlkjkmnrquqvqtorrxvzwzpqmnmnmmlmlnmonnnortwx|~{z~}xzzwuuutvvz|{z~z~|{~~}{xvuswz{~~}{}}||{|}~}}}~~}~}|yxz{~~|~}~~~}xxxwuwwwwwvwupnmlihhijjhghjlllnqtuy}wnlhea_^^^^^]\\]]^_dinr{znhc_][YZ[\^`gnyssoiea^][\_cinyx~sopme^\XXVW[`ewfmz}~}rzvlmnja\WWTSUZ^gzmhs{uxs}{{}wslf^YXTUX[`dzzkwx~wzxwlmhc[YWUWWZ_gyk}y}}qed]]XWX[]_aw{kzp~rjcb[Z\_chenzr}~yyif^^YWW[]`_q{ium|~y~r{|sko}vhb^^YVUY\]^wmilxjil{t~zxvvzjbd_ZWW\``e}llnl~{~t{xrysnlylj`a[ZXZ[]^mvvgbhrjhn|zw}ul{xv{ye][\XXUZ_bex}lin{mxtuwq~oi`a]XVY_cfwqq{~uz|zthgm^\Y_fgiyqpt}~rjia^\^efesx}rmf_\ZZ^badsqovu|}~ymi`]ZZWY[]]fnrimyz{kp~{wmnrz|umlif^[YYXXWY]jnvfiltgih}s|wywz}yllda^\ZZXZ[\^gw{nw}|x{}xtnic_]]]_`ehu|xz}xspkg_\\[Z\]`iqv~une_\[Y[\`bjoypmr}}wu}yusxwyow{~xrprnjd^\ZXXZ]_clu{pr|{}~{}}~wjea]\^^eenwmif_`agmp}}}znie_]]^bdkq}xxyy||x}}y{}oomookikjhb^]^\^^^_ejpnju}{wqy{}{{z}|tpookga`__\\]`eijlnz|{|wtrutonmmmjiijljhecaa`dgr}|~}}yustrrvurolkigefjnwyzzz}zqlkjjihgdb_^_bglt{~||tmhfggeccdecbbcdehjmptvxustvx}zzwojfcb_^]]]^^_chlv}}xtslmulroppw}|wrsqqnmmmkiiiknr}~}}ywwttqqtutvyzz||}}}|}{{{|{}zvsqruttvvsonmmnnnttsz||vmokhhfeghhiikkkijmps{}yxvuuqnmmllkjjlmosw|~}yvtropoqsurpoononmow|yuqrrtwxxvoljijlou|}}wurtvywvvtuv{{{{}tonnnpruy|}|{}{yspopsutxyzvurtxz||~}}|||}}~|yxtssttsrssutqonnpqvwywvrpnnntwzy||{}~yxsqpqsssrrqoooptxzz{xwpmkkjjknoonmkihhjlouy~~~~{xvwxzvtsqnnnprtrponmoqwy}}|}}zywvvv{}}w|zy|yx|zyxxzvtqqrtrrww{}}~}~|{zz{{~~~~}~yurportponnmmnostuxyyxwuplkklmnnmlllkmnpnopoopquxwwtqnmmllmmnlllkkkjjjkmottspommllmmnoporuyzxuqrstrtx{}{{~|{}~}~z{|}|{|~}|zy{~|wvuvw{{wrnlkklnnpomlmmnoptvywxywuusstvwxvvuqopsuyzyupnmnrvxwtsrrutstusroorsrqopoqsvz{{wwvvz|u}zxzww~}|xxussuvy{}~~|vuuuuvuuvx|{|ywz}{wwy}}ywrrpqqssuwuuutttvwwy}~|xy|}}}zxvtsrpuvvxussrtwtuqnnoooouvxxz|~~}~~~|}~~}zzz{~|{zyz{|~~~zwvwx~}{{|}{wuwz}~}|}}|}~}~~}}{yxyyz|~||~~~}xurv|}{|}~{~xyz}~}~|z}}~}zyyxvyz{|ywvuxy||~|uqqrvyzsqnmoru{|zwwvrrsttrrqnkjlnpttpnmljjlnorqnmmllmortsssroonllmmnoqqqqpooopruvwx{}~~~{xxy|||}|z}}|}}}{{~|||}~}{}rwpyw|{y|w}z~~ywwxxyyxyy{yt|q{tvpspsrww}}{}{}{{}|y{szqxquryvyvwxwvwvzw{z|{|||y~yyxwututzy{wzu{yz|~}}}{}}~{~{~~wux~tx}~}}~}zv|wyy||xurqqpsqqsnponspwuyx|~{yv|vv}q|pzrvsvuzxx{y~wuysxwyw{z}{|wzw||~~||{~txsxovtzw{svs{|}xwzzxuwtsxvx|z|}}yuuy}rtsy}|z}ruw{|z}zyx}tzsvx|}}uvrsquqqswtwstour|wu{tvotrrqsrrpoqqusvuuvywyy|yxwq}x}uxtzx}{~vstttpssyxzqsoorqyqxosqssw{y{zxuvz{{z~y~}{{vpmmpu~w{{puztwxusljjln~ottvxtwu~qwwusv~ztqljjhg}efhfh}iklmottx}yunijhgd~dcgfhjkm{nwo{w}{|runyswpxpymvkwkxjskumyn~v}wyxyu|wxxroqvw~|||y~wy}vpnpoqwxz}}}w}~}yywzzyyssvwwsyy}y~w~v~uxx|wxzxvqnzuopopoqywz~y||~}y~w}svo{t{s}uu|uzryy|z{vsxsuut{v|uuw|{{{~z}z{x|~~||v|xzs}pwnsmqnqotvvyy}x{{|y}w}z|w}|~~}}|~zz}~~|~|ux{{|}{~z}}~}}{{{v}ussww}vxuuvw{y~||~{ywxwwxuwsvpssurwsuuvrwsvqxq|tvxs{r|tvt}p{nzoyq|sysxqwswvx{{~|~yuz|~~}~xxyyz|~|}z}x~twouotovnuptp{xys{mofibgagchekionz{|tkjefcb_a^^^]]achmq|zrnjifb^_^^]\\^aeimwvyqpmhfbcba_`afimtv}|zolgfa`_abcaabehmoxyvzomggbb^^^^]\_chouyxlolsznjg`_^^\[YYWWUXZ_elsrsjjflmz~pjda^][ZXXWWWX\^fis~|soqq{umhfca_]][\Z[Y]_gkuxskmjtv}umhc__^\\ZZ[ZZZ_bnnyvonlpxymjfc_a_^]]\[[Z[_aim{~}tsmnnt}wpljiihgdba`^]]ahs|wumqpyuokghgiefbc_`]^]dhquyzzz{sqmkjkjhiecb`_^^dhqs|yosmonxqsmlhgfhigfba^]\\[_cnu{|tuq{{}|~~wuqrongd`a^^\^cku~{~svy|w|s|xxuyurjf_]\[Y[^eq|pumywujb^[YY\^joz|t~{pic_][ZZ^bjo{~twr|~zuic^\[ZYXZ^aikvz|xzw|zwmgc_\\\[\^dgor}|vokhc_^]]]]]ahnty~xpnmligdcdab_khlouzztpnnnnnnmmmjifgiloqv~~~z{|~~}xwtpmmkjjhfecfkmor~{urqvwz~}~yusqplkhhffgjmus||}xyupoonrty~yywwuuoqqrpliihfeceglqw~zzwz{|xvrmkffghjmu}yyx|~}}{{ywsutrpoommljhkow~}{vvtx~~yuvsopoooqpsuw{{{}~yvomkighfghjkmmoqswy}{uqonolljmlnoqvwxyz~~}}}~{zywtsqxuutwvvtsppoonqrvy}~{|{xvuttqsruuvvxwuwwy{~}{}}~~|z|zzurqonpqstyz{|}}}~~xzztwwuttrstvz~|xwurpsuwyy|}~~}xtrqnnnnnoostuw|}zwtqnmmnmnoqqvy|~{zwwwvvwwyy{|~}}}|xutrpqprprqqqrtuvx{~~|yuqpqrsrrqonnptyz}~}{~|{|zxxvvuuututuxz}|{xvutuutsuuvxxy||}||}~}{xyzyz}|}~~~~}{zzzzyy}}}|zyzzyzywwvvxwwwvsqpoooooppqsuvyy}|{}}}}}|{|{zzyxwutssrqssrttttqsrqrrqqsrttsttuuvuvwwvyxzzzzzy{|z{zwyvwyz{}|~{{z{z{{{{zyy{{{||z~}}|}{zz{xxwuusuuxz|}}|||}|}~{xtponoppqpopqpoooooorsuvvurrrrqrqstyy{{|}~}~~}|{xusrrroopqpoonoooppstvwvvxzyyxxxzyyxxwxwvwwwwvttuvsuttrttstuvwxzxxxzz{{~}~~~~~|{|}}}}}}~~~}|{|~}||}~|y{zyzwvvwvvyz~~||zyzyyxz}|~|zyzzzyy}|~|zyyxvvuvxzzxxwxwwwyy{{z{|~uz}y{zsvrqrsutuuuvuwwy{~~|{zyxxwxzxz{|}||||{|z{{{z{{{|ywxvussrtuwvvxxzzyzzzz{|}~~~~~}}~|||~~||||zxywwuvvvvuux{{||~~~||||{|}}{|}{{~||{xurpponnmnnmmmmnopppqrrsttqttuwuuursrrrsstvvxzz{~}~~~}}}~}}~zyyxwvvxxyzxzz{{{|~}}~|{zzyyxzy|{{|}~}||}{yxxzyz{||}~|}||}|}}|{yyz||~}~}~~}~}}{ywwxy}}x~z~|y|{~~~}{{|{{{xyyxyz}~~~}~}~~~~}~~}|{{xvuttttuxz{||}}~~~~}||{zxvtsqrrsuuwxy{|{zyvtttutsrqppqrqrsttvxyzzxyyyzzzxvutrppqsttvwyz{||~~||{z|}~~}{{{{ywvuuuuvtrqqqrutvwwzy{|}|{}}{|{yxwwxz}}{|}}}{}}{{yywuusstvwyz{{~~~}}}}|{xxvsrpqppnnmot{{}~{yzyz{|~}|~~{{zz{|}}}|{||~~~~~~~}}}}~||zxyyxwvy|~|}|zz{yzzzzxwxxwvvttuvuvvwvyzzz{|~{|zywvwwvwyyx{}}{{{{zywvwwvurqpnmlmmmnooqtwy{}|{{|{z{}}}|z{}|xvvvuwz|||}}~~~~|zxyz{zy{|{{zyxwyyzz|||}~}~}~}}|z}~{wuustswxz}~~|{zxuutuuutvutvxwx{}~}zwwvtsttsssvvvvvuxzy{||||~}|ywtrqpooqqooooopqpqpqrstuuwxvxvtsrtvvvxyz{zz|}~~u|}y}|y|||}|}}{}~~~}~~~|}|{|}}}~~}~||~~}}~~~}|}~~|{|{{yz{{yyxwxyzzz|zwvtrsrqqqrpoonnnnooonnnnmmnnnnmmnnmllnnoomlljhhiihjjjjiiiijjjlmmmnnqvzz{zyxvwvvwyzyxwx{~|{zvtrrrqonnmmllllkllmnoruwwvvvwz||~~~~|}}}}||~}~}~}~{xwvwxxyz}{urngjjikifheddcdccdfhiknqtxzy|}~|wsokjigfdcccdefggffddcdefimpv|}||zyz{xwpnljhfb`_^^^^`ekt}zz}~}wpmigd`_^]]]^_cgn{~~}~xqmjgb_]\[[\]ago|}~zuqnjec`^]\\]_fmyyustv{zxuwy{wyrznqkifc_^]]^agm|zyxz}}zwtnjfa_]]^_em~wqnmmot|}}|zxtonmljiec`_]\]_dkw{spoqsu}~wsojljfgecgfea_]\[\^cmx{qliggims~|vromkghggeddc`^\ZYXXZ\airyqliilqztnjgecaa``_`aaa_^\ZZYZ\_gn||tmhfddflq~sljhhghghijjjjhfb_]\]^bju|qljijlr|vommmmnmmllmmljiea^]]_ckxzrnmnqxxqnlkjjhhhgfffeb_^\\\]_foxqnllos}|unmlkjjihhiiiigc`^]]^agn|yqljijls}yoljijkkkjjkkkjgd`^^^_cjryrlkjkmtvomlkkkkkjjkloooligeegksunmnqwxvnjihhhiihhhhiiifd`___cgm}umhfegjovxnjfddefeedddfghfd`^\[[\^bjs}pkgcbbeiozsmjiijiihikmnopoljfca`bhnyypkjknt}~wwvxyxxyxyz}yslieccfinv~rljklovwqooonmlmmmnnoomjfb___bfnyyoljlot{{wvuvutqpoooooonie`][[[]^jwwxolkkmpy|wttttqnkjijjkkjgc_^]]]^`ejnuuomnqv{~{yxy||{|yz{|}}|xqmieb_`cglpy|wwy~}yrihdab__dflq~}yz{~}~ysnjgdb`adgkowzwqmieb____bcdek]PFFM\y`WTOQOP`yqývt`_glpOJQah`cqxk|iVJEGKOUXRMJHHIKQdw}jUKHKNVlqaXUUTPMJHHLMORUOGA>=>?EIMU_~xmu~l]UZZSSSPNMKJKKLOUY`ly~soxphd^]]ZYZZVRPRUTROMLNSVYbsf[Z^hnjjovknu}md\ZY[]_ekjja^\\^bn}unjrf^\\[Z]aggin}kdimligcccehnytoonou{y{}qia`^_dntzvja_^^dmz~xrnty}uiedaadlv}{v}}xmic]\\][WVWYXZ]^_bejkloss|z~~ykaZXXZ^_cfeeitzssomotr{}qox~~{qoja]\`kzwrmily}vpmlgdcdjo~{tmha__^_aded`][\]^^`fjjjfjixy|~qmrwrtronmlhfgmzqlknw|trqrppw}sjihhhlnje_^ahn}wnnlkpwxvtvukmhdc^_ejnv}zsppoptqqtqsry{womnot~vlifba`bbceilp~|vtwxtqqqomszuljmnige_^^adiv|wononmr}|vvz}}nhfhjligggjmpvx|vqsz}nihggknw}umechknu|~}xvx}{of^\\_bdehjlmqxz|zwtxyxy{~~zwsoruv|}oklmlhddegghknsqoonnv~{~~zy|xvtrsvuqomklmosv{}||~}vnjijkmqy|yxurqonmlmnotyxmhfgijjkkmp|zxwzzvtqoruvtx{}{wvsrqsty~zuokkox~~~~z{{|zyvrlhgfffhhhlu}}~|yvutpnnmkjjlnqwyvtv|}vtsw~tspnnp|{xwx{{ywsqponnlkjgghjmrw|vqnkfcdffehlnptxvxzywvvssvuv|}~}|~}xwwurouxxy~}{}~|y{z{}~~{zutm|uososz~xvyzuor~wvwz{|~||vnmpnnouy~{xyuqouwuw{~~~~wwvz|zwttrty~}xsrqtz{z{~~}~~}z~|zvuz|{zyzyyx}}|~}wvuwtrpnnouvw~|wtqnlkihknnoqsry}yy}}}}}~~{xxtpqvvqpomklmpsvxvsqqrrrspopooqqsrpsuy|{x|{xqmjjjnqrrsrrsqqqppoooqqqussttutrpoooosvyz{}~~}{|{{y~~zuuwzyttsww|}|y{}|~~}{zzzz{y{}~}zxx}|}}xz{~~zwvsoooopsvyyuuvuw}~ywvvuuwtsrvxz}~}xxytvuuprqptrtsuy}}ytuornlnlnomnsuwtuz{}}~~~zuspqpprorx||~|{x{}|zxtqqooooppopprqrqquwz{{}|wpnljiijkkmptwvtvz|yyz{zxxxzy{~{tonlllkmonnmmkjjjkjklllmotz|}|}|~}{{|ywsommlkjiijklmpsy{||}ytolkklkkklmonoqx|||zrmjhijmorw}zwvrqtwyw{~zy{zywtqlheccefjlmtvolljjhhfedb_^]_]]__eihn{}yvxz|unjhd__`_^]]^^^^]_bcglwwsrvwuu|xmhd`][[[[ZYYYZZZZ]_bekwxnmlnoos~uoomgb`b_^]]^^]]^ddhisz~}ojifea__^^\[]_dknystrty{okhda]\Z[[Z[`ipzxoh`][ZXXXZ[^bhosib]a\YXWYZ^bjwxurnnormd^YWTSQQQSUZ\blvmkfdcioxqjb[WTRQOPPRTY]bjtnihhnxqf]YUSQQRTX]co|xmlmn~tc\WSPOOPSX^fyohejlx~sh^[YYYXXYXYZY\`ejp|zoox}wnjhigdc`^ZWVURRT^ksngaa]^dvymkhhfhlnmkd_\YWTTZcguymggbci|ymkifegknpqoi_ZUTPNOZ`l{jeba^cq~ummjklv}xkb[YVSS\juqicefj|}vuxzpe\VTQPQ^jy_][^`i}yquu~k_YSQOPTf}y_]Z]_h{qtw}re\UOLLLMNWluiZRSU]bq~z{|yh[VOMMNOVfj`VTSY_oxgfejjpwg\UPMKLMOX`sd`YXX^lxu||ob]TPMMMORYbmfa\]]ktd_[VRPQRX]ennfgdhfzq`]ZYWSRRY]cezee_gbju~qmh`]ZYWVTVY_emxggbkir|ojea^\\YXUVX\_eyifahhq|~xwqlf`^]\XVTTW\_erqkcfhrwqou{pngc__][XXY[^fkmjejm{qmhihiecaekqyxtwzxsrokhfhhmr~wmoo{}xrmlhda\]^]^cfs}njefeko~yqmljlpx{tokjfdba__^__dfmwsmkkknt|}~umljkhgecb`_^]\^`fr}tnnsxzqnmkijjigdbacdgp{toos|wmjhghijhgddcbacfkstpnmps~{{zwrmkgfeghkmnnmkihgggjmu}zvusx|~ytrvz}|unmkklkmmorwvtqnonlkklnq|yv||rljhhghjnx{wqsz~|sonkhhjmou|{||{{svspw{|wrmkjkkmgjpr}wqoqpstw|~|~yzvtspomkheeghhjlpx~~|~~}}}}|wuuuutuy|~yyzzyzzyusppnjiijkoy~}|{|~||ywvuusvx|{yzzwrqnmmmnoswz~ytnmmkjiijklnqux{||ywursusv{~~}ytqnlkjlmnptxz{|{wuromnopoootrronljiihhgjmoswzyyxxvsrpqrqtwxzy{~~}|zyyvvw{}}wurqnortwuuvvtqpqropqqrqpsuvx|~~~||~yy{}}~{||xutppux{zw}~|zxyx{}{{zz}~zwyzyyyyywwuqqooqsuxy{zz}|yyx{zzwwywtolkiiijjllmooooppooopoprtvy|~{xvuuutvyyxx|~{vwxxvw}~{yuw|~~}|~|vxrwv{|{zxtstvxxzz{|yyz{{|}}~~|z||zyvronnmlmmnnqw|}}xxxz{}zvwxvvvxyyz}}{zzz||}}{|wutooopsstvvtroonnopsrstuuustrtvwyywutrrrsttuwy{{{xvzxwyyw|{{}|zxy~~}~~||}|oy||}}zvx}~~~}{{}||zxwxsuyxvuuxwwxxyvtsstrstw{~~ywyy{zz}|xy{yvuuxxusrsqqtttstusqmlllmnnopooonnmonmopsuwzywwwxvtutqooonmmmmnnnoopponmmmmnpuzyz|{{|~~zyz}z{~~~|{z||}~~~|xwvtuxvxxxy{{|wuwxz{}}~yx}{|}|xwwvuvz|~zy{}|~}{znsqnomlppqqstvutrstsuy~}{zwvuuvsroopommnmmllkklmotvuvzzy}~zy{xuy|~}||zzwwxzxxyywx{}|}}~ztuxwrsvyxww{}}wssuwww{}||~~|~}}{z}}~zutuvsusvx{{|||zyz|yw|}|x|||{xz{{zyyyvw{||~||{zxwwwvvzzz{}~~~}{~}z|{yzz{||zxx}|y{}zwy|zvuxyyz{~|}||~|~yyyyvx~}}{zwvsrvutwyxwy|{|}{{{{xx|}}~}}{{|x}|y}y~|}~{xxyww{|xtutonsvsrsuyxx{|{~|{yvsw|vxv|}zwzx{w~|yyttprusuw{zyxz|~|}}}}~~|~{xsqvwwtx|zwwxxzx{}}}~}}~{{yyyxzvursrqtty}}~~}{~~}{yxvwwxz{}|~~||s|uvrrvrorrwpstutvvzz~}|xxs{x|~}z}}}yyywywyw{yzwwssmrqssvyzy{|xx}~}~~{y||z|z|zqwotntu~|~{||}{||z{~|zxy{|~zup{s~p~rystvw{~~}}ywr{s|u~yvtyuoqoqsrsvr|m|orxojilvupoy|||o|kqutvpopmwn|rvtrpw|qysumvo|l}nzqsxwtunpmlitgfmrsknuzspo||ur~x}{xxz{~~}~z{z~{}wx{xsuu~{tuv{x||xwssll~luqutr{stqpqrqzx~~toxootkolnmmkmjojtlnmiohljtl|tz|{|{y}|yut~{x}|{uwnunqrsyqvyzv}uzwvqo}nmlsyx~{|y{}{zyx}uwv}wz~{y~~~z}xzzsr}u{t|oo|p}s~xzvv{~}wy|~xupnpmmmlklinoqrys}oyruortszs}||{~~}yytu||~~{|}z|~}{|z{uyt~|}{|zyyxwx{xxtyvyw{zzzxzuysytz||z}{ysoomnlpprtv{wyv{|ywuzrwr|{}|~~}{}z{xwuvtvyu{uzwwsvrtoutxwy{z{v|}y|z{|~zy||{usoqnplpm{{osonmlnpu{{rokhdc_^]]^]_`bdgjn{|vwz}of^\ZXXVWXXY[\^gnwujfcefkt{ic\YWUUUUUWY[^enowj``^_bgtme^ZVTSSRSUVX[]gjn{mb]]\\_eoym`\YWUUSUUUVY[derwl`^]]\bj~ri_\YWUTSTTUVX\ecwsj^^\\\`jwre]YVUTSQSRTVW\bbwvi_][[\_gosj_[VTPONNNNOPRY\bnvk_\ZXXY]fl}k`\XUSQPOOPRTW]^kw}ma^][\^emzni_b^ZYWWVWZ[`jmtgca_ablvxkd_]Z[YYXYY_fhqgfc`dgtxkf^^[[ZYZ\[ahjzjgfacfluwkf^^[[YYXZ[]hiz{fc_]\_`imuh_]XVTTSSRUVW]^eown`]\ZY[\`fn{j`]YWTRRPPQSSW\^imxme\[ZYZ\afqld][XVSTSTUWXZ_blxync^]]]^emtxmd`]\YZYYYYZ\bel{}pf___`cjsqid`^[ZZYYZ[\_fiywod^]]^_dowvld^]ZZWXXXY[\_jo}oj`^^_`dkvqjc`^]ZZZZY\]^_knzokcbdegky|nf_]ZZXZYZ[]^ciwzyokfgjiln}uqnlhdb__^^_chvwy||wplkfad___\[\\]celw}|srvst|{ytoomjheeb`_a``fmo|wwwzuzxvspqmonnmjhgdbdegksx}{uuvwx{zttmlkihieec_`__beknsy{tqnlhjjijijjjlnr~||yyz|}~zxxsnmmlljihdddegkouz}}}}}~vppmkjikiijjjlmmonqprtxz|}|~z{z||zspnmnou{|wqoosuwzz|}wwtqorvy~~}zyywuqomkiihfijlqz~vzonnkjjjiighiijlnquw{~~|{xupmlkjjkkllllmnmllonortwttxwsstsnnonnpvvw||wttsruttuvyyz{}{~}~~~}||zvvrrqrsw|}~{z{yy~zzxyxyzy{yz}~~}}|~~}}}ztpollklos{}|||{|{{xxyyustrooqtwz~~}zyvttstsrsssqqwttxvzz{|~~{vrnnkiihiknqx}{vrnnjiihggilnrv~|{yzxyzz~xtrpot|{upmljlmoovyzyyzxvwustrpqquxy{}|xqllkllklmsx}xvsvwvwtvoozrqvqx~~~}y{~z~|{{z|}ytokmntxx|{}}}}~~yronoonnnopoqqopvy~~vtronmmosuwz|~|ysrtv~wurnmlnlnnt~{womjnsy~{yx|~|zyvvroponlljjijmowyz|xutspomlijjjmosw||wsmlhigihghfihiklpqrutptz{}}z}|~}zvwxvsnlkkknmmmrz|~~}zvvqnjklmsrv~|}~zyzw}{uportxxz}yqnomkjnt~}~}}~|z~xvvzww~}xpnmlnnrru}~uu{~}{|~zwutwuyvyqoloronmqosuvyzwv{|wrqswzzonquzx}~{onoppuw|||somorswz|upooptx}}xsqoqrssv{z{~xrtrxqxy}vrox}xomklknqvy~{utsuwtytyy|{z|~~}~|ynigc`_`dgggmt{tnnkihkmmnmuz~|wvvurommmrv|yssu{z{vxwszxz~{{zxv|zrmljiikovz|}}unjfemhfjmsy{}|y|}vtomihinpotw}~}~zyxzxsu|~{|}~}ww{~zz|{{}~~|xtportwttrv|{}ysttsrqswz{|~}rpmnu|vpmklntz}xpoonrsy|}x|}}}zsonkjknqx~~|{vonlgihikmmowyuzwrmmnmmnsty~~|wvoou||tljkmqqtuy~~zttwvtuw{zx||{y|z}}~}}|~}~z{}{uvyvu}{uuvtzx~~~~~|{urwwztmllntwy{}wzwupoosxxyysnlmqonoyz|}~|{~xwpqnnlommotw{y|xzywxvvu|{tqoss{|vvx{swvwuqqnmnpy~wrposoonrwuyy|yzrmoqvv{wvwvxz}{z|ytmmlllotzuqqonkovz}uomllnqqsu~vvvrommonnnoonouxzxvvursov}yywwz{~~}y{w~}z~}}z{{}}~wzxz{y{{|{xtnlklt|}zvqpqqrrz}}|}~||xvwyz{|{~}zztomkklmmnmmmmklnstyz}{ttw|sooooryyxxy{xwvxwvttstqonmknpoqtqmmnoooqspponoqutsspqnroqpotvwx~zywxxvw|}prmkkigmnpsosw}|zookkkllllfchmr{womotnjeab__agq~|tzoqvyw~yzzownfb_^]^^fxzvvijjnox}~{pkq|mib`^[Z\cmqmjojurpmtv{~{x}ywqtt|nc`_^]Z[]fh}rovlvrqmigb`a^__hvuxwrznx}tlflhf`][\agynlmkxoxx|pmzlzou}tgd__^]]ZXY^cljemgvovgdrxpzmx}}~~zlhdea_[Y\`k}sjum}w{~~zoifehhjgeflo|sl}q}vsxqleab^^\]^ck~wmz|qmmkgdkgga`^bf~hfhsjvpsz}vsx~spjb^]\]\VWVZZ|b_^elkyvcosu{iugtrvz|upr{{uuebceda\\[ZZ[_lmiboo~j}{|us~~zzsrohea__]\[[^ctvjkvxzyyk|w{ywric__h`ecgkzrpqs|xvstqnee_^\_e~vrljfeadgim}wpnvo~}y{xmld`c```ei~{mkq|}|}wwwvsnnnle_]\]`fdiuynv~}y}nv~~rnlnqha]][XXXY_uzsuxtz}~soospg_]\\]\Z\`ntmm{|{|myxu|{~sokfa]\]_drop}u|}xoopsliefc_]Z\_iojinopozu~vwtohc^_]^ZXZ_ivopuyx{wnhiiig`]]f}{zwysru|{~|sjijie_\^bci~|~u|zuomkkgdcabahrwprxs{y}~}wyyzxtnqvpxmlhjkljxzotz}vy{|xwvtvvnkgfgge``cjxzxzv|zuplnnqvwxwvwvqnkfghksw}}|ypnmsyskilkmmnnnrry~}{tuy~polmpoolposrsst}yvrstysv~uuqnwzwpjkjjjios{tliikklmmnqsy~}}vw{{ursz{tstopnovz}|xwnkjkmlsyy~{||~x{}|{~zvw{~~zxw~y|y{}{s~~tqorusonssuvvuwuwnnlmmlkhkjlknsstx}}zzxuuvzuzqljjjhkmmpuytuuprqsoonnlmihjollow~~|yy|}}}zuxuuquzy||}}|t}~{vrtry{z{y{}~}wtv{|wvtzv~|{zuouvyy|~}~}}{}~xuxuyx|~|{}~|}|tspmnppopponqt{z}}{~~~~wzyy{xsqmjlntqotx}zwvx{|zyquoqkkihkknlortvrw{{~yutttwporwxzyzvyz}~ytv{y}{{|vwv|}}~|v}qwqoooootvwyywx}y|{}{}~~{~||~}|~~{xuuxy|z~}|||w{}|yvrtu}||}}y{xytrooqnpmqnoomooys||vzusokmkmkijlomonrtpqpqturupkjjmkmlvywyy}~~z{wwvx|zxvvxw|{~{ytswzzvusssrsy~{}~}|~~|}}z~}xvyvxty~~z|y}z~~~~~{zvrptvsrty{zz|uonomjljmlklntuxtzz{}yqomlkjkknssyxp{yzz~xrtvvspsvz~|||yx{~~{x~}|{ywz|{~}|{ywuvy|{~{yvqropnqqvx||{}|~yuvuwuxxzxwssy}{zz|wxwttrqsqrqwwpopttopqupoonpnnorqnqrstrpqy{yxwtuttrvtuzzyprsyssqssnmlooqppooopvw|xzzswuvxwxwvuxzxxwwvwy{}{|zxvvwtxv||z}xzurpquw|yzz~{xxsvruty{x|y{y~yx{{}||{|}}{~~~}}|x|{z}|}~}~{|||}}z{{}}}~~~{y{~~~|{|y{|zxzx{vvrrspvu~wvqsrvuwyv|xxzvvtwz{}z~}~wyywxww}}ztoononsvx|yyttsswtyy~uvywwuurvqqstwxxww|zxvuuuvvvxtupnoooquuvqqsolknprpnpoqprswzzyxyywzw||wz|}xywy{z~~{{uxtsrnspuoqoqposu|}}~{|zy}y~~~}|}{~|}{~~}zspooopqu}wvosqtpprqstxy~}~}xyuuyz}xtqomkiiikmoty}z~~z||{z{tyxz~~~zwvrqswx|}~~z{|~x{uvzvt||~}}{x}}{zx|wsoorqpooponnuwxyy~}{y}{vtppsnpvz{|~}{{~}~~xxtwstxuwvzz~zux{vrvwvstvvz||||z{yttuvvyz}~|}|ywvuy|}}~~xx}}~~~}|~}~xvuuy}|}z||{{}~z}~vtyyx|zuvpnpnwuux{||wwzvtvxsuutryzvxzzzx|~vxxzw{~||zywsrqqtxwtwzwx{}~yxvuuvwuxwxuxxy}|}|{{}~~}uzxxvx~~}|}yxwyyw}{}~~yspoopnqtw}}z{ywvtrnmnopoqoqqooorononnnooqrqqusqstw|wtw{|y}xxyytssopoopuzzy}zvuvtpvqsvutrxpouvwuxzz~}{y~~|{zwtwytw{~~~{z}}wz|y{z||~~~~}{~~~~}~~}|}~|~~~{|zyuwu{s~}{|~||~|y{~~}}wyyxx}~uttvs{w~~|x|yyw}|~{}|{}y|}|}|z}x}xz{vr}{y}v|vztxw~z|w{uzn}rvwo}nxm{rzuxvzryq{uvv{{tupqooozq}uwsvqps|x|{|~w~uzwvswovlvloooqwvyqnlosot{~|yx|x{|{{|~y{v{~~}zw{{}vvxr{xzx~v~wzy~~|z~}}{~yw~q}x|ooov}{yu|}{~r}u~}~|uvqonmpsootouovwwzxxxoqnmoltvwuqoxrxpu{{zrwyw|{}|x|}y{tz}v|xtz~{~|x~|}{~}yy{|zxvrlkjigfiggefffgilnu{zw}ojjc^__b^_a_`_`caabkvnqloibhlvv~wonjhijllmonlie_\ZXXWVW_gcxh_[_]]_i~sififilrvy{z~rje`^ZUUVVU\jkyjd[]_`em}zqnw}xld\XWTQOPTY\ejd^Z[Z]gtvonjoqvsic\XTQQSSRW\bi{ia^\\]am}{z~}jb]YYVWVVY\^fgmyojfflpvxmifcaccaa_____ciokghlr{mmmptld_^_^___a`_^^]]_`o|vmginz}omttyna^]^[]]^^`_^\\[\]et}}tokjqxtmiilnrga\]\^_efjjiea^[ZYZZfnsjfb_`emvfdfm|oicbdglmvqyrng_\WXVXZdwld`__fmwj`]]_jz~meb_bfny~pc[VSRSW\jla^]_iusga`exshbaacfnwzmb\VTSUX^ssc\Z[^hw~md_^`ltf_]^`fmv~pe]XRPOPTYa}wf][\_ijb]^_jzwh`]]_dm}l_ZVSSUX^lqf_^_fvleacjyqjcbdioqg^YTSSW\iwjeehnvlhhmxwokmnzxxle^[YXXZ^h|xjc_`donideirwlfdbdhmszxle_[YWXY]dozka]\]`hqtib^adkysleb`behmossqlhc][YXXY]cm}yja]Z[\cj}vjd^`^dkuxliabaegjosxvwomea]\YZ[_fuvljkms{spv}}vonmmorwx}yvslieca_djs}}otstwokjhikmvy}ztqjrkiknsopq{zuonmllmnopqqspoonlllnq}~zsmkklnsx~yuonmllmmnllknnspsnollmoqz~{troppsw|~wzllnjkljjklnovvxuutrstvwvsnst}~{usqtw|~}{vrropoonnnosqsssrtonllllnntst}{xxwx}~~ywuqmjmmllmoqvz~{wwwsnnmmmnoosrvwrupronmnnlmllmmqu~~z~||wytrxvxz{zzvxxwwyzy|~~~}~{yyvxuruonmlmlnlklkkjlmlmnostz{~}~~~|trpmoootsuxy~{|}xzzyxz|~v~~}}|}y~{~}{yz}|{{||ppty{wsrotxxwvspttnnoosw{}|wyy}y}~~~~~zy}u}|~xuvvrrtpytxwstqrpnlkjkkmqv|yuxqvyywz{wtonmmnqpopopvtzyz}}zwtoolmnklllmmnmkmnrvt|yx~yrnnllhhiiiikkmopopqpqqootuz{{{}~{|z~||~}{z|~~|z{}{}yx{~|~~~~z}{}~~~~|}~~~ywww|}{wuxz{yzz{{{zxvtsuvuuuvz{~~z|{{zxz}}}|{~~{zzz}~~~}}{z{{~|}~}||}}zytrnmmlmooppstutv{{|zywzywxuuuuttsrpnnmnnopuyxxxzyz|{uqooooprwwtuvwvtsvuvyzzz|}|zzvuronnmmjlmmmnnnnnpoprpooporrooqrppqprtwz~|{~}~~|~~~~~~~~~~~~~~~zxxwyywvyxz~{zyxvw}|{}~|yw{{|~~~}~~{wy|}|~~}~}{|~}}~{zzz||{xzyz{~}{||~|ywuvvvvttrqpqstuy{~~~~}~}|}{}}}~{|zzz}~~{zxzywxxww{~}{{|{}|~|}~}|~~|}{zz}~|xtstuwxy{zy{}~}~}~|zz{z{||}~}}~~}yxz}~~}}|{}|~~||z|||{yvtssrpoquxwwz{yxyzyxy{{vqrspoooqstuvwwy||}|{zyxvwxwyxspopopqqstyyyxxxy{{|{ywtrponmmmnoqrtwwyzxyxxyzz{|{z|{{zwwwvwxz}yyxx{z~}|{{zyzzz{|~||{zz}~|yyxuxou{x~}x~}|xvssuwxxz|~}{vuponmnprux|}{wsrqqooooqsttuwy}~}}}~yy{vrtrqpprtttrrsutsuvxyzzzyzyxvxxyyyy{||}}|}~}{|{x|~~}|}|}~|||}~~}|yxy{~~~}{zzy{}~}{zzxy{~~}~~~~}|z{zyx{zwwwxxz||~|yzxxvx{zx{xy{{{}{~~|~|}zxusnusutwvy{}}yzxvvwxwwz}~~}|{|}|zzz{{|}|~}}~{||zy||z|~~}~|}|y|{zxyzypw{x}}~~|xvvutx{{yvwvuwuuruwx{}~~~~~yvvvxuwyxywwusqpoortvw{~~zxwutvwuusruwxtswyy{~{{zwtporpnpuusprzyuvz}{{}~}yvzzwruzzxwy{{yzzzwx|{vsvxwtu{||{y{vuz|{|~~|y{~|vyzxsu|{y{~{wwx|ywy}~||y}~~z~vyoylq~pvxzy~|vprromylwztvropirshwmso}oykhlubnvf|qouzoomzlz{s|nssqp~ippg}tt}yws|o{uljokz|lvm~ikmbgltiusjkzpopozn|prqkvgtlfudxhmqkjxwjojm~~hm~llwy{x}{{vywwtz~wz|wo}|t||y~{yw|xyxztx{z|wzs}spyzzymrt}yw|{yx||||z}{|v{upvwnynuspwo~x}}{|{vmywywspzzsvy|u}|q}v{s}n|wx~w}rzt|nsyw{{yx~o|}psruz}wu~ss|ssvmunoum{mrvxv~tw~snk{kot||ov}}{z{|{|~|ro}|}|u|q}~vxy~z{{{z{v~zqnstporsoornwuuuyz|mzytvszm|n|ou}sy|}ztvmov{nvpl|o~yr{}}su~lnnryt}q~w{}y}ovx~mluftuy|x~}~~ry~o~spqqmuux~}yxzqmxkrqovzpw~ttyxwtjwqzvmtmm}nmvvtklytll~jtupmg~qwvmmo|uurmhrudzn_bttjso|no}s{muzwjlmjt|iw{it}~|o}ulsa}gpttx|m{v{}z}otr~~y||~zrtuw~}urr}w}xy}|z{y~zr~z}tzotyxwu}w~||s{zx|znyqnzpytzv~{wzxousrntsq{uqz|~~w}zxrusmrqjmpkvutuyunonoontopyp{}}}~~~zz{}}~wxvtnomkmkjiggkikmnvxvommiba_b^]]\\\YYZ[]_ggtsolhijkou||zuypr~tnmggd]]][\[[]bklqoicghhilv{ztuoqvsplkhb`]Z[YYZZ^hkrojjjklnxzwtrwvqqnljhba_\ZZ[\cikzzmkoosy}ztrv|}yssvpljheb^]^_cjny}tjimmv~rnnknsonpmnjc`^\\YW[[^dckwojdb__fimt|rkkkkjhlnmmlkkf`^ZYXWVX\`bgstnhd^^chnt~}mnqpmilrrnlnnic][[XWWY_dguwmha]_dkqvrmkjjfeikollnkga]\[Z[Y^ehvthgd\]ahswlonkjeihdedcb_[ZXWX[aiquje__chprqnkkjmtonljjd^^]]^^cosxkec\\_blxxvrtnnjuyjhcaa^\\]^^euukgbbgkv~zusrljg`]ZYYZ[^io~pgd_]agpzsruyzxwxphe`]\ZYY[]hs{kc_\Y\_fswolgegjmmlotrkb^ZWURRU[afv|j`^\Y\_gs}xrjeaafjjknnmif`][YYWY`hrrmldadhn|ywsnmqtyusz|umecc_]^fnvtomjikq~ummnswv}|wnid`__]bjpznkq|}uppsu|~|tme`_^\[[\__`eltwuv{}yrooqx|z|zvsnlsytjdcaa____^beeejr{}x|xxwxy{|rnjjmiikptrr~yponmlkkljkns}zvqtwzzwsomjgggfedgiknou{~}}{u{xz|~~}{}~yyvyxplkkmlmnt}{{{~{}vvrqwvqqqsztrqttonmrwx{{xxxwty}ywsqvx{}}|}xwuptposupqrxxvuspqooux{}zyxuxwwx{~}z{y|}{{}xzxtvsz~{|uvywvomosz|~~|}zz}~ytwspnmnprtvryy{~~{|{|||{}{rqpnnjkkkiggihgfgkntyz~}{zxvwxy}{{rvzwzxxvwxzyyxxwxwxttsuuxz{|~}{vsommlnoqsvwxz|~~}xwusrqqsvx||}}||||~~|yuywwqozwvyuy|wuqtqnnlkkkjjkkmmmnrw{}~~~|}{yuurrtssrqpprrssvvwxx}~}ywy||||z~~zxvuusuvz}~~~~~~|{}}}}|{{~~~}ywxwxxyzz{|}}~{xyzyyuwzz|zwtqqomlkkllmnnnnnoopqrrstvxwuutrrrsqommnmmllmmlllmnnnmnnqrwx{vzux|y{x{{}|zzxyz|~~{yyxxyz{|~}~~}zxxxxxx{{~zxz{yssvvwvyx|}|}~~}|zzzwuvtsttwvtspoonnlllkklnooopsvx{}~}|ywtrppoqtuwx{yyyvurqqppruuvuuxy{}~|zzwwyyzy{}|}~}}{z{yxz}~~~~~||{{|~~~{{zzwvuwwwvxyyyxvtrrursrwx|{yy{wwxwwxyxyvvuvuusqrrqonnnmmmnopqttuuxy|z}}||y{{}{{zxvtssrrssttutwwxyy|~~}}zyvwr|~|}{{yzz|||~~~}}~}}~}}}}zyz{~}{|~}z{xttqonnnoqvwyzyvtsttsrpqpponmmllkllmnnooonoooopsvwywqoonnnnnmkklnmmlmnmmnoqqrpopooprssvyz{{{zyz{|{zzzz{{~~|||}~~~~~|{~~~}|~~~}{yxz|||||~}~~}}z{|~~~}zxvtvvwwwwzyyyz|zywwyz}||}|zyzzy{{|}}|}}||xx{}|{zzzyyzz{z{zxxvwwx|~~||{z}}u}vxy}|~}|||~~~{zzz|~}rtz{~z||yvutwyttvxvuvuvuttttsu|{xwyz{z|{{xpponnnnnnmnqrpnnmmmostvtuwwuuuwvtuuwvxyxwvvwwxx{~~|zzxxxuvxz|}}}||}~~~~~}}}~|}}}}}}~~}{{|{|}}~~~~}|}~}}}}}|z{|~}~}{~~}}zywtvvrppqrsrrrrswz~~|ytsrqrprqpnonxu|~|z{zz|}~}}}}~}}}|{y}}}}}~|{}}{|~~}|~}~~z{qs}{z|}{}zxyyz|~~|ywvyy{zvyywvxx{~~ywwxxtpoprqqrsuvxwwxz|~|~|xwvwvwuuttrppqnnnoqswxyy{yxwxxvrpopqponmlijjlnootuvvxyywyxxwxz{|vuvxyywwuuwz||{{z{~zz{|{{|}zxwywvrsy}}~}zwttustrstvuquwxwy{}}{{z{yvwuuvyx~~~}}~~}|}~}}~~}|{zywvssrvy{~~|yxy|~}~|zxvtuyxwy{{}|zuokjkmorvyz|}{soononrwz}|xyou{wx{x}~yussstvxw}}~{w{|}{wvwtvuuy{}}zxwwxzxy|}}}||}}yzz{||}}}zyxxxvwuwz}|~}||||{zyvvwtstvwz|{z}}~|yxwxxy{|}~~{}z{z||~|}~~~}|z{zzyzyx{{{zy{z{z|}}~|xvxyxwy}~}~zxvrqqttuy|~|zzyvutommmmnqswz{yz~{zzzysrqprtvvvwz~~}|zzyyxwvvx}|~|{yyx{}{xturpnnorttsutvuvy{zxxwvsomojjkjlnkotvwvvyzwvuwwvspoonlljijlnooprsx{}{xuusrqqqomlmommnpty}}~}~|zvsrqqorrurqpoorv|~}~{zxwvvxz}~~}||{|~}yuuxz}}~~}|yuqoopqruxz}|}}}{yyxz|~|}||||{xwwzx{|xuurqqrrqoopqstwv{|{}}zyzzzwusrrsqpoonmprrx}}ztrsqssuxwwvsqoopqssuvyzzzxssrrqqrqtuutttvyyz||||}|~}}|}~|yxoturxzy}}||}}zxspmlkkkjkmnoooppqtx{~zzzzwxxvvvxzyyz|yvw{|{}||{wxwwttywwxzxupoonoty~~~{|}|~}}zz}}~{wvuwxxzxyyvrtz}|wyzy}}~}xxtqqoosux{}}}{|||z{yzxy|||{y{|~}{yxvsrtxzzz{zy~~~y}|~~~}{yxxzyz|~zxvw{~{yvsosuuxvvxtqonptwy{||z{ywvxy|~~~~ysrqpqnoomlnrx{}zxxyyywutuvvttwuxy{z}}{~}zyvz|}~~~}}}|ywwuqooppruvwtrqommmlkjjjkkklmnooooooqomlllkklmnmnnooopoppsuuusrrsonnnonlkkllkllmmmllmmooprqqqrrqoosqtsstwxxz~~z{|zzxx{}~~~}zz}~|wxv}|zuwuuttwxzz}~||}~zwvsmknoqoosuusy~{{}~}{ywzzwssy{xx{}{xz}{{{~}{}}ytuvtsvy|xz~}||t{|wz{v|~{|uuxonosywuxx{yyz~~|{~zw|}}~~{xwwxwzz~~|}z}}}~~~}xtrpqonosqnnrusswyuqruwtuxz}{{yywsqnomnropqtusqqpoqqqrttvtu{zwvzywwxzwuvxxtrutrpppqooppqstzxxvwzuww{yy|}}~||zww|}wy|||yz~zwv{|}~|~~||~|{|}}~}|}~}{yxtvz}xz|~{z|~}|}|}{tooonooqqrutstsssqrtttvzzvxy|}xvxs|ztvupurotsurrssrtuupoppronmoqonnrsqsqqqqqoopvxqswyuonqqtssxxwx|{wuz}{y{||{wrtxy|{~~~{zzy~|xxtwvxuqvy}{vvz{~{~}~{z{yutsvyuqosvz}}~|{||~{z|~~~}}{yz||x||xwz}~}zzxyyw{{{xvtsuvvz{}}{x{{yx{~||~ywvuwtstwywyz}}}~}{vwxw{x{zz|zuwwrrrusw}~}~}{{~}}|{zz{~|z|~}|{~}z||~~}}|w{vtrvywstv|}~~zy{~~ysoonoononmkknqrtuwzyz|zyxxwz{||zxtroooopprssu}~~|}|wx{|~}{{{yww}~~}~}|~}xx|}|w{~}yy{z{{~~~{yywwxzzuqtsrpqsqqpooprsspruuwuutqoonmlloooosxzz|~|zuqppoooorw||}{~~~~|{}}~}{}~{{{|}}}~~}|}{||~~|~{xxyzxvwuxy{}|z~}~~{yyyz}}~||~y~{~zyy{{}|~}{ywx}|zxvvtqpquzwxyzzy~~z|~}xyz{||~}}~{|}~||}{|~~|}~~}}zxy{{~}}{yz|xuxtusnmmmmmonmllopoqtusopquvz|||~{xvutuwwuvsuqoqonnorqruuuwtux|}}}~{yxxyxz{}}|z|~~}|zyz{yz{{|}}yzzzzzxwx{~}|xvwwxwvxx{|{~~~}~~}|~}zyz{{yw|~}zyvwvvvx}|}~~}}|}|~{z|}~~}|~}~~}}~~~z{|z{z{|ywvxvwuuzyxwxwwvusrqtsponnnnooopsststxz}{ \ No newline at end of file diff --git a/star_lock/ios/Podfile.lock b/star_lock/ios/Podfile.lock index d9f86221..962d06af 100644 --- a/star_lock/ios/Podfile.lock +++ b/star_lock/ios/Podfile.lock @@ -38,6 +38,13 @@ PODS: - device_info_plus (0.0.1): - Flutter - EMASRest (11.1.1.2) + - ffmpeg-kit-ios-https (5.1.LTS) + - ffmpeg_kit_flutter (5.1.0.LTS): + - ffmpeg_kit_flutter/https-lts (= 5.1.0.LTS) + - Flutter + - ffmpeg_kit_flutter/https-lts (5.1.0.LTS): + - ffmpeg-kit-ios-https (= 5.1.LTS) + - Flutter - Flutter (1.0.0) - flutter_native_contact_picker (0.0.1): - Flutter @@ -107,6 +114,7 @@ DEPENDENCIES: - auto_orientation (from `.symlinks/plugins/auto_orientation/ios`) - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) + - ffmpeg_kit_flutter (from `.symlinks/plugins/ffmpeg_kit_flutter/ios`) - Flutter (from `Flutter`) - flutter_native_contact_picker (from `.symlinks/plugins/flutter_native_contact_picker/ios`) - flutter_sound (from `.symlinks/plugins/flutter_sound/ios`) @@ -139,6 +147,7 @@ SPEC REPOS: - AMap3DMap - AMapFoundation - AMapLocation + - ffmpeg-kit-ios-https - flutter_sound_core - FMDB - GoogleMaps @@ -165,6 +174,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/camera_avfoundation/ios" device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" + ffmpeg_kit_flutter: + :path: ".symlinks/plugins/ffmpeg_kit_flutter/ios" Flutter: :path: Flutter flutter_native_contact_picker: @@ -223,6 +234,8 @@ SPEC CHECKSUMS: camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475 + ffmpeg-kit-ios-https: 9e50ffa7eaa6272a0021829e054ef241f2ecffb2 + ffmpeg_kit_flutter: fb5bee3a6038231463ee99e30f97a5763e0ae40f Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907 flutter_sound: c60effa2a350fb977885f0db2fbc4c1ad5160900 @@ -249,6 +262,6 @@ SPEC CHECKSUMS: video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126 webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a -PODFILE CHECKSUM: adf6d8caf5faa9ea4ee2a2ea37f5aea37a6520d7 +PODFILE CHECKSUM: 42aa7ffc6134b996f93caa6a9b6a2b5b580ff28a COCOAPODS: 1.12.1 diff --git a/star_lock/ios/Runner.xcodeproj/project.pbxproj b/star_lock/ios/Runner.xcodeproj/project.pbxproj index 382e887c..a756cc4c 100644 --- a/star_lock/ios/Runner.xcodeproj/project.pbxproj +++ b/star_lock/ios/Runner.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3364C3F42B0C902100AA5ABC /* lcokStarMain.png in Resources */ = {isa = PBXBuildFile; fileRef = 3364C3F32B0C902100AA5ABC /* lcokStarMain.png */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 3EF1E85D6F1EE0C0DCF8449F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09D8B2FA2B26BA5BFF31AB2A /* Pods_Runner.framework */; }; 8297E4102AE75AC500E886FA /* XSFlutterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8297E40E2AE75AC500E886FA /* XSFlutterManager.m */; }; 8297E43A2AE75BEE00E886FA /* Msg.m in Sources */ = {isa = PBXBuildFile; fileRef = 8297E4132AE75BEE00E886FA /* Msg.m */; }; 8297E43B2AE75BEE00E886FA /* udp_data_class.m in Sources */ = {isa = PBXBuildFile; fileRef = 8297E4172AE75BEE00E886FA /* udp_data_class.m */; }; @@ -125,6 +124,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + CD1142BE3A076363977FB03C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED1F1A04428235FB1B6FD471 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -141,9 +141,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 09D8B2FA2B26BA5BFF31AB2A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BEB3ADCCEC961E2916B9004 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 265F8968B3CDB02494B21491 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3364C3F32B0C902100AA5ABC /* lcokStarMain.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lcokStarMain.png; sourceTree = ""; }; 33BF41252A96174D009D92E2 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; @@ -303,9 +304,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 99F6494C6B1A24363CCC6D32 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - BDB5B400176768766E85D5EB /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - DC20461C9C4624BEB2DCD779 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + DAD8EE71BE7C05B99667C256 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + ED1F1A04428235FB1B6FD471 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -313,7 +313,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3EF1E85D6F1EE0C0DCF8449F /* Pods_Runner.framework in Frameworks */, + CD1142BE3A076363977FB03C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -323,9 +323,9 @@ 780FAA17A040B9755AD6154A /* Pods */ = { isa = PBXGroup; children = ( - DC20461C9C4624BEB2DCD779 /* Pods-Runner.debug.xcconfig */, - 99F6494C6B1A24363CCC6D32 /* Pods-Runner.release.xcconfig */, - BDB5B400176768766E85D5EB /* Pods-Runner.profile.xcconfig */, + 0BEB3ADCCEC961E2916B9004 /* Pods-Runner.debug.xcconfig */, + 265F8968B3CDB02494B21491 /* Pods-Runner.release.xcconfig */, + DAD8EE71BE7C05B99667C256 /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -565,14 +565,6 @@ path = img; sourceTree = ""; }; - 9304F75C378DB3447BB2408C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 09D8B2FA2B26BA5BFF31AB2A /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -591,7 +583,7 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 780FAA17A040B9755AD6154A /* Pods */, - 9304F75C378DB3447BB2408C /* Frameworks */, + B8F749EDCB3FB55CC9253F00 /* Frameworks */, ); sourceTree = ""; }; @@ -635,6 +627,14 @@ name = "Supporting Files"; sourceTree = ""; }; + B8F749EDCB3FB55CC9253F00 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED1F1A04428235FB1B6FD471 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -642,14 +642,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 03BC065FC3064C0B6EE97546 /* [CP] Check Pods Manifest.lock */, + 818C8F3353996877C27F8ACC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D9B107A6B141D5F15BC356F2 /* [CP] Copy Pods Resources */, + 8AC988DFB36B18C3A52624A8 /* [CP] Embed Pods Frameworks */, + C87CD71185302EE14BA1323E /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -783,7 +784,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 03BC065FC3064C0B6EE97546 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; + }; + 818C8F3353996877C27F8ACC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -805,21 +822,22 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 8AC988DFB36B18C3A52624A8 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -836,7 +854,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; - D9B107A6B141D5F15BC356F2 /* [CP] Copy Pods Resources */ = { + C87CD71185302EE14BA1323E /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1106,6 +1124,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_INSTALLED_PRODUCT = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; @@ -1355,6 +1374,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_INSTALLED_PRODUCT = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; @@ -1498,6 +1518,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + STRIP_INSTALLED_PRODUCT = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; diff --git a/star_lock/lib/main.dart b/star_lock/lib/main.dart index f8a8dc1f..0912cfb7 100644 --- a/star_lock/lib/main.dart +++ b/star_lock/lib/main.dart @@ -5,8 +5,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_sound/flutter_sound.dart'; import 'package:get/get.dart'; import 'package:star_lock/talk/call/callTalk.dart'; +import 'package:star_lock/talk/call/g711.dart'; import 'package:star_lock/tools/app_manager.dart'; import 'package:star_lock/tools/bindings/app_binding.dart'; import 'package:star_lock/tools/device_info_service.dart'; @@ -52,6 +54,8 @@ final RouteObserver routeObserver = RouteObserver(); class _MyAppState extends State with WidgetsBindingObserver, BaseWidget { final _aliyunPush = AliyunPush(); var _deviceId = ""; + // final audioPlayer = AudioPlayer(); + final FlutterSoundPlayer _audioPlayer = FlutterSoundPlayer(); @override Widget build(BuildContext context) { @@ -130,6 +134,8 @@ class _MyAppState extends State with WidgetsBindingObserver, BaseWidget { // Uint8List uint8List = Uint8List.fromList([]); // CallTalk talkClass = CallTalk(); // talkClass.getAVData(uint8List, 90); + + _initializeAudioPlayer(); } //初始化阿里云推送 @@ -158,6 +164,54 @@ class _MyAppState extends State with WidgetsBindingObserver, BaseWidget { // }); } + Uint8List convertToInt8ListLittleEndian(List intList) { + List int8List = []; + + for (int intValue in intList) { + intValue = intValue * 2; + // 将 int 拆分为两个字节,采用小端序 + int8List.add(intValue & 0xFF); // 低 8 位 + int8List.add((intValue & 0xFF00) >> 8); // 高 8 位 + } + + return Uint8List.fromList(int8List); + } + + //音频相关处理 + Future _initializeAudioPlayer() async { + await _audioPlayer.closePlayer(); + await _audioPlayer.openPlayer(); + await _audioPlayer.setSubscriptionDuration(Duration(milliseconds: 10)); + + List pcmBytes; + + String filePath = 'assets/s10-g711.bin'; + + List audioData = await G711().readAssetFile(filePath); + // print('读取711文件数据长度为:${audioData.length} 数据为:$audioData'); + if (audioData.isNotEmpty) { + // 在这里处理你的音频数据 + pcmBytes = G711().convertList(audioData); + print('转换pcmBytes数据长度为:${pcmBytes.length}'); + _playRawData(pcmBytes); + } else { + print('Failed to read audio data.'); + } + } + + Future _playRawData(List rawData) async { + print( + '啊啦啦啦啦啦数据长度为:${convertToInt8ListLittleEndian(rawData).length}, 数据为 ${convertToInt8ListLittleEndian(rawData)}'); + + await _audioPlayer.startPlayer( + fromURI: null, + fromDataBuffer: convertToInt8ListLittleEndian(rawData), + codec: Codec.pcm16, //_codec, + sampleRate: 8000, //tSAMPLERATE, + numChannels: 1, + ); + } + @override void dispose() { WidgetsBinding.instance?.removeObserver(this); @@ -189,4 +243,3 @@ Future _setCommonServices() async { await Get.putAsync(() => DeviceInfoService().init()); // Get.log(PlatformInfoService.to.info.version); } - diff --git a/star_lock/lib/talk/call/callTalk.dart b/star_lock/lib/talk/call/callTalk.dart index 97b6ea57..381391e4 100644 --- a/star_lock/lib/talk/call/callTalk.dart +++ b/star_lock/lib/talk/call/callTalk.dart @@ -1,12 +1,6 @@ import 'dart:typed_data'; -import 'package:convert/convert.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_ffmpeg/flutter_ffmpeg.dart'; import 'package:flutter_sound/flutter_sound.dart'; -import 'package:get/get.dart'; -import 'package:get/get_core/src/get_main.dart'; -import 'package:star_lock/appRouters.dart'; -import 'package:star_lock/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart'; import 'package:star_lock/talk/call/g711.dart'; import 'package:star_lock/talk/call/iFrameInfo.dart'; @@ -46,7 +40,14 @@ class CallTalk { if (bb[61] == 1) { Uint8List g711Data = bb.sublist(77, bb.length); print('dinglingling bb.length:${g711Data.length} 音频数据来:$g711Data '); - Uint8List? pcmBytes = await G711().decodeG711ToPCM(g711Data.toList()); + + List pcmBytes = Uint8List.fromList([]); + try { + // 将 ALaw 转为 Linear + pcmBytes = G711().convertList(g711Data); + } catch (e) { + print('Error decoding G.711 to PCM: $e'); + } print('PCM decoded data: $pcmBytes'); @@ -56,7 +57,6 @@ class CallTalk { } else { print('Error decoding G.711 to PCM'); } - // 在这里处理你的 PCM 数据 } // 视频数据 else { @@ -142,15 +142,14 @@ class CallTalk { await _audioPlayer.openPlayer(); } - Future _playRawData(Uint8List rawData) async { + Future _playRawData(List rawData) async { await _audioPlayer.startPlayer( - fromDataBuffer: rawData, + fromDataBuffer: Uint8List.fromList(rawData), codec: Codec.pcm16, numChannels: 1, sampleRate: 8000, whenFinished: () { - // 播放完成时的回调 - print("Playback finished"); + print('Finished playing'); }, ); } diff --git a/star_lock/lib/talk/call/g711.dart b/star_lock/lib/talk/call/g711.dart index c3ab0ee7..0d9aca8f 100644 --- a/star_lock/lib/talk/call/g711.dart +++ b/star_lock/lib/talk/call/g711.dart @@ -1,89 +1,111 @@ import 'dart:async'; +import 'dart:ffi' as ffi; import 'dart:io'; import 'dart:typed_data'; -import 'package:flutter_ffmpeg/flutter_ffmpeg.dart'; +import 'package:ffmpeg_kit_flutter/ffmpeg_kit.dart'; +import 'package:ffmpeg_kit_flutter/return_code.dart'; +import 'package:flutter/services.dart'; import 'package:path_provider/path_provider.dart'; class G711 { + Future> readAssetFile(String assetPath) async { + ByteData data = await rootBundle.load(assetPath); + List bytes = data.buffer.asUint8List(); + return bytes; + } + + int ALawToLinear(int aVal) { + // 取反 + aVal = ~aVal; + + // 计算偏移 + int t = ((aVal & 0x0F) << 3) + 0x84; + t <<= (aVal & 0x70) >> 4; + + // 根据符号位决定返回值的正负 + return (aVal & 0x80) != 0 ? 0x84 - t : t - 0x84; + } + + List convertList(List aLawList) { + // 将 ALawToLinear 函数应用于 List + List linearList = aLawList.map(ALawToLinear).toList(); + return linearList; + } + Future decodeG711ToPCM(List g711Data) async { + // FlutterFFmpeg flutterFFmpeg = FlutterFFmpeg(); + + // Save G.711 data to a temporary file + Directory appDocDir = await getApplicationDocumentsDirectory(); + String g711FilePath = '${appDocDir.path}/input.g711'; + await File(g711FilePath).writeAsBytes(g711Data); + + // Replace with the desired output PCM file path + String pcmFilePath = '${appDocDir.path}/output.pcm'; + + // Run FFmpeg command to decode G.711 to PCM + // String command = + // '-y -f u8 -ar 8000 -ac 1 -i $g711FilePath -f s16le -ar 8000 -ac 1 $pcmFilePath'; try { - FlutterFFmpeg flutterFFmpeg = FlutterFFmpeg(); + final session = await FFmpegKit.execute( + '-y -f u8 -ar 8000 -ac 1 -i $g711FilePath -f s16le -ar 8000 -ac 1 $pcmFilePath', + ); - // Save G.711 data to a temporary file - Directory appDocDir = await getApplicationDocumentsDirectory(); - String g711FilePath = '${appDocDir.path}/input.g711'; - await File(g711FilePath).writeAsBytes(g711Data); + final returnCode = await session.getReturnCode(); - // Replace with the desired output PCM file path - String pcmFilePath = '${appDocDir.path}/output.pcm'; - - // Run FFmpeg command to decode G.711 to PCM - String command = - '-y -f u8 -ar 8000 -ac 1 -i $g711FilePath -f s16le -ar 8000 -ac 1 $pcmFilePath'; - int result = await flutterFFmpeg.execute(command); - - if (result == 0) { - print('G.711 decoding successful! PCM file saved at: $pcmFilePath'); - - // Read PCM data from file + if (ReturnCode.isSuccess(returnCode)) { Uint8List pcmBytes = await File(pcmFilePath).readAsBytes(); - - // Delete the temporary G.711 file - await File(g711FilePath).delete(); - - // Delete the temporary PCM file - await File(pcmFilePath).delete(); - return pcmBytes; } else { - print('Error during G.711 decoding: $result'); - return null; + print('FFmpeg execution failed with rc=$returnCode'); + // 处理执行失败的情况 } } catch (e) { - print('Error: $e'); - return null; + print('Error executing FFmpeg command: $e'); + // 处理异常情况 } + return null; } - Future encodePCMToG711(Uint8List pcmData) async { - try { - FlutterFFmpeg flutterFFmpeg = FlutterFFmpeg(); + // Future encodePCMToG711(Uint8List pcmData) async { + // try { + // // FlutterFFmpeg flutterFFmpeg = FlutterFFmpeg(); - // Save PCM data to a temporary file - Directory appDocDir = await getApplicationDocumentsDirectory(); - String pcmFilePath = '${appDocDir.path}/input.pcm'; - await File(pcmFilePath).writeAsBytes(pcmData); + // // Save PCM data to a temporary file + // Directory appDocDir = await getApplicationDocumentsDirectory(); + // String pcmFilePath = '${appDocDir.path}/input.pcm'; + // await File(pcmFilePath).writeAsBytes(pcmData); - // Replace with the desired output G.711 file path - String g711FilePath = '${appDocDir.path}/output.g711'; + // // Replace with the desired output G.711 file path + // String g711FilePath = '${appDocDir.path}/output.g711'; - // Run FFmpeg command to encode PCM to G.711 - String command = - '-y -f s16le -ar 8000 -ac 1 -i $pcmFilePath -f g711 -ar 8000 -ac 1 $g711FilePath'; - int result = await flutterFFmpeg.execute(command); + // // Run FFmpeg command to encode PCM to G.711 + // String command = + // '-y -f s16le -ar 8000 -ac 1 -i $pcmFilePath -f g711 -ar 8000 -ac 1 $g711FilePath'; + // int result = await flutterFFmpeg.execute(command); - if (result == 0) { - print( - 'PCM encoding to G.711 successful! G.711 file saved at: $g711FilePath'); + // if (result == 0) { + // print( + // 'PCM encoding to G.711 successful! G.711 file saved at: $g711FilePath'); - // Read G.711 data from file - Uint8List g711Bytes = await File(g711FilePath).readAsBytes(); + // // Read G.711 data from file + // Uint8List g711Bytes = await File(g711FilePath).readAsBytes(); - // Delete the temporary PCM file - await File(pcmFilePath).delete(); + // // Delete the temporary PCM file + // await File(pcmFilePath).delete(); - // Delete the temporary G.711 file - await File(g711FilePath).delete(); + // // Delete the temporary G.711 file + // await File(g711FilePath).delete(); - return g711Bytes; - } else { - print('Error during PCM encoding to G.711: $result'); - return null; - } - } catch (e) { - print('Error: $e'); - return null; - } - } + // return g711Bytes; + // } else { + // print('Error during PCM encoding to G.711: $result'); + // return null; + // } + // } catch (e) { + // print('Error: $e'); + // return null; + // } + // } } diff --git a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift b/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift index ff949269..ed8af5a9 100644 --- a/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/star_lock/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,6 +9,7 @@ import aj_captcha_flutter import audio_session import audioplayers_darwin import device_info_plus +import ffmpeg_kit_flutter import file_selector_macos import just_audio import network_info_plus @@ -23,6 +24,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FFmpegKitFlutterPlugin.register(with: registry.registrar(forPlugin: "FFmpegKitFlutterPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) NetworkInfoPlusPlugin.register(with: registry.registrar(forPlugin: "NetworkInfoPlusPlugin")) diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml index 2d1ed9d1..2ecfba90 100644 --- a/star_lock/pubspec.yaml +++ b/star_lock/pubspec.yaml @@ -125,7 +125,7 @@ dependencies: convert: ^3.1.1 just_audio: ^0.9.36 flutter_sound: ^9.2.13 - flutter_ffmpeg: ^0.4.2 + ffmpeg_kit_flutter: 5.1.0-LTS fast_gbk: ^1.0.0 dev_dependencies: