From f1ab87f2b7c86633a6234caa243da8f5038c0950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 30 Nov 2021 07:13:32 +0100 Subject: [PATCH 01/33] Fixed #1761 AS3 - try..finally inside another structure like if --- CHANGELOG.md | 9 ++++++ .../flash/abc/avm2/graph/AVM2Graph.java | 8 ++++-- .../flash/ActionScript3DecompileTestBase.java | 6 ++-- .../ActionScript3OptinalParametersTest.java | 1 + .../testdata/as3_new/bin/as3_new.air.swf | Bin 20057 -> 20170 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 25767 -> 25825 bytes .../testdata/as3_new/obj/as3_newConfig.xml | 2 +- libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 1 + .../as3_new/src/tests/TestIfFinally.as | 26 ++++++++++++++++++ 9 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestIfFinally.as diff --git a/CHANGELOG.md b/CHANGELOG.md index dd93eaaa3..da9ab01f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Change Log All notable changes to this project will be documented in this file. +## [Unreleased] +### Fixed +- [#1761] AS3 - try..finally inside another structure like if + ## [15.0.0] - 2021-11-29 ### Added - Frame dependencies @@ -2194,6 +2198,10 @@ All notable changes to this project will be documented in this file. ### Added - Initial public release +[Unreleased]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version15.0.0...dev +[15.0.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.6.0...version15.0.0 +[14.6.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.5.2...version14.6.0 +[14.5.2]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.5.1...version14.5.2 [14.5.1]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.5.0...version14.5.1 [14.5.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.4.0...version14.5.0 [14.4.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.3.1...version14.4.0 @@ -2309,6 +2317,7 @@ All notable changes to this project will be documented in this file. [alpha 9]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha8...alpha9 [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 +[#1761]: https://www.free-decompiler.com/flash/issues/1761 [#1750]: https://www.free-decompiler.com/flash/issues/1750 [#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1681]: https://www.free-decompiler.com/flash/issues/1681 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java index b8d1e7785..061c21b77 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java @@ -462,15 +462,17 @@ public class AVM2Graph extends Graph { } } - //return in finally block is joined after switch decision - for (GraphPart p : switchPart.nextParts) { + //This caused problems, so it's commented out + //the tests still pass, so I can only wonder why it's there. :-( + //return in finally block is joined after switch decision + /*for (GraphPart p : switchPart.nextParts) { for (GraphPart r : p.refs) { if (r != switchPart) { localData.finallyJumps.put(r, p); localData.finallyJumpsToFinallyIndex.put(r, e); } } - } + }*/ localData.ignoredSwitches.put(e, switchPart); } else { diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3DecompileTestBase.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3DecompileTestBase.java index b21478dcc..5a7ab35d3 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3DecompileTestBase.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3DecompileTestBase.java @@ -89,9 +89,9 @@ public abstract class ActionScript3DecompileTestBase extends ActionScriptTestBas try { List ts = new ArrayList<>(); ts.add(abc.instance_info.get(clsIndex).instance_traits); - - Configuration.autoDeobfuscate.set(methodName.toLowerCase().contains("obfus")); - + + Configuration.autoDeobfuscate.set(methodName.toLowerCase().contains("obfus")); + abc.bodies.get(bodyIndex).convert(new ConvertData(), "run", ScriptExportMode.AS, isStatic, abc.bodies.get(bodyIndex).method_info, scriptIndex, clsIndex, abc, null, new ScopeStack(), 0, new NulWriter(), new ArrayList<>(), ts, true, new HashSet<>()); writer = new HighlightedTextWriter(new CodeFormatting(), false); abc.bodies.get(bodyIndex).toString("run", ScriptExportMode.AS, abc, null, writer, new ArrayList<>(), new HashSet<>()); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3OptinalParametersTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3OptinalParametersTest.java index ca29543b3..f15a9c3f0 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3OptinalParametersTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript3OptinalParametersTest.java @@ -23,6 +23,7 @@ public class ActionScript3OptinalParametersTest extends ActionScript3DecompileTe public void init() throws IOException, InterruptedException { addSwf("standard", "testdata/as3_new/bin/as3_new.flex.swf"); } + @Test public void testOptionalParameters() { String methodName = "testOptionalParameters"; diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 2ee129cef78ef6ffef8c965ff3d65fb4f3e6af83..ca1dca326b2a1a394ddf4139addd573a18b6fe7d 100644 GIT binary patch literal 20170 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 J{{eQ~h(INNvn>Ds literal 20057 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 A5&!@I diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 5077763ecf6bf7383f4e4f06c2044cf219bf5a7c..fd277cc1aa3ae6bad1f0a1d89f6f07f48ab947fa 100644 GIT binary patch literal 25825 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 diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml index 48bbe0213..b738e8b3a 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml +++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml @@ -16,7 +16,7 @@ CONFIG::timeStamp - '13.03.2021' + '30.11.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index 9f8881045..20225e702 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -58,6 +58,7 @@ package TestHello; TestIf; TestIfElse; + TestIfFinally; TestIfInIf; TestIfTry; TestIgnoreAndOr; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestIfFinally.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestIfFinally.as new file mode 100644 index 000000000..93a515c6c --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestIfFinally.as @@ -0,0 +1,26 @@ +package tests +{ + + public class TestIfFinally + { + public function run():* + { + var a:int = Math.random(); + if (a == 5) + { + try + { + trace("in try body"); + } + catch (e:Error) + { + trace("in catch"); + } + finally + { + trace("in finally"); + } + } + } + } +} From 85fb118138b0e65ed36ac7444d3cec01d24d1763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 30 Nov 2021 07:14:01 +0100 Subject: [PATCH 02/33] tests --- .../ActionScript3ClassicAirDecompileTest.java | 21 +++++++++++++++++++ .../ActionScript3ClassicDecompileTest.java | 21 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 0ddea2fa7..0121e5b98 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -870,6 +870,27 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testIfFinally() { + decompileMethod("classic_air", "testIfFinally", "var a:int = Math.random();\r\n" + + "if(a == 5)\r\n" + + "{\r\n" + + "try\r\n" + + "{\r\n" + + "trace(\"in try body\");\r\n" + + "}\r\n" + + "catch(e:Error)\r\n" + + "{\r\n" + + "trace(\"in catch\");\r\n" + + "}\r\n" + + "finally\r\n" + + "{\r\n" + + "trace(\"in finally\");\r\n" + + "}\r\n" + + "}\r\n", + false); + } + @Test public void testIfInIf() { decompileMethod("classic_air", "testIfInIf", "var k:int = 5;\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 2b5729dd1..9939e4c30 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -864,6 +864,27 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testIfFinally() { + decompileMethod("classic", "testIfFinally", "var a:int = Math.random();\r\n" + + "if(a == 5)\r\n" + + "{\r\n" + + "try\r\n" + + "{\r\n" + + "trace(\"in try body\");\r\n" + + "}\r\n" + + "catch(e:Error)\r\n" + + "{\r\n" + + "trace(\"in catch\");\r\n" + + "}\r\n" + + "finally\r\n" + + "{\r\n" + + "trace(\"in finally\");\r\n" + + "}\r\n" + + "}\r\n", + false); + } + @Test public void testIfInIf() { decompileMethod("classic", "testIfInIf", "var k:int = 5;\r\n" From 52270d33b00f39c0258f3f811cf31f198a46d6be Mon Sep 17 00:00:00 2001 From: Exund Date: Mon, 29 Nov 2021 19:39:23 +0100 Subject: [PATCH 03/33] Display depth when hovering ImagePanel Display the depth of the objects under the cursor --- .../src/com/jpexs/decompiler/flash/timeline/DepthState.java | 2 ++ .../src/com/jpexs/decompiler/flash/timeline/Timeline.java | 1 + src/com/jpexs/decompiler/flash/gui/ImagePanel.java | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/DepthState.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/DepthState.java index f8a14b7a4..cb35570cd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/DepthState.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/DepthState.java @@ -38,6 +38,7 @@ import java.util.concurrent.atomic.AtomicLong; * @author JPEXS */ public class DepthState { + public int depth = -1; public int characterId = -1; @@ -113,6 +114,7 @@ public class DepthState { time = obj.time; placeObjectTag = obj.placeObjectTag; minPlaceObjectNum = obj.minPlaceObjectNum; + depth = obj.depth; if (sameInstance) { time++; instanceId = obj.instanceId; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java index 73afed9f5..060902951 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java @@ -312,6 +312,7 @@ public class Timeline { DepthState fl = frame.layers.get(depth); if (fl == null) { frame.layers.put(depth, fl = new DepthState(swf, frame)); + fl.depth = depth; } frame.layersChanged = true; fl.placeObjectTag = po; diff --git a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index b71a697fb..f7929eb35 100644 --- a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -2207,6 +2207,10 @@ public final class ImagePanel extends JPanel implements MediaDisplay { first = false; CharacterTag c = swf.getCharacter(ds.characterId); ret.append(c.toString()); + if(ds.depth > 0) { + ret.append(" Depth: "); + ret.append(ds.depth); + } } if (first) { From 2011684b7fa5e2bd8257261c1f330e537a9ff79e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 30 Nov 2021 07:25:13 +0100 Subject: [PATCH 04/33] Added Display object depth in flash panel - lowercase, translation --- CHANGELOG.md | 3 +++ src/com/jpexs/decompiler/flash/gui/ImagePanel.java | 4 +++- .../jpexs/decompiler/flash/gui/locales/MainFrame.properties | 4 +++- .../decompiler/flash/gui/locales/MainFrame_cs.properties | 4 +++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da9ab01f2..e97066ae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added +- Display object depth in flash panel + ### Fixed - [#1761] AS3 - try..finally inside another structure like if diff --git a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index f7929eb35..b5ab16dc8 100644 --- a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -2208,7 +2208,9 @@ public final class ImagePanel extends JPanel implements MediaDisplay { CharacterTag c = swf.getCharacter(ds.characterId); ret.append(c.toString()); if(ds.depth > 0) { - ret.append(" Depth: "); + ret.append(" "); + ret.append(AppStrings.translate("imagePanel.depth")); + ret.append(" "); ret.append(ds.depth); } } diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 0c54b8e7f..ca9b3de5d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -846,4 +846,6 @@ message.info.importSymbolClass = During importing Symbol-Class, you need to sele message.info.importXml = For XML importing, you need a XML file in special format - the format in which FFDec exports.\r\n \ The best way to create such XML file is to export XML from existing SWF first. -tagInfo.dependentFrames = Dependent Frames \ No newline at end of file +tagInfo.dependentFrames = Dependent Frames + +imagePanel.depth = depth: \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties index e06c7fab5..f5e5ad262 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties @@ -822,4 +822,6 @@ message.info.importSymbolClass = B\u011bhem importu Symbol-Class mus\u00edte vyb message.info.importXml = Pro XML import je pot\u0159eba XML soubor ve speci\u00e1ln\u00edm form\u00e1tu - form\u00e1tu, ve kter\u00e9m FFDec exportuje.\r\n \ Nejlep\u0161\u00ed zp\u016fsob jak vytvo\u0159it takov\u00e9 XML je exportovat XML z existuj\u00edc\u00edho SWF. -tagInfo.dependentFrames = Z\u00e1visl\u00e9 sn\u00edmky \ No newline at end of file +tagInfo.dependentFrames = Z\u00e1visl\u00e9 sn\u00edmky + +imagePanel.depth = hloubka: \ No newline at end of file From 1928962d6fa9f0e93ab1df6e2cd19922e9ace8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 1 Dec 2021 08:44:30 +0100 Subject: [PATCH 05/33] Fixed #1762 AS call on integer numbers parenthesis --- CHANGELOG.md | 2 ++ .../flash/abc/avm2/model/AVM2Item.java | 5 +++-- .../abc/avm2/model/CallMethodAVM2Item.java | 8 +++++++- .../abc/avm2/model/CallStaticAVM2Item.java | 8 +++++++- .../action/model/CallMethodActionItem.java | 3 ++- .../action/model/SetMemberActionItem.java | 8 +++++++- .../decompiler/flash/ActionScript2Test.java | 8 ++++++++ .../ActionScript3ClassicAirDecompileTest.java | 7 +++++++ .../ActionScript3ClassicDecompileTest.java | 7 +++++++ libsrc/ffdec_lib/testdata/as2/as2.fla | Bin 1095017 -> 1095034 bytes libsrc/ffdec_lib/testdata/as2/as2.swf | Bin 107879 -> 107967 bytes .../testdata/as3_new/bin/as3_new.air.swf | Bin 20170 -> 20257 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 25825 -> 25995 bytes .../testdata/as3_new/obj/as3_newConfig.old | 2 +- .../testdata/as3_new/obj/as3_newConfig.xml | 2 +- libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 1 + .../as3_new/src/tests/TestNumberCall.as | 12 ++++++++++++ 17 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNumberCall.as diff --git a/CHANGELOG.md b/CHANGELOG.md index e97066ae7..5bc748fa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Fixed - [#1761] AS3 - try..finally inside another structure like if +- [#1762] AS call on integer numbers parenthesis ## [15.0.0] - 2021-11-29 ### Added @@ -2321,6 +2322,7 @@ All notable changes to this project will be documented in this file. [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 [#1761]: https://www.free-decompiler.com/flash/issues/1761 +[#1762]: https://www.free-decompiler.com/flash/issues/1762 [#1750]: https://www.free-decompiler.com/flash/issues/1750 [#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1681]: https://www.free-decompiler.com/flash/issues/1681 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java index 0750da5f0..ec2c55d89 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/AVM2Item.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.abc.avm2.model; import com.jpexs.decompiler.flash.IdentifiersDeobfuscation; @@ -89,7 +90,7 @@ public abstract class AVM2Item extends GraphTargetItem { } if (!empty && object != null) { - if (object.getPrecedence() > PRECEDENCE_PRIMARY) { + if (object.getPrecedence() > PRECEDENCE_PRIMARY || (object instanceof IntegerValueAVM2Item)) { writer.append("("); object.toString(writer, localData); writer.append(")"); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java index e896b235f..c3e7d9ec9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallMethodAVM2Item.java @@ -52,7 +52,13 @@ public class CallMethodAVM2Item extends AVM2Item { @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - receiver.toString(writer, localData); + if (receiver.getPrecedence() > getPrecedence() || (receiver instanceof IntegerValueAVM2Item)) { + writer.append("("); + receiver.toString(writer, localData); + writer.append(")"); + } else { + receiver.toString(writer, localData); + } writer.append("."); writer.append(methodName); writer.spaceBeforeCallParenthesies(arguments.size()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java index 47d0a9e0c..e0112ceec 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CallStaticAVM2Item.java @@ -52,7 +52,13 @@ public class CallStaticAVM2Item extends AVM2Item { @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - receiver.toString(writer, localData); + if (receiver.getPrecedence() > getPrecedence() || (receiver instanceof IntegerValueAVM2Item)) { + writer.append("("); + receiver.toString(writer, localData); + writer.append(")"); + } else { + receiver.toString(writer, localData); + } writer.append("."); writer.append(methodName); writer.spaceBeforeCallParenthesies(arguments.size()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java index 3a0b6be13..dedb307f9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallMethodActionItem.java @@ -71,7 +71,8 @@ public class CallMethodActionItem extends ActionItem { } if (!blankMethod) { - if (scriptObject.getPrecedence() > this.precedence) { + if (scriptObject.getPrecedence() > this.precedence + || ((scriptObject instanceof DirectValueActionItem) && (((DirectValueActionItem) scriptObject).value instanceof Long))) { writer.append("("); scriptObject.toString(writer, localData); writer.append(")"); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java index 509379519..5505ecca2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetMemberActionItem.java @@ -91,7 +91,13 @@ public class SetMemberActionItem extends ActionItem implements SetTypeActionItem @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - object.toString(writer, localData); + if (((object instanceof DirectValueActionItem) && (((DirectValueActionItem) object).value instanceof Long))) { + writer.append("("); + object.toString(writer, localData); + writer.append(")"); + } else { + object.toString(writer, localData); + } if ((!(objectName instanceof DirectValueActionItem)) || (!((DirectValueActionItem) objectName).isString()) || (!IdentifiersDeobfuscation.isValidName(false, ((DirectValueActionItem) objectName).toStringNoQuotes(localData)))) { writer.append("["); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java index 92da81eaa..99060be40 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -2385,4 +2385,12 @@ public class ActionScript2Test extends ActionScript2TestBase { + "trace(\"after\");\r\n" ); } + + @Test + public void frame85_numbersCallTest() { + compareSrc(85, "trace(\"numbersCallTest\");\r\n" + + "var a = (5).toString();\r\n" + + "var b = 5.2.toString();\r\n" + ); + } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 0121e5b98..65245881c 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -1214,6 +1214,13 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testNumberCall() { + decompileMethod("classic_air", "testNumberCall", "var a:String = (5).toString();\r\n" + + "var b:String = 5.2.toString();\r\n", + false); + } + @Test public void testParamNames() { decompileMethod("classic_air", "testParamNames", "return firstp + secondp + thirdp;\r\n", diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 9939e4c30..7d987ff82 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -1204,6 +1204,13 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testNumberCall() { + decompileMethod("classic", "testNumberCall", "var a:String = (5).toString();\r\n" + + "var b:String = 5.2.toString();\r\n", + false); + } + @Test public void testParamNames() { decompileMethod("classic", "testParamNames", "return firstp + secondp + thirdp;\r\n", diff --git a/libsrc/ffdec_lib/testdata/as2/as2.fla b/libsrc/ffdec_lib/testdata/as2/as2.fla index a9896f64e21a8266e911cdf124afa0a42125362c..ebcc85512dc3ab0184c4c6e3cb5d03dacce37ced 100644 GIT binary patch delta 19576 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 UU}NTA02;nDcmMzo&jG-H0DILVuK)l5 delta 19556 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 literal 107879 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%0AH?(_JT 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 O5k1GgcE>5<-~It{X%HX) diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index ca1dca326b2a1a394ddf4139addd573a18b6fe7d..9bfc4257ec8127d7738d9636b114080f8fdb3857 100644 GIT binary patch literal 20257 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%0A4Y+(x*Y{HvRp{* zKKLH>8*&@#<~`1ccrb0wAAW`)o)KS88p6?z;Ajlt4Uu8d6k`Mr6CXlG9b$3jC*6vL zh!@yqpKm4h`Fc{H$2fwG=<^*?LfIzt`3U-q-PqA`r0qNL-i|ooAjZls@1|m~=H=Z0 zNTcLIjUE77sO0=+ZtU6GqkL(?-k|3!AY$Zck5LZY#y!iaurG=+esCe43U4Q2yxb8S z4~z#y2^ZBHfbk1MGVzP>)-r5m`}FjNcX4qq@6$6HV0r=vW%}eT2U$ted#tqeJqAaf z{XT`RqqB^Bzv{Cz{hGmP#?tz0?$(B9C#~;u%?VECb~?h~Cm(<%-POJz>-kj+Ky>{2 z1F}d8BdbVznWXRm!k%k_FPJaIOxI1kjyGrMy~OeMCyjT7BRC)M-X~EhHly>`%<(2j zADp72JF1%=cbI!bruI6~nMj_ky+Ki2-3-1A85TVb6nGZmIDm)yCU*D02brN>R zI)cXmyWes}oeTnR0=u^$=lbX*(E0&gpSTMDQWjk)Gbt{2^un^**69h*$@p12VU34P{1|{if_>0kYq&+B%)~` zfoX)SOP@uN{5%oK-*F^iw=i$Hk8=cP03fsx#Y76Id`SmX{*GxskTy2Yc&UPOYLZO( zO-!ax)RZZ|iHHz$j~$Ec&mP@lb7_yoPbrwx#BYYgPt6xe)I8o191GOG5n(Q5b3mo{ zOvZ^_TaV^~%5dPzDK@s9EbZ5_;h;{wRK^vyA*k>R4kqM3CPMx?3GxY!;3z;o#CObk zKz`qZoTy-$x6`JA898fbM_&NwQF!0Cuq``ayc$iZN05bSB zeFXc(qL1*a7Z6<85bJ5=l%7V%MjTQzT0e%@&(5X4W5iSVeF}4o_??w_n1AJiA*oB9 zlLdm-RH61EUsEHvf{9J@6i7z z*pUpsMXV#T0NAy`XPhkUQ#pDuf|Jfc^McZXP1x9QKI6y@o1hP)3v4)DlHV~-d7sPu zJ75i1=#yfXmlpWx78Z`grO1pqWL%1l1wSPdPl&%K5x>b1EC&An5oN4^An^YJ`2Q~} z;FH)2ps2Y5K8dUVGT_ku$?a%%+BIsJ~T` zKw$3K^c659e-vYPGw2-gSjSEuQBq7Nb^8g}Z6bN5XF5GI>eokb>ua$~C0Y{29ZM=Nxp64g2ytlucY-e zatQbgS15M6=27Xk!uvU{d9Xq6$2E`2w~!3&5DfvnC0rNDMsLP-krLlqChtwgrIEsW z!=(}RCi4qH+!7m3CHNH>bLeL$4jsP@V-}p7Sg@VbB(|WM9l?BaL3tg)PiaA&FOf*z zO7zh|ABYglH<{GPjhb`=+NB~|AM_bW1*o?$3%kTy;LL^pyWl#_HSYoPrb*Am^T~NCXVC0 zq`CDuf9{PY%7jA#Tjq z{z9`wQM@LiC^|5-E&SY$iO{8q2wjwfklztp4TLV2$c^Vp^6LDXiIH(qJA@xvB9dOj zNeUr``12q5xv0N`FE{cGISi0n&{Lv}JzbHwcSVM_Rl&XRowz2} zGb_?ys;@|=R}9&=4D{c!qu00~^%;DN+bqL@`sOGyI}?$)DG8Z1j$j**xmBX$47aH( ziSLx2IwCk~D^(BbbgZ z;FN+E-1dzz#4M_&ByfRrX(V0Y@`uN>nJBHKF7O98=o{JP*PB()#rFbe?lQWNH71QVj;G9uz55fCUwZTvKt+1F!{ z0>hu?Ar3n`s<@ec znjx?0uXsez@K+`v|K0eyqj7zKJou-WqlAwNT1BsA_a%`fODJ=C9V80rg)@!uyCW+U?d034&^%e9^eSO5S3 literal 20170 zcmV(&K;gebS5qraw*UZm0lj?(d{kBT|GTfun@OF7B!q;)0fv^mv`M4aArxs!u|Om< zlL-?@V z<(x4+ZEC2wW%99}1}928!jqAjHY(WN-8H$Q;^dQ0E(2;*a;@355Nj)~;^!Z}!&gk9OA86KdmKHTx?9ZGrYcM|ZfQ zs=R8HS=Aek)$ItEdz(9bfpULmdj$$A+?7>s6B38k?4R7y8EW@-Pxp3pwYB=a1hZmu zSvc6~-*B>bQ=qJ+%^MC*t%z0RX!6GBa56gXYHbUIoE_fwz_d}b{M5m6j=gh^SvD$0 zEO&V&k;~W9+SWX6RCR5QyK>T~3UlZcM8UYRgQh$SM4c|o5sw@>l4Tc!B}>be&041dsjq(p2Huyt5t_1k8-k9tf=qGz)g2T(AfVLyIHXs*rxo)%5q>v#5c;k7pQR z;Y=eOZiZGf{M(F`{O=_*{KBm7GRtdbKB&m89j)E+VsC4QU|HT3YV8hWazd3iw}!jg zyjzB@UAwMxZFlF|=0FQo1yR-p18rSWS7%tNu9-AEQtt2W3?)~R-R|1@<#Q&l@q{|N ze4U%uEDLq63whf+H+ef+*DUmI@-CmdrlG+T@ULlW^@T(JH7za80smSg)^rEL-Ob)^ z?;3BodTmGGd;IncbKb9uLST|nVQ z8OC4&R4puT>TGRR!c=NU)r7X0D*$g+Xk8CyLxrG+?UXmi+wBiFw03yg+P0+ej397u z7eu3h=2_uz>$(o!(8vb6v;{WL-P{!lps2GWoXcx>c67IP^aK_Go3^mc$ZBu*4mD$4 zojo1#eeoKgO`Dq|LNRZM^L03fns@@8zLuV_!Ro_|oEC3STlbRA?nT~k_qEYH@=ZLTQsCCk8^D3wzqTRG!xv;uLD= z49)6j=6xVKI~4G4;C&!5$D{#A1L?V5e~{D6j4$=A5BM<;A@7zVvrDRCW_NdoT75m; z0X}@Q#j%0zo=``mzj>YAot$ncT@cM((6OK;g293gqeU#e{Nz?laRl?@+uL{t)Ki#e z@|Zgot&T-&V$s@Iv@RB{=Y7o&w6%3wXgmvAc-exMxozP9pP2dDK7PPDg zZQ)ohSl7`R3V@_bLq@v2t25LcXkO(FS$U@&egnM)9e!{LpPvOCZLJ-FhMo>C#|#Es z(1Aq~&EjNF$Xf32>Qoeb3+rYiZ z>&9M{MZNJPuf-|Cli@j7K;1@hDBuq?2Ri%#qd1y8o(~CPs0*kX>-pHgIxsgUAWyrOlg3D!bl{{}5eRj7LrVeQ z3yI0s4T#G}jc`E=X9~m&F6E<%rrf-6Wf%f1j7-i-tFT@=LmVd~YOG|wz`-)S1D@dP zkR!#Dk(I~^!gJ6g?>~}obL6ldvX^6xbuHeq%hUH5lY%CAjro3&fzX*i*a52Gw z&0X_b+gjHJ4fc%8|D4W1$R9{Ex(k3UIki?|ezq)zqz+pQxs%Oz3J*3!+6w}qOp0P} zG)i+8bbu|rSZA98MovLOIT0E=Mj)hkA-^`;Ikd?uKtf}=O06B;QmCgxs;aEFP?c7n zTvb(NtY|*os=@|H>t&(VP2TRnlI3x2#p>FVe#Y&Uqc$am8tt@R=3{==th9DC2R1AI zpf?m&x-r~GHXS3_&7tg9fM39>^$E#49# z#mmalN=v&UD>D))Eln#cizLz_k+L!?TC5I~mNqK0XtUtS($YX9r(kI*56a3czy%bw zl$B8+)=f$cwTx8`YUQ`Iwsda^le*z-Hw4}mr`OsYY=yiIbXZ$Ddw3)*K)kr618gDI z*9B5Cg$beuxMe|uBkjP6b=wmLT(?+Vof>)=J0@|@EH<0XO(BqK0@BLnSVCM4NFk&e zKvL$0LY*NcKu@v0R;;c|A;4N1T9~b897Gi%q@KFT8PNCYs)tU{5i2r!mKxJ;1*z(tVs!aqzVBy6(^YP zP2M&zL@3GFoU zt3>ZK9&z($HGkIdXRTOY-;xqMB1jlVTtWr5g0@bvZen9f;PHbMz{s?{J2*$KB|VO- zNXtxJ!qD=hs@i(7e&U9o8xIbT>r9F8fK_Vt^@L+Tps*0@W-Tz`bO$XVZ%1=yy9N4L zI9O!_?hGP}$2jr3rJBlm@6SyFKKke(1t_VrJ3HF~-j38jik_GODZRDB*&W*A^mR6G zu_BJ+8IJOZU;`tIO=@;9L-G>sH_2T+;h-37jZ^E5(m`}~qd*F_x>K_n_^}gMiS?6$ zDVgKs(?4LPW^**{59nX^O`BFH`$p1Z+O&F#)l1L{#EEsPaagL7s;jE_QJ5c=+^&H; z(LgJMSe>GMVIU|B!UBQpZLc}ZUqYgvsHZrv=?0W-tf z0)vDz%*~p{rpO6KM!O^vvkY6FA9_-~R8?OkO{|$@S-gd~am>IqG)U{8eJ|x3$sm9* za*NklI?Y)-f{y(_x^4V~M&~qVe5%yxo{|Bb6`FvvWSX<8(#E4@Xq8U&+>N{kdwiP; z6c)v0M7thK9ZazpyNe2AB-z|X45UiDQ9dZVR^ zHn2uBTEipf^uuAdvzh{4-Xcav<= zz?+0=TWaXT%@o{#PxNVTZEkLZ0k0}GHj&7M4?v|wbZckTP_9}Bnw{92%!^=dElD?a z8>(298L7idGEE)a>1)Fse0Ea1)Eqz)Z&xq^F)&RHul2Td1-%yIrbnuBS6jksLxFW+ zTX?M@K*N%|vQBMX8))~own^^VYD+6Fp*uE6?n!lsQe9kj*Ge_Dl|TEYm%vsFVs{rn z-d0{Rv%F+Yd3j0ZRIf7_3cwSiykyjL^Q6mnf`Fk7#Wi#cTpMwvmet;}Uo@6lR#%oy zYAj97`N$wNQQzkly>8K0l}%9Bgw}Kb>Y6o;rB(tzYj$I)Sc}!|uHTfZ#kwYXJ5@a; z@fwRv$Nbuj?-u;#3%Yb5)PlQ>)U4uV(Q8P6PR)h@L5jYuk!7337oyYDUnZx+Gs3@t ztJ0G*p&9Vx3cAe6XfV#pPMlOyB;%LS8Hium0z)+%!0z1KWudE)=C0Hb16P*-B|$2u zlkP*uV|YL)?OTptyojxnJ8+?F;|1hrB71|K>m`&-n%Ws^hW^|Nzn;3vno-j;(`@uN z)z{g%!Py%2k*ky&(jZ!5o7&yl-4>Ycnp$B*A}uPYiP?T?1@Csc*xGE|UvixsDCQ4b zuEr0xP|*L*WSQ9Xi!;ubR#=oH}y#9M7y3vsN4UwwQPS<0m*z zp&TRE)-Ze4a%j%+S++1(;kX9l@^XP^vNPHghlrL)wiEquLc~4HK5e|$^7zWr;+sy1 z)H_X!#3Ja}XfKI}*xA(`CQ#9e4YSLs&Uhyx3zsilQVtdk2gW#-9*s(4!PKz5U4BcJO7Xt~fjdAsKfk6VxPi|Rmv>xw_ zRF3rLjKktIBqAh=3}TRRgXVL*9h^)o;^EW%ZFlmR2XGXx^*^!@ z3EPuf#!oO&Ul``Sjdz-TL|7Zg6&$TvTeiel3~0oNXZtUdOd?GDm?A8jFs#;=7@#OG zPn+iK=xIyjx1U-FM#bpl+HA%>Y%Jrn$h^l^X97^@^X*~h$iYBXR5)=@4M7~nUEn&n zLt-g#V+ULau_l_G;m-DelR6-8Bdp!>C@dS=8a<=27Y9N3<2b_sNDeIIW@j7ZsI#-h z8R;mlk60I+)BgL?*J8rJfS52_aP$kr$+Dj!V`Oroa}eK21f@Zk7}*C0v@16fF{J!H6vXzr$RrTF#Br4Ov_eAj?IE@e4Z2n}=vo}& zgelG#>tlKMv|`8dt=F6Y`X4Dkv@^DuI7-A*z}&(ND#U7!kM(LU!l+b?!!*)3R(X&~ zK&OjHu0lQR?g{?{8W>Yzz41Rm$_V?~YzYfLib?$P_`j?V$i(DT_EX&qkXErN`Y(c& z=zMZZj1*2IgLJFpy*@(y=1xC%CMGh?HQd{0Z&}c6E=DYfm|``6ZwHx_WJwgmWjrJs z7l4{Guo;dN@PS?y6N<#m15o^rYjvulh(57KCmjWq&yLQHLlTOflBvK-ESq<@an#(|iL+i?Wr z2qT?l;%B5A8@XmawZc@>S4CBHlF8X}l0H@~4h0D|7N=4d3dZyp)wq$Axzl3}(tB)U1^Y^H#H_eZoX`YIKBhSNP}?k zzVAfZxWVHPYL>zlHSzz0Ey|r_iy~@ZCDe#@wW+zQFqSEQWdNXH0)e}3Y9PgoT*m`a zYVO45#J!V4!@&_bv_)+t=X`$1XJUh6LF^`ezx(8fwh>K)JPHj zehlDVNEiV^db_!<|WrRK^d;+{pr@dtB>Eex~1Sx_xi)l^zLpqxM(3Z)bW?opkV z15bNDv`Qzzbox^bl$@(sP+Yf8#6|nht*`L?IQr5IL8@YI)szw33x{5Bn5D$|EMkuaPpf|H$VoI~lowYGrMtmGVL)EbwIS5RR$>IgV9 z(_q$wQ|rhiU!=(UVyW5k2>%EK48jV#7Pri@&8gYOx%OfV=0d#sXVNPlQ#l2byK;opT)G#-wiFfe;AvHTyqCBAYp#Un*-)CU?Af7t| zE2W0y{77QFs|hSqv)VBhdXE8rO zzap^NOS?a5<&{!Zb#(@;IQ;UGD{9rXwW^sR)l}DHMOCDzPJM zi(+H%=}3g19ox!yrJ)0N5T2hJ9B~EBDGxmy0<*mp@7fKq5rT#EI3W9?;o7$jV4KQSz6hQ?rZ*!ojGxckrMk@h8~SylP;Igy=RfG)C8i zqN4`VHlaK<3M)WFU84AoJUKPO+jv=@WQn_`+G5!EC3pR#qJg81yaJM%0Y`cVDse}I zNbb*ma^!lm=@%0D&I3^a*3z^9y&Ok3bCdBpgHsIlq)d*JCJv}^Z^W6bHOL!rW=U$~ z8h@!3n6O{KE39e|aT5K;MruS|w0qzXC*Y#lsxQ!eGF~!H&8{8y{SUymzOA zu6z*xv$)dKNGfi4h`fCU1Pu>;XO)Eu26t)%1K7=QF*<3W%Mg86Xt2LQy@&>@NO`7T z(Sn#?(NETlxEc*!A>w=#_m+}@{2*^B83n1a%_e>q1oI@WU;neeK@quk;PMNuh_R19 z0AN~2XE#2CLz&k0Ek-1boD<=XxVEu0jzF-q;5$F5;T)rHpksq(6!I>@xzYj;>vi41 z)a)F5c^D^<)U3aRPrzVYLyYtGc$g%@6UvRDaVNaR{CeCymTMA`nTmZv#Ldr`Q9n#^ zVy#$P%XPCkaO1;)vr2MTxy9P*lzDf@97f%ofw*@l%~aQhb#5+A#EBDs_PsVj2|%a2 zvMJor4X-y6nGBLu{S?Wn5=kaiO@y_uvJN3=1>gBvccnOK;{OMFRSlq56{lBP`xZW- zcp;OIC%m?^8yA{ljXS-4OY{^YR!{ob_ss}Zr||m@OrkjP=YKOY0>qp;_aJju{Zn&S zojiB-^@c|(nB6Va)x}cPQhiOOG|@c?mf-4*Keur&ZVZuc`NSrZUrv#8OzNRl$Do=^ zu9~w@hawh81xkUvAitoqU}HhJpr_y$$~LB)!wR>tBK&{q(0uDvtl(W%@E%j%XNB*x zqW78dYo>g}3O`~+A2H=)ru>^JSBQmIh(%Y3%9WyWo2Wb>7Cs;rJs>I%iOQp*@}j7` zE*8Eh79ny#R6Z7!uS8|Lr0kXocS}XPrJ+5_&64tpRQQTi^opdsDis`(3f_|nK9sEg zmXxz)^N?NG|+HF8WATzLX2Ul#9NUmEXzA*Rt}BT=o4;ToVn-vkXz>!nmLhh{vC9!#f!M0!jz?@IVkexq8nHEqowT+I zu|~waK0jj3hy_~KAr=&K{>oIwR8dqVSrs!?Ia?KTR54c-hp0-PsuZZoP*o{Zm0_w< zq$gR4s`N`$`jskeWor8AAm?`c z&cN?Xre>Ut@Df(cY-bXoZ^G|MrrMukYHmNm40XsM<~WW03croTVzH!(-=fN4rVjrX z!ZSrxJPW^b@w-4o9rT=YnOKa;x>;05-YTm0yHRv6!uv#Z)cst0E<-iOp9_`M)yy)4-5Qr4T2t=OhcJSeG? z@SFTwNwt59-)H!Jj^7{f`y+nmgAk8n2s+}=0X8~T(Xs6ZNwpwu0csYcr=BINQ_q#v zX;;X_Y3i&UqB{HEVsW}U?=g_$Dg2(1)p^e$d{NGRNzSod$TEsE)n)tT;w)ACKvq|t zO_Pvq`#{bvwyTXil~bIf=IC;9E^reh`x{V@oUt)E!;*>& zA-U7!47L%7oblVFVI;M}7gV<~`djw6^h9(y z^TzQQ8@(m99h8woP;)!`N;1MP61yDGf{1+v+lHlr$l>J51hvZm{eMA*T6X;3oB!9* za-1yZ$_9w&Gr8SBUij}5JU|2vXu^SSXFL9vr4>buN0RXy&~TE#WKV%8 z+u1XCTAurF^g$m9YbAjv`u~U4iNhNlC9@7>`UmpXM-$-@!(s{Cl|;%UI=B8XYeRua;fn)8t}AX_*Xw*oDf4c>^d2eypwKcSb~2JK}# zyA%1_*&hC+c>JG%o|)5RVXD=})HH-Uu&=6T(c@ft+)j^s=y4xC?x)Ao^mv9IFVJH@ zJ$mVJfF7UF;|qFxNe`VKf1}4g=y8M|TSYw1qsKM$*iDaH=y5weo}$Og^mv6HuhQc~ zdVETc&*2bY;;od;8yD4@L z#d_({N00X@?>mb9i5`EZbGEX3zhd=48@ zh4=!B&trM5h%d$oNf5R%kw$nl%O8TgW2k&7vmA%`DiQJJ#N@Mt6>Mk?vQDJplvS-o}Pqz>o;B^BG7fu%bywolKCr zS>{fVzNY{gr%>H3ENdy^TN#y}#%!0O^p|3sLO#U&Ug+K zp2gURD+$nfj9o#Hn8c3CMfxJ%_5#Li*HH0JCS)MElFu>#IIjhe%h+{zUJh*xMb|Ld zM0L~+2FjyvG(y)dz`L5UG2>C~M&9rBjO7kT>Smt0iLtRRq;BV_TNxX7JW_jj>Q2Ti z0i^aak$4K|jR)HIFgBqPxexI=4=|QK1F6S&>Ji3DS0MEiPd&ldkab8s%cQ%2&h1QK z<$KIX#odT(7FgvXRCs|`f1WX=8L5}S0tjB`nXjV%l}NqKQ*Q#>c}Vr~)P9tCkvhmz z@1l7NQorV@_ZX`ggVcvS^&7_OrXck>Pkqc-K@L*C=cz9l%bSYSH$3$faP}jmGhrfv zKl9A*8JoBeslV~m4zC~brDZpATsArq%P&DogynOMCvM0dIS8j9ZWb&xLjmYF>v7uaTtoO;}x$##S@U) z#Zxzk%r*+CTSW0KVl%#4c8hG98<}_TDz}MjQY}(<^VD4;OJ9c6eLQuq$g-9o^{_}> z{D8=^-vPJ>#c{}coY#0%Wa6<%JiD_N}s{3GXcF{WV8Cgv+s&*_PYoVh-}UQga<|DS%uoa z;cb5n8rqQhn5RAznK})rFL>%xk7C$IH)krgojuEy=tRNq$ zvw7K>5_UQ2?_4P&lIIs8c_A-7Ut+l@A$18)U5pd(1f;IusmmlbV>VLP@YGcj8xln7 z2A;Z3Vhhrdx>=&R+9fds94p);twG-HyvD5(E1iYZ9-g`rJ!3)1!d?l-YOG#~Eqn=B zv6tCHlK2gB?w8o2ZxKEqvBi%QzK=*)dxDG_PfF}CN*Uq_;{{Eq6l#Qt!c<|V;1T8vi-cvu zO5p^dQSb@@p;hRFz}_VMLiiOe9vryO1;LqcF-Xe<$j$4~`BjXKynzY3nQ$8u?qb5d z;B_WI$$gRu&oJpWQ$lHX7!qp4on}VaJ}@~r8|(}oX2Jm`yw3y}JU(N>@0jpMCLCtM zpP2AhCj5g5|7OBAQ8-f+U|+aU6fO~kD@Ea2QMgeQZWe{xMPZL9>=lKFMBy<}cuHi@ zyo8O4^qeTXCa!I&a60Vno-I8#dB-|wl_e#QplJKY`;JEsnB)o#jm4seNI3R&mO!SZi zipk<+kHDDREem2AJH`VIL(XE$J>UX4mz8>;Tv!X3<`FE+TExmcg37ETSh+{Avb0gG z!UL^C9?L2{LK>4x*jf)%j?8kl+9PBz+07PvpohqHY>r3BV)A6x;DH*FGo2mf5$sH! zjjb2DiQK@dJVGv$7qV6lRFi@wY=}q5WAd@=I1ls{`8ZbN5ek^Rnw{u@x+1S-*&h5e zO0u8L^gxG^*Rkmyp@_*FM2`n5Oz{Ow7KVq}BoCAtc{3~U2qTz$DqHG-P9vWVq3;o# zOy0pny9cU{d?l)nI-iNT9_TqTc2vQ22@^9sP<`Z^kQ$5qcDx6AkGu<;xd6okyq; zomI~~H%&Ez*2Tj_xwB|{+3^9VIe?q|&FfqG><#8`_* zsAIJsV0ZUGzsmcFu_+#5B9p&hEXM=2Oa236Q$50DCV$JA-y=*B-SyvLEAt3b*`&WP zw$KB8O#YFvG>;3&@)7q>4Byu zUo5hr_{Wl%e3{4!Jy77%uNK)bkI=y6>qT~g2O6C9CXtQ8B4zTeB6EA7*vWT_tkxqe zWb!>CTjmjtX7c?aTjCKGG5HaZjq?bLS>6*OJJusCVb*6vR_}qPC+`!P!y_zX#V?C& zqz4M1{JO~IdxT?|{I z+8l*1MK;<44N?9|WFtJn2_TQisy$E~P$^qwcNA`cWy`69?MkKkwWr4pOqfreRprNm}?gaDJTl~~XN z#nXAC#L_*&Ip5jxi?C2LI_KLBq9{-ZWo8Qi>Uo2&UouXF#6kgj(wHfv$cArAkn{0aS1O#dN5DL=uJPI=O zdn;k0>tiTz=wm4up^u~BD1AHyPJIFeBlQvrM(L##jMg;@TzVM=WAt(g z#_AOmjMFPA7_V1RFhO@yP@-2;P^#BZpy{;~l<9R8lP^C|%z^zZA zpjw|wL5)6*f?9n#1$Fui3hMQl6in1-Q7}oLO~GV+4h2(m4+T^8xfD#(8z`8r&!b?5 zKA(b_`T`1O=?f{CtshOn9DNZ59(^$dbM++@H0Vnyn5QqJV7`6~1q<|JDOjj4r{HLP z1qF-rl@u)2S5dG;KaPT>`tcMj(@&t_82v;Fj@4IFuv}k5!3w>Rf|dG76s*$MQgEE! zM8Wa8mx2>?9|b4sehOCW%@nNB0~9psEfk!jucKhC9;Bd2Z>7MiucyGLw^88N+bL+) zJ17X~T@{>p&Rw4t)8t+J`TvZ-LMNGo;Vu*;tY$sC$J>8`o&@)`Z z!KR*OJyW|B|0u@AEVtED<5lgpk5jWVVt&$ zDl~4^$Gcn$H?ysq{T6+KOX&71K8s%BQ$PsBU5a-TAzZ5Mrs^ote9F#}xRNsMW)o6l zmtNk|g?5cyrQR;;yi2b@hLNUTDz#f;b*rfErEzuL$S~4Ww_3Y3R=1|5YiCJZ)mo%^ zl4{mzx5aAKw{%?^UvnbTye9b7LjRy4LqsLnY}sE4IgXSyl5I=Kmaz`RVa7TD<1fPNp?C~Q<^ek6q->~NpvAeSRhP{Bu5Z4KP!(Kmf1Sn)gP|r+2 zJ&jP$ilQz#g2$k8HsN~_1H$(XKzK3Cknro*b7|wIoILFzj&Y`uEYcpPq(0oG%olL%GPxx`0j=Cbv=m3M z6le`4+MYqQeI$z4qi6?N7vTz*vRAj|F5tvLZo0i1bnDYIUD94XGk2(gLbicpA7)$L zquX-|jO=^^(S4$x-se*CK{rx3Xb45xV}vtBhii``3Sm&Kz+hrRY!tA2z;r z(w1M~1Z$Ghk$_ZDB2ua&SO%nyqFLTXFfoTk0FtrQ(+*Tr|si&n@^1k?D$7d`64Vdr+nBxsb4Q}Ir4vZ z_yj+n%j7b>8sKi0o9Ki}y9!Fa6T}1rXFbKN+atWN$c-YV3l+FkjuNQ%}B>@ktsV8Q+A2@r_L!Uz#IWiSd~k?7uyU3; z71FxE457$dDiNfz!b#-;gHNbQ=EKs9Tq_Reb*-R?N01F(-B;ZzUyg4c+vN#2?H}!L@pY2o68D`?Xp2+r@Q2P zOLB0(H=)mEy|*M+MXaBgB0V?TKqyoDjOHgI{&KX>DG5LmBUnvJz^X10t1L%w4k}M! zs=!Ks)$f4S?=jZHaJ`{%f5jEouesv-M@EY4H&9&BVrr!OX$jp=PV7G05o|!^88TMT zb+m%MGeYQY`xEOmXrD`j z$c@y?(_l#iA;uW>hH5Y<#^_S4{Xj{YLWlNOiuStLF2JWXa~fYWGb1CKl`x{|i6gQ* zf=6LQb0iS#Zz4wY;~?`GQS~!qVdTM)herD4k$#0wE~K)}Z?SJPSC^>|Vbg=y&ayj^ zO!zod8}Fg^%5>2l{Ef_Q^a;R11ZoDMa@)S)8k%Scm)is)Z1 zQze0*HFPSUWmq@Xb+IcGv3n77xUvu<^~C8q0kKB_Y2T3}Hhmmz6yxlt0IE&LV)M&- zi5=3;rk5e1=w)_@JDX3@D`+Y!a%Ktw64kD}J$iKx;3HA*vhLCAbMghjK7}%Rc5b7F zJ_RF!BIlDS1Ks*$*RcFsj~t=dny&qwW~(1#2l#%MHUF1}{+oirqNlIsXoq4LopI)M`T-Ra_fOjw%t4C-Q0q>IG~ zT`WxOVu&NyipooA@xMvyV4HZDZHJsZ%wSW)a|b-YnszYV+HfWl!cf}ALIjK>r44FQ zNiLTFo3JQMEho!Ri+YJy_8J1Bf0J&H6z3Z1QC~@}4FaQ=xM;7Q7bz_;RHXir9HX?* zmA6+fjFc7`+hxD*h~ylloh@Pt`t(s(=%XT;F6|u3#GsZ%C~!;y1(qaIAkPsTg38OW zZp3a7;Cv9^0xoDsk0D`j5SprS8rCz%9w0s!_Uc)=qiLV#`bjSqyA`QCmr~-F=kM3; z4QJsR`wQ@DAv8gLVpZm2Pln{+dz9Z|Y*P9Nmpq>hKgow(Xayl@;|S=Z#zK0pjG(_N z0sUhW(a(1Tj|2M0V*xS7u^n4<6G!C3?jvbMYi-@#`;Kq)Gimj=P`%}c9?m!nYSgJ)qJPH&*rIG`chZ%0U1k~)PdHr|*`b8&4TOGC^jKf)2zpG5#BfLO0vdO>Y!ldXByb;0 zpnsx84%;-ikgZ||dQ1G4{kp9IJ{B-QwOqo;{AKl7$V}$Fg!yHoLRzc>3{`REicy{s zEANSKZi0Mx7lArpq!EbWpg5w z5sqL1pqxffY5?UiKzW>|nV^84+7seZc&hBjk?-#eiq}oMjAXj@BribQU(z8f&use~ zrn{*}w>S54?)_B+iLLw+A!?{PH4%%W9KogNX&a+87eZH0$IwVK>`)b?y%>`D8CoPf zo~=Dgal0FZRFhzDJtn8%ZpC238Vw#WYu*Ys4xE ztO5m^@XgWQBz&^2@?OOnuVnhrg;z3R z>y?aKhzqs1sY!p!6%1Qx+V1{R?-g8ID%Reig2u~ONy}x7j6pYfFXJU6wEa|~ALSDL za-UD8&Xrw$1yP>@7=+wNt(Uh3BBKZaDph#Jo2iZBlg)}Qt*u(Pw--frf0^(8K%(hXy|jg!wjJ}>-Qwfo(;_qhcmtSH<($OHf{%b% za9(1;4nB)9fiuz(w3`BFlp}a0%{z89s{rFZrtcu85BK$uobPcJ?|m*ye=X7-zy}bq zI9iGdp1&0>SSWNrusL_Y=!`8GM*4J^o)797&aKz51A69oY)sCr8=xF#yDX?_$2y|A zIW85oa$W!QtBuz%eaOOVFrm~UuR=Ve=T}J3APcA+P=nutIV?DoAs$^uhUg{icP18` zpETalj$p1iUY8?y4YjzGDL4pir}2KB#IEso9)^U)dCx|A9!7YG28iK6y)6kJCR%R3^U~ld_YW!T$woVs~F~r<(h+nmxZ90?C+h8 zU5%XQ&??=4QK5Y!BJUaw1g3FL1FB9JqG0|p+P7dzU4 zzMe_2%wJD5Jq)Db;Q=loAAeXM&Sx-m!NRpl+Pe7wox6Jdvb~iKURZJ?c0iZQI209R zS=x8BCZg8&9PN9aj+oiS^%W1 zxCdtsQ^7I~ymp+(>BJ>P6t5i9Tn=?9Vt>gu&sICB$Ns+jyNw;9Q2RTG2ejZ~WD*S? zmhnWpC21HF96=ZA-^rv*0WaiX82>P-HrSma))&o@Rr@E+5zPGu^mLg0GsYg$Gsj_> zWsSwvmEgDZ>N&YE^k^|eDH@ZbF=cNq4vJ7n9%P(CS=w0=<{E~5mofw=1Ui1E<=@4Z?L#D~;KXK*?V-f6 z-Je7!%@J$_s*f;95yW2t)pI0Mv&hiSB^X#6n5DRz4Vodlb{>`SOO9Oae2SaKVN7y# z>&3$SB`{X>3 z+r{jVz7;ZmDt?9V&eV2FJ_RO70DCfu+*66jJ)VSIxg)p&^`B)jTC4zaH%j=w>2})g zcENgm(p{|7dlxhFvb38hZx8bJ@VvWN(;lX0uM$tX8+ms#V}EJ713H|GwcKNz#-Cvj zZ)^tdoO-rtw@@#)p~Y>Hp3}8kDeq3?-O2NAV@-E5Jr_OSfxJ6tP){e}Uf~F?L-zB; zAM6-(e;Wu(yWC-RJC@dAb_e!YoE4#V6IiQum!v()W{U?5B+S$yN~LLg0NyWCJe|ks zaI-H;#TOE(_*@bum5$&d)PI@RA|uYd5-5S3mv{~xAMTZ!?q#|%fg*dEZb9LTNxf7# zg3ZW&mG4K((dPcdrRiEsw>!fiLR}SPkjj7pMy!(MQpUVG>6Qa}c7^4DZm&=eK>tE4 zx5CO9dWgAsp>H^anoRq8;)q^J!o}?fE2ypjO;UH5_k+_g*P#n z=Lyb2bjyMjXx-Jn3jz#2wPwHY?~m{Iouqzi9Km_$_gyAs2;xUX#3#}5Q!pPLW^hf$ z^BLa#v*1uDflv(ScuKnW^U$=wu=}JPSljp0l6etpTeof81@?SN+BKVPy`LTG*Rxw5 zV17%#Zf|*zH9W+G9S8dLoR)`qUM|AT*fj;et?3b_5r3!Kp;Fn%vt~3lyx~ocGVLuX z4>l%Wy3giI^FGELZmTWl1K7ON{gy@m&ePtO7Tyn~_kLO($SBa>K~I!aDe2Jm8%bI( z@H93FgI68m3DciMm|92Bi~8^J6Y(_Ar5|*8m(%3{=+gK&R^-CRab$R$9cX+4OLE~8 zNIXH7NIip;Wblig+1$rv9h{p@sCcC!9_pbasCABD3!wgnNjMs;1=L>y>IWR^ZvYj? zoUKnX2wf*BuyWrave()ma7SPj0UCjIOLERvM~;wQ(dSpV^%qA)%V?^RW7JSAIe*}q zA(+O*3om!X+)n9|J4!Hr$v!-X5Zs+M< z;>1rl0UOcexRQgFjZd*&?^C$;`IL|8OBz$U_B&}uUunBYEi<&=OS^bV&z$)wMEur^ z7|J9dpWBQIMAv6=T5ASCia(9{pD##H0r~CZb1sMop2d4zFrR%)3WQh6wv8Qyk#Y@ z20;D>lp>KttA& zg!gO^k4lLzlE6=L1anXycaE5*-0!{xaJnb}@zTw6+gCIl;u>J~tuZ0bV?v&f-ox!R zk)-JWdA>HtLlZ!99HHEV+wv?jwPx`P1-r{ib(>zmM%di+Jl{>_=MCb$2;yxNUN9yD z8QZG{+ zK|gx=p0e3+wD}7$lC8Pv6=EJD{YkH2>wbly5?(hjQNx=`h)0S1T~eo09l?pH{{y3= zrU#w=6=eP?k45A3u8^`MlClJ=0@=-Pztzx}ZtcI_ub{KPMuFqSsCeLiNdi925nPD+ zf2Sjw*bd--Gl6rJjJPY^W#e0FhW4X`K@M_(0t*P04BWl)w0}@R^6pi@4;1sn{L$lt zQ}buR%Yoj?Fp2fgM0|ft!gsnOmY zUFDJ2p%kJ0zmmG0;RyPWeY!~7Azi+2l?ToNSx89#u;8X3>*BuM;X`P$4F_q%AiiBp zp!8M|OcLkmHq#MYkNP`AQthvzo$++QFxK+(Xo(ZJZ6r6ykS|L!9e{D|Mpw~T%KSu5 zE;d9?Zk5jJgJJkf95FJYejui*@36|W=i!VH)&42VytydWw#n$kI038i za^qa=FmwuW%)%w7oH}Nq7iKxUB4dv2ti-XMkuRhF|j@`5$m&)u%7J*)&c7aM2Ij}2CR1^Oh`oQ6AtzQ;og007tCYy z3zH1Ri$f-qixQ!np9E!&BbbT$J4Lc%EdZ1=0mZb)(>k{4>H8R6?!kj1BR30VfpXis zJAA;78%MGu_uhm{=)4zDC*Nhue;ZQ{uVL(jcyGzX02hhzYy9FQ3_OnDP+)Mm2w}{} zd7i9i+8W=)DQ4-LxPp8G8?1J|yyuD%62TLY)}%dGkV=GBS5RmC!u~w&9-OaTfcZfI z-kCDNUzG^{vLx_x9l=7>zlOiT&d$4B_vxG$%!h8cc7=VL; zd=@Cq+%R#JX}WQ8)6GgU-K@NvT@8BB%WfuFb|sSK`XsWB=6hc(@YoBJ~yJU-f7p#$i*t}JxCVTl`KU zN4s9$-|`k$_S~YB^ATsdo1@6xl8D?*NyyE21V;h6+cde%+cc=+<2zAH3`51N6?M>cX0q`5>wn5;ogYaMNT0q`F6PS?tx%)8WT#! zADtYa zXohwRqUZ#-#U@a^oE#7Io+O}0JA%tl{{c=k4M1;;(aeHN$h3xcn6RH7!^~YNUAvvY zq0xi9YclHJCPOUUA!D?76Vn9za3bLQlK?Mr1ec(XM@5_{*%b6~CjkGa;|@fuaohpZ z&Zm>kVTjjkCt%{$PZK5-?fAhyk_2n=HQbzl7+$e8iT-@zK%Pk&$WlkJ9`#=!S8bi6D|+o;OCR` zjZ2&tql14baq#<+2EWV^bYSqWhzhv;92)%n82o+Q3V02Snz|K&8OK5{p3_J?<1Pw! zd?cQG;aG%w6%x-B%{0VwFV0}57|(|9u7EPr9smx6X&g#Fi~^%|I|^uIxscku@IC4^ zDZ0>S2 zy7YMz$uAO-{DdP3yM=kneVijW4FI8yC?--s<#%*I<*zZl3#5(BGhV9ToSGz4eiM@^ z6g6eaZz3YZ++#;$`?E*)*j(CU@!15En)o6}{M3AzM9t$J!O=kNYZ2x`HVafbWHL_d z+Il1xRE7gzPO-7=WNGiohJ!l!QW;m+hM>Zgi3u5BABl(jRTAVA9KjKQe3}o z2{}>0G;gO(1v7Hi&W^qT05N33!}m?%;eDF~??gwi8u0$a&!nWmdNb6DGc*5)bnSJ{Xd^)Hzuo zXiXJrAMiCbj4PPPizXyiok7Dd@2Av}w>)7cdN{Z>EZa)FLO(f6sOsBVu`t)Jk`daK#iIzlh2UKqo zu|s1fm)MbXr1l3Y)iQ_q)zEcoq6I<&DmS8+* zN>Z8tAqI;75#uq~9UrdYOfL$Ju-jV~e#)8Nd8mK0U#1N^a>1jLMUrpZxZtr2?=5Nh zj2r?!!xf61u6b0tt?+)1YaVRS2XM`!@+~Ao`<8})-V&~hWTQ9Zx=4xdEtB^qG=|g zpU45R|oTbPAi;>~d8!v8L~PIJw>pS)?(bMba$ zFI1eRUod7LMM@6TzC2{=IX-!x96n@+;@(#RgOkwmCB9jNH=Xdxi$HG1_?V43jtdjV zabD8g`W(R`;C``$9gsV||B16IAxdUco1G3mQPa<8+GcTGfp;WxFrRRaA=^(5y?I02 zn6LerW{aYDn}{=}&2DI0__U6R&?SioU6h27-w`|s2wf(T8_yNw)%k;ok#SOsTuolc zN%|u!!K8H2)#Ri201(Mv6{;~@b)bLYc9JeCEp#84ru|jM%japhsLas*CYu+Py4~rw zlKBog8unLM@aO`jfI7fCo)=*3^b!$-m|jFvQWRO0#l|Va4v!qXe?L6t;p8yS8JOzG z{xZ@yYxKAL4!53g=kupU7Da|}>xm0aEQ<8uO}~%cdS>|2eCgglU^&>*_^oFK&@7-; zlD~lqBYdaGq~{fh^t?2Qp3ROR9oVmu$gnvX>W%!Jbs zojVTD%Zy+)@qnESBDpS!-1zZbBopK{i6E~`0vT`wXQTdgd_9os#=ija-vF5?1dl*r zCbxzRZL5Nd+uL!Et7lf&U`ww^qt^_wZ|?8Ac~_5dgXuFE3)fAChcmv=WFm7zA~M$| zA=Bar27$~jiOw5j^xmceI3GC*tEKec&SDKJ0#`Hk_}WMTi4|n>d=JzHd|T_87TZ z?v9S(=EO1Fm^6lUj$k^vxD}t5F^tnYFou}P(_E^qG~7#&_=8U#uIn;i5b3%x?H==G zDELj~d`5N?I7r~AXe0ADzHnty@%BUvZb`x*=m@SseR!;3XLeu^XL8RTt9F)REOOJw}UfhHh0k6#~rnZ)Y-9A*JvUTnhL zNieatcM=gFh=4#bYU5K~W?v6Q3Jiyr`#9|Es8+qf5qycde}q?~JE}_+qb5G}Wp?p! zQkynM@NsH`FM*jg9*ak~J@`76J{?8)I*zbSyPhMQh7brpgD;C3PXE^>%p$yYx4urU zl-WxU!|tZrx4z5{HsY=`2j80$D1pAQ-Tp-5e4}xJ(RgU2abaBJ=b~sopGcdhlE&HL z2);@q*~hCLUj?CFg=Yq+mdOYH5L41-*tJkZk-5YxoPo9pufCLrxrcg)bLV_BJ0G zowN5U*x4?nb2h%b2UZ0?A+Pbz@bYi?GZT=HFYy^HOm#=%egS#-TAVq`K3*EVWPUS= zEE^rc*J$AHQa=BV)cq#UKVb6w1H?l3^qkq>!NmUhlllueg7;E?wjro5EXF?qCd@?S J{{eQ~h(INNvn>Ds diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index fd277cc1aa3ae6bad1f0a1d89f6f07f48ab947fa..3603aceb188cfe4542010c62f08755575080599b 100644 GIT binary patch literal 25995 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 literal 25825 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 CONFIG::timeStamp - '13.03.2021' + '01.12.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml index b738e8b3a..47a6fb9d8 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml +++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml @@ -16,7 +16,7 @@ CONFIG::timeStamp - '30.11.2021' + '01.12.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index 20225e702..90a4f0700 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -76,6 +76,7 @@ package TestMultipleCondition; TestNamedAnonFunctions; TestNames; + TestNumberCall; TestOptionalParameters; TestParamNames; TestParamsCount; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNumberCall.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNumberCall.as new file mode 100644 index 000000000..14eede836 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNumberCall.as @@ -0,0 +1,12 @@ +package tests +{ + + public class TestNumberCall + { + public function run():* + { + var a:String = (5).toString(); + var b:String = 5.2.toString(); + } + } +} From 47347e7a0e1f86b5438f61a65b6e30c84e17675d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 1 Dec 2021 20:09:13 +0100 Subject: [PATCH 06/33] Fixed #1762 AS3 - Auto adding returnvoid/return undefined --- CHANGELOG.md | 1 + .../abc/avm2/parser/script/AVM2SourceGenerator.java | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bc748fa0..f55c3af50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. ### Fixed - [#1761] AS3 - try..finally inside another structure like if - [#1762] AS call on integer numbers parenthesis +- [#1762] AS3 - Auto adding returnvoid/return undefined ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index 1d64d239d..b371d0477 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -1916,8 +1916,13 @@ public class AVM2SourceGenerator implements SourceGenerator { declarations.add(d); } } + boolean addRet = false; if (body != null) { body.addAll(0, declarations); + if (body.isEmpty() || (!((body.get(body.size() - 1) instanceof ReturnValueAVM2Item) + || (body.get(body.size() - 1) instanceof ReturnVoidAVM2Item)))) { + addRet = true; + } } localData.exceptions = new ArrayList<>(); @@ -2002,15 +2007,14 @@ public class AVM2SourceGenerator implements SourceGenerator { mbodyCode.add(0, new AVM2Instruction(0, AVM2Instructions.GetLocal0, null)); mbodyCode.add(1, new AVM2Instruction(0, AVM2Instructions.PushScope, null)); } - boolean addRet = false; - if (!mbodyCode.isEmpty()) { + /*if (!mbodyCode.isEmpty()) { InstructionDefinition lastDef = mbodyCode.get(mbodyCode.size() - 1).definition; if (!((lastDef instanceof ReturnVoidIns) || (lastDef instanceof ReturnValueIns))) { addRet = true; } } else { addRet = true; - } + }*/ if (addRet) { if (retType.toString().equals("*") || retType.toString().equals("void") || constructor) { mbodyCode.add(new AVM2Instruction(0, AVM2Instructions.ReturnVoid, null)); From 9e6548ceb0535bea1b518e96306319d7224116c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Thu, 2 Dec 2021 18:59:32 +0100 Subject: [PATCH 07/33] Fixed #1762 AS - switch detection (mostcommon pathpart) --- CHANGELOG.md | 1 + .../src/com/jpexs/decompiler/graph/Graph.java | 113 ++++++++++-------- .../ActionScript3ClassicAirDecompileTest.java | 19 +++ .../ActionScript3ClassicDecompileTest.java | 18 +++ .../testdata/as3_new/bin/as3_new.air.swf | Bin 20257 -> 20400 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 25995 -> 26138 bytes .../testdata/as3_new/obj/as3_newConfig.old | 2 +- .../testdata/as3_new/obj/as3_newConfig.xml | 2 +- libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 1 + .../as3_new/src/tests/TestSwitchIf.as | 23 ++++ 10 files changed, 124 insertions(+), 55 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestSwitchIf.as diff --git a/CHANGELOG.md b/CHANGELOG.md index f55c3af50..74728161c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - [#1761] AS3 - try..finally inside another structure like if - [#1762] AS call on integer numbers parenthesis - [#1762] AS3 - Auto adding returnvoid/return undefined +- [#1762] AS - switch detection (mostcommon pathpart) ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java index c4bf288e9..ee1df2a6a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java @@ -360,38 +360,6 @@ public class Graph { } } - for (GraphPart p : parts) { - if (loopContinues.contains(p)) { - break; - } - boolean common = true; - for (GraphPart q : parts) { - if (q == p) { - continue; - } - if (!q.leadsTo(localData, this, code, p, loops, throwStates, false /*!!THROW*/)) { - common = false; - break; - } - } - if (common) { - return p; - } - } - - /*loopi: - for (int i = 0; i < parts.size(); i++) { - for (int j = 0; j < parts.size(); j++) { - if (j == i) { - continue; - } - if (parts.get(i).leadsTo(localData, this, code, parts.get(j), loops)) { - parts.remove(i); - i--; - continue loopi; - } - } - }*/ List> reachable = new ArrayList<>(); Set allReachable = new LinkedHashSet<>(); for (GraphPart p : parts) { @@ -404,37 +372,76 @@ public class Graph { allReachable.add(p); allReachable.addAll(r1); } - int maxCommonLevel = 0; - GraphPart maxCommonLevelPart = null; - Set visited = new HashSet<>(); - for (GraphPart p : allReachable) { - if (loopContinues.contains(p)) { - break; - } - if (visited.contains(p)) { + int maxCommonLevel = -1; + GraphPart maxCommonPart = null; + for (GraphPart r : allReachable) { + if (loopContinues.contains(r)) { continue; } - visited.add(p); + boolean common = true; int commonLevel = 0; - for (Set r : reachable) { - if (r.contains(p)) { + for (GraphPart p : parts) { + if (p == r) { + commonLevel++; + continue; + } + if (!p.leadsTo(localData, this, code, r, loops, throwStates, false)) { + common = false; + } else { commonLevel++; } } - //System.err.println("commonlevel of " + p + " is " + commonLevel); - if (commonLevel <= maxCommonLevel) { - continue; - } - maxCommonLevel = commonLevel; - maxCommonLevelPart = p; - } - //System.err.println("maxclevel = " + maxCommonLevel); - //System.err.println("maxclevelpart = " + maxCommonLevelPart); + if (common) { + Stack toProcess = new Stack<>(); + Set visited = new HashSet<>(); + toProcess.addAll(parts); + loopprocess: + while (!toProcess.isEmpty()) { + GraphPart p = toProcess.pop(); + if (p == r) { + continue; + } + + if (loopContinues.contains(p)) { + continue; + } + if (visited.contains(p)) { + continue; + } + visited.add(p); + for (GraphPart n : p.nextParts) { + if (n == r) { + continue; + } + + if (loopContinues.contains(n)) { + continue; + } + if (visited.contains(n)) { + continue; + } + if (!n.leadsTo(localData, this, code, r, loops, throwStates, false)) { + common = false; + break loopprocess; + } + } + toProcess.addAll(p.nextParts); + } + + if (common) { + return r; + } + } + if (commonLevel > maxCommonLevel) { + maxCommonPart = r; + maxCommonLevel = commonLevel; + } + } if (maxCommonLevel <= 1) { return null; } - return maxCommonLevelPart; + return maxCommonPart; } public GraphPart getNextNoJump(GraphPart part, BaseLocalData localData) { diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 65245881c..3765548e9 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -1374,6 +1374,25 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testSwitchIf() { + decompileMethod("classic_air", "testSwitchIf", "var code:String = \"4\";\r\n" + + "var a:Boolean = true;\r\n" + + "switch(int(code) - 2)\r\n" + + "{\r\n" + + "case 0:\r\n" + + "if(a)\r\n" + + "{\r\n" + + "trace(\"A\");\r\n" + + "break;\r\n" + + "}\r\n" + + "break;\r\n" + + "case 1:\r\n" + + "}\r\n" + + "trace(\"B\");\r\n", + false); + } + @Test public void testTernarOperator() { decompileMethod("classic_air", "testTernarOperator", "var a:int = 5;\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 7d987ff82..76057df37 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -1364,6 +1364,24 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testSwitchIf() { + decompileMethod("classic", "testSwitchIf", "var code:String = \"4\";\r\n" + + "var a:Boolean = true;\r\n" + + "switch(int(code) - 2)\r\n" + + "{\r\n" + + "case 0:\r\n" + + "case 1:\r\n" + + "if(a)\r\n" + + "{\r\n" + + "trace(\"A\");\r\n" + + "break;\r\n" + + "}\r\n" + + "}\r\n" + + "trace(\"B\");\r\n", + false); + } + @Test public void testTernarOperator() { decompileMethod("classic", "testTernarOperator", "var a:* = 5;\r\n" diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 9bfc4257ec8127d7738d9636b114080f8fdb3857..327dc983e2498c4de0453102f2b85ba68d5b47dd 100644 GIT binary patch literal 20400 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 literal 20257 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%0A4Y+(x*Y{HvRp{* zKKLH>8*&@#<~`1ccrb0wAAW`)o)KS88p6?z;Ajlt4Uu8d6k`Mr6CXlG9b$3jC*6vL zh!@yqpKm4h`Fc{H$2fwG=<^*?LfIzt`3U-q-PqA`r0qNL-i|ooAjZls@1|m~=H=Z0 zNTcLIjUE77sO0=+ZtU6GqkL(?-k|3!AY$Zck5LZY#y!iaurG=+esCe43U4Q2yxb8S z4~z#y2^ZBHfbk1MGVzP>)-r5m`}FjNcX4qq@6$6HV0r=vW%}eT2U$ted#tqeJqAaf z{XT`RqqB^Bzv{Cz{hGmP#?tz0?$(B9C#~;u%?VECb~?h~Cm(<%-POJz>-kj+Ky>{2 z1F}d8BdbVznWXRm!k%k_FPJaIOxI1kjyGrMy~OeMCyjT7BRC)M-X~EhHly>`%<(2j zADp72JF1%=cbI!bruI6~nMj_ky+Ki2-3-1A85TVb6nGZmIDm)yCU*D02brN>R zI)cXmyWes}oeTnR0=u^$=lbX*(E0&gpSTMDQWjk)Gbt{2^un^**69h*$@p12VU34P{1|{if_>0kYq&+B%)~` zfoX)SOP@uN{5%oK-*F^iw=i$Hk8=cP03fsx#Y76Id`SmX{*GxskTy2Yc&UPOYLZO( zO-!ax)RZZ|iHHz$j~$Ec&mP@lb7_yoPbrwx#BYYgPt6xe)I8o191GOG5n(Q5b3mo{ zOvZ^_TaV^~%5dPzDK@s9EbZ5_;h;{wRK^vyA*k>R4kqM3CPMx?3GxY!;3z;o#CObk zKz`qZoTy-$x6`JA898fbM_&NwQF!0Cuq``ayc$iZN05bSB zeFXc(qL1*a7Z6<85bJ5=l%7V%MjTQzT0e%@&(5X4W5iSVeF}4o_??w_n1AJiA*oB9 zlLdm-RH61EUsEHvf{9J@6i7z z*pUpsMXV#T0NAy`XPhkUQ#pDuf|Jfc^McZXP1x9QKI6y@o1hP)3v4)DlHV~-d7sPu zJ75i1=#yfXmlpWx78Z`grO1pqWL%1l1wSPdPl&%K5x>b1EC&An5oN4^An^YJ`2Q~} z;FH)2ps2Y5K8dUVGT_ku$?a%%+BIsJ~T` zKw$3K^c659e-vYPGw2-gSjSEuQBq7Nb^8g}Z6bN5XF5GI>eokb>ua$~C0Y{29ZM=Nxp64g2ytlucY-e zatQbgS15M6=27Xk!uvU{d9Xq6$2E`2w~!3&5DfvnC0rNDMsLP-krLlqChtwgrIEsW z!=(}RCi4qH+!7m3CHNH>bLeL$4jsP@V-}p7Sg@VbB(|WM9l?BaL3tg)PiaA&FOf*z zO7zh|ABYglH<{GPjhb`=+NB~|AM_bW1*o?$3%kTy;LL^pyWl#_HSYoPrb*Am^T~NCXVC0 zq`CDuf9{PY%7jA#Tjq z{z9`wQM@LiC^|5-E&SY$iO{8q2wjwfklztp4TLV2$c^Vp^6LDXiIH(qJA@xvB9dOj zNeUr``12q5xv0N`FE{cGISi0n&{Lv}JzbHwcSVM_Rl&XRowz2} zGb_?ys;@|=R}9&=4D{c!qu00~^%;DN+bqL@`sOGyI}?$)DG8Z1j$j**xmBX$47aH( ziSLx2IwCk~D^(BbbgZ z;FN+E-1dzz#4M_&ByfRrX(V0Y@`uN>nJBHKF7O98=o{JP*PB()#rFbe?lQWNH71QVj;G9uz55fCUwZTvKt+1F!{ z0>hu?Ar3n`s<@ec znjx?0uXsez@K+`v|K0eyqj7zKJou-WqlAwNT1BsA_a%`fODJ=C9V80rg)@!uyCW+U?d034&^%e9^eSO5S3 diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 3603aceb188cfe4542010c62f08755575080599b..10958fd5327b1c556f6f0fa133ba549a05262036 100644 GIT binary patch literal 26138 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 diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old index 47a6fb9d8..ccc475909 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old +++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old @@ -16,7 +16,7 @@ CONFIG::timeStamp - '01.12.2021' + '02.12.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml index 47a6fb9d8..ccc475909 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml +++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.xml @@ -16,7 +16,7 @@ CONFIG::timeStamp - '01.12.2021' + '02.12.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index 90a4f0700..cd9e4b9a6 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -91,6 +91,7 @@ package TestSwitch; TestSwitchComma; TestSwitchDefault; + TestSwitchIf; TestTernarOperator; TestTry; TestTryIf; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestSwitchIf.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestSwitchIf.as new file mode 100644 index 000000000..842d768ac --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestSwitchIf.as @@ -0,0 +1,23 @@ +package tests +{ + + public class TestSwitchIf + { + public function run():* + { + var code:String = "4"; + var a:Boolean = true; + switch(int(code) - 2) + { + case 0: + case 1: + if(a) + { + trace("A"); + break; + } + } + trace("B"); + } + } +} From 4197e4913bdd9931c00e247476867fbc1de87db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 4 Dec 2021 08:28:48 +0100 Subject: [PATCH 08/33] Fixed #1763 AS3 - initialization of activation object in some cases --- CHANGELOG.md | 2 + .../flash/FinalProcessLocalData.java | 3 +- .../abc/avm2/AVM2FinalProcessLocalData.java | 21 +++++ .../flash/abc/avm2/graph/AVM2Graph.java | 23 +++++- .../ActionScript3AssembledDecompileTest.java | 6 ++ .../ActionScript3ClassicAirDecompileTest.java | 7 +- .../as3_assembled-0/as3_assembled-0.main.abc | Bin 7021 -> 7230 bytes .../as3_assembled-0.main.asasm | 1 + .../tests/TestActivationProps.class.asasm | 76 ++++++++++++++++++ .../tests/TestActivationProps.script.asasm | 29 +++++++ .../as3_assembled/bin/as3_assembled.swf | Bin 4250 -> 4362 bytes 11 files changed, 161 insertions(+), 7 deletions(-) create mode 100644 libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2FinalProcessLocalData.java create mode 100644 libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm create mode 100644 libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.script.asasm diff --git a/CHANGELOG.md b/CHANGELOG.md index 74728161c..b82408689 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - [#1762] AS call on integer numbers parenthesis - [#1762] AS3 - Auto adding returnvoid/return undefined - [#1762] AS - switch detection (mostcommon pathpart) +- [#1763] AS3 - initialization of activation object in some cases ## [15.0.0] - 2021-11-29 ### Added @@ -2325,6 +2326,7 @@ All notable changes to this project will be documented in this file. [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 [#1761]: https://www.free-decompiler.com/flash/issues/1761 [#1762]: https://www.free-decompiler.com/flash/issues/1762 +[#1763]: https://www.free-decompiler.com/flash/issues/1763 [#1750]: https://www.free-decompiler.com/flash/issues/1750 [#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1681]: https://www.free-decompiler.com/flash/issues/1681 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/FinalProcessLocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/FinalProcessLocalData.java index e39342e1a..d129f4959 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/FinalProcessLocalData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/FinalProcessLocalData.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash; import com.jpexs.decompiler.graph.Loop; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2FinalProcessLocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2FinalProcessLocalData.java new file mode 100644 index 000000000..941f76f88 --- /dev/null +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2FinalProcessLocalData.java @@ -0,0 +1,21 @@ +package com.jpexs.decompiler.flash.abc.avm2; + +import com.jpexs.decompiler.flash.FinalProcessLocalData; +import com.jpexs.decompiler.graph.Loop; +import java.util.HashMap; +import java.util.List; + +/** + * + * @author JPEXS + */ +public class AVM2FinalProcessLocalData extends FinalProcessLocalData { + + public HashMap localRegNames; + + public AVM2FinalProcessLocalData(List loops, HashMap localRegNames) { + super(loops); + this.localRegNames = localRegNames; + } + +} diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java index 061c21b77..c211c9b53 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/graph/AVM2Graph.java @@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.FinalProcessLocalData; import com.jpexs.decompiler.flash.abc.ABC; import com.jpexs.decompiler.flash.abc.AVM2LocalData; import com.jpexs.decompiler.flash.abc.avm2.AVM2Code; +import com.jpexs.decompiler.flash.abc.avm2.AVM2FinalProcessLocalData; import com.jpexs.decompiler.flash.abc.avm2.CodeStats; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.instructions.InstructionDefinition; @@ -46,6 +47,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.stack.PushByteIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.stack.PushScopeIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.types.CoerceAIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.types.ConvertIIns; +import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.ConstructAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FilteredCheckAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FindPropertyAVM2Item; @@ -114,6 +116,7 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; @@ -1966,6 +1969,24 @@ public class AVM2Graph extends Graph { Map localRegNames = body.getLocalRegNames(abc); loopi: for (int i = 0; i < list.size(); i++) { + if (list.get(i) instanceof SetPropertyAVM2Item) { + SetPropertyAVM2Item sp = (SetPropertyAVM2Item) list.get(i); + if (sp.object instanceof FindPropertyAVM2Item) { + if (sp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item propName = (FullMultinameAVM2Item) sp.propertyName; + if (sp.value instanceof LocalRegAVM2Item) { + LocalRegAVM2Item lr = (LocalRegAVM2Item) sp.value; + AVM2FinalProcessLocalData aLocalData = (AVM2FinalProcessLocalData) localData; + if (Objects.equals(propName.resolvedMultinameName, AVM2Item.localRegName(aLocalData.localRegNames, lr.regIndex))) { + list.remove(i); + i--; + continue loopi; + } + } + + } + } + } if (list.get(i) instanceof SetSlotAVM2Item) { SetSlotAVM2Item sslot = (SetSlotAVM2Item) list.get(i); if (sslot.slotObject instanceof NewActivationAVM2Item) { @@ -2155,7 +2176,7 @@ public class AVM2Graph extends Graph { @Override protected FinalProcessLocalData getFinalData(BaseLocalData localData, List loops, List throwStates) { - FinalProcessLocalData finalProcess = super.getFinalData(localData, loops, throwStates); + FinalProcessLocalData finalProcess = new AVM2FinalProcessLocalData(loops, ((AVM2LocalData) localData).localRegNames); finalProcess.registerUsage = ((AVM2LocalData) localData).setLocalPosToGetLocalPos; return finalProcess; } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java index e95a32d4a..01cf0321f 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java @@ -16,6 +16,12 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT addSwf("assembled", "testdata/as3_assembled/bin/as3_assembled.swf"); } + @Test + public void testActivationProps() { + decompileMethod("assembled", "testActivationProps", "\r\n", + false); + } + @Test public void testDeclareReg() { decompileMethod("assembled", "testDeclareReg", "with(other)\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 3765548e9..4cd5aa870 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -1039,7 +1039,6 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile decompileMethod("classic_air", "testInlineFunctions", "var first:String = \"value1\";\r\n" + "var traceParameter:Function = function(aParam:String):String\r\n" + "{\r\n" - + "aParam = aParam;\r\n" + "var second:String = \"value2\";\r\n" + "second = second + \"cc\";\r\n" + "var traceParam2:Function = function(bParam:String):String\r\n" @@ -1057,8 +1056,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile @Test public void testInnerFunctionScope() { - decompileMethod("classic_air", "testInnerFunctionScope", "a = a;\r\n" - + "var innerFunc:Function = function(b:String):*\r\n" + decompileMethod("classic_air", "testInnerFunctionScope", "var innerFunc:Function = function(b:String):*\r\n" + "{\r\n" + "testProm = 4;\r\n" + "trace(testProm);\r\n" @@ -1069,8 +1067,7 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile @Test public void testInnerFunctions() { - decompileMethod("classic_air", "testInnerFunctions", "a = a;\r\n" - + "var s:int = 0;\r\n" + decompileMethod("classic_air", "testInnerFunctions", "var s:int = 0;\r\n" + "var innerFunc:Function = function(b:String):*\r\n" + "{\r\n" + "trace(b);\r\n" diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc index 7a52bbf8efc5543a798b77bbaf06c7b8b6b6d135..0654c160d3afad6bf1b9741a448188d9abd26a81 100644 GIT binary patch delta 2639 zcmZuxNpKs-75%?4gPz7Z1W9bRWL`fq`pa8Bz$yzK@wB?Pm zEP0V_MM@`?D$BQ2l8O>Lc5=uel~nnZE9FY4OH!3noJ&g5A(vFSm~NnulLz(j-~4|6 z_3vf=zkC1G&veKD$pU=!kUi>DFW=lOUdK@!!*TV%=JJ&d=gDi=*EW``XP4JEMi)2M zHj5i;SFg-mzj|%`tKZM7Ep$T+tX)}+NWVVtJ+$A|I(?+`c#s8qwbw$uAr@RyLHuS^ zO~kH*vSF7B;l8LVdNFz_`f~Jg^eUgxy27CDQ?r^DycT>Vs0Dw6p@$gyF@`n%NZaQR z{}RKGG5jkG{~DuxP5i0WgEQR2?hL9KB#Hyw*!=^f*iTXXe=bbEou+t{Vv6EBNZAHu zHz?jmYAV!qTa3E+pIKt7fs#f_&QQ`sNi!ual(bS3qoj?Jc1q%ubkIIG>mqdxwCe(8 zX^JN)Qi^*hc2oBr>eQ+CeWc!Q+P{}g5$0FedBQ$H!up+cja2KRt_Mh6KSa9cu9);J z#U#ZAii;FCDVn0bEsD3q$a}&*7Pgn-kA(XIsry5u&O_9Bm^x2TkDq#u(d;bkIYsv( zRTZjIswSxS1EjqlAyww6lH$L04eAENAVVKR#xTls2mj7B-VjIDfs7-$2#z#V9&{WB z4Lu(InP-B3=`p{@RF@-JraMgj$a6qYv@LXKa1Y!vP6;~p3wue}u&@zfqr%389f+PuY=+!_;#ONeA# zC@!Pe&rvvm>S>sRd02oIh$`q4WDRQ-Ko5o$AUXyWaMWN(0VRwP1=M=1SHRhXh5|H( z)e2}G7*&9!u|@%xiA@T)d$3UfPe1Akc=uyW0pAF=DVM-Mfh`K?(-=^o>IlXa2+Uxs z0@bIKh6yo?lL4yW0-{3cGM&XL1#0uytU$1c?FxjJu}*>T8u}H8h%1MH;cfGUTEOS2 zr2-qpgh1(~f{SPT_2=(nKm*v$B|!H8j%Ec4WLNUM3O^ly(yC}SZLU_ z{6GGVHqVXZ!@MU|^vq{c#f)HjD$Fg(T(O8@hxwRZaK9zrS1pHO2l?lEqVJ_ess{kr z0$tErZ_Oqbolm}5P;Dy!L>5+ zAU7@dI#yZ0>$0A!mS))1{A?g@blu>^E2nXj`Gg}!|pd^#**bS>>B>h zz^3QD65+DtHtZ&DSGVC1zh529T02u|&)pq){AsW7itxU>J89>RQ17Xz-z_Cyu{?&| z$aku<&9CMV4YB??z!B)LRQal$vtW4*TjzZ8|B49#=k;d!-`smd~(b{Bcbx(>aNlSjK$k zO6TN3xP2M(LSM%8uoQe^&Ove~X^Jxt0~zk9ZH}G;1Q4CFtoTt$anbS{b{ik6?KqVe z^XjwZN(UtNVyWsuiT_)Uk4gM(8Ba+3mogrb`0FyBl=zD>Ug3YJ{n?a9M8v|pW#=oq zgJpN5>~dvyT)3ubfQd?#AC#(Gvvk95;lBu`*}EtgxjpITe+xFUJO6)ELS62g@(5nB zsth~8he9dr;0Ukwnu?(4L9b%bp=6u9&+1*Y?ew_~uhRCu$N0R^UI4 zbommc^Sn?F75P6RtDg5u^KMu{!*1p$qbWScx1v!z#XpVK52oUFYRb@v5Lgu(Ifc%y zZYOn|mTmKlY?~H1R47)~@Nr3N-U=CZJAV;PY)vQggQ-J8odt!;$)yKtT39{I%fGPd&ySs^m*tq42>g|%MZG{cHPQ+KlbyFPMrhu!6it5}p xw-1W$0X9(-HSi2e_y3IOU}h}e@ub)xKCBMeSk|PV?3$Z$>#kW5!}g1`{{f5H<&*#b delta 2389 zcmX|>S#ul55rDe~yOHsBD(uxu&fR|Rbbyx>| zi?l4thjNG>yDF7D=OMD4O3LqX{0}I{p(~YgUY%4bW%@NQ%nVS-q8j~ePhT^=HGdlV z&j8aQ3#1p|iyiixAdce%PO2w1)^6Q*&fmFv2e_RxVo zc7iaU!WId8ii8a~<4siSqOM;cbv;9xdrwrjM6r`%iDH@JeTrF%?@)Y5@v&I@NJt;W zkA-@U)crnE=L~h8q|W3V_4uggH0?Q0`{rpsQdOZUrD~FTpCCQ_AyUPnN{TD)VLi;y z$B;3MF~5W9$P4bt;0}^?aHOI3pri2RXYNsSbyh8oEbu?Lr^M#baa72#kYhrQ3mFwM zE@ZO7n`1s8coe}=PsF61s36b?VaLHG(H$ae1bhaT*eHZ0M&g7`Kulu1 zk+4Z?j-(xCw0ygpEOmG$(_E4MSR@*-Y38$V%*PB5VqJCHDCV8-xLggKdPJ zgrgFN6NJseafzd?gymsE;$$6RM_^iFzJsvSFe~xYA;MRsJhqdUH&qSw>t!-(61@21p*j;ULWA-^~>VYvw^|RtTcjwwqgn63Lb3 za;4L`(%D?;Os!h-%b=o#hF#C^>7DKF2kD)n z+bp}6GG;j=JUunfx1{H)MGQN_|E!nXZ^-vG%VF3dZq}s+hgYZ`0AR~>S!>%mpI&jk z_-0ux9CP$it?q||1Cgt~mg`L!d&g1?JItTfB~8yxy67>>o&>2^#lHIreUKOa(VG9; z(*K&J8g`Wbqpqu`C-VU=tLZJ@3-cxxW=N^0a1!!>mjHdxSc}?}Q668POrGuXP+&*)+e47rsYW|YKb>w z$W2Q#>;V5;AlcaUfS0?3Lubw59qDk}Vuszojo_&JHTk}5xePnVuLn0gk19o9w%mr@ z%>NZ^#}V$Y5BFZ&%V*r%dvf*}kI;(H-tE1Nb5A7iuXX%xCHNJ~W7tjnQhjghg94%< zc5eY5hoM>z_hii_%WK$v{=7c9xGubwT+=RCQT2K;rzOnv3e&QhSoMiQvY7tQg9F_y zKET|HQ!Hm>1ZJE<5ybER=PeS z`M*{BnB*U-JR$kpDvwD1y2?|Me_!QQJ`(LW~=H{i|x$*^}(ZgO|p#fy<<_UQj_+mUYf137|QR-Iwj@vkB#n*869R?ml( z6gRAZVR!IobSQgu98>#sOt(ajC0yMPW!{vQpf0AqE6?q_%DKs_hzf=&xhO>KK&MKdJj2nLA6GS=RQGnOB#XS!R5vVbpzJwzgu0 z3|r@aZ%DPg2HKC}zGXimC9Z^e@2?#jd&!OO^n&O~3~Y%fV%@%EWuDinrfa+$yY6|f zQukFWY}hUQ+n9-$KaR(6p2y>j!>Od5${QLH@oVB7^XTmEb5h5Gyeu!s%km;PR4CWB z@IfWjRV!lH?fh;$H9ws$9x-Q+K)Q6w%zTb!xw8vdI$!{NZKl)f-HBA<_VaRQ1zBQ2 dps9a8g@*W{|9V#sVo2h diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm index 489896ae4..0f8b76834 100644 --- a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm +++ b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.asasm @@ -29,5 +29,6 @@ program #include "tests/TestSwitchGoto.script.asasm" #include "tests/TestTryWhile.script.asasm" #include "tests/TestPushWhile.script.asasm" + #include "tests/TestActivationProps.script.asasm" ; place to add next end ; program diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm new file mode 100644 index 000000000..f2e11ef7d --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm @@ -0,0 +1,76 @@ +class + refid "tests:TestActivationProps" + instance QName(PackageNamespace("tests"), "TestActivationProps") + extends QName(PackageNamespace(""), "Object") + flag SEALED + flag PROTECTEDNS + protectedns ProtectedNamespace("tests:TestActivationProps") + iinit + refid "tests:TestActivationProps/instance/init" + body + maxstack 1 + localcount 1 + initscopedepth 4 + maxscopedepth 5 + code + getlocal0 + pushscope + + getlocal0 + constructsuper 0 + + returnvoid + end ; code + end ; body + end ; method + trait method QName(PackageNamespace(""), "run") + method + refid "tests:TestActivationProps/instance/run" + flag HAS_OPTIONAL + flag HAS_PARAM_NAMES + flag NEED_ACTIVATION + param QName(PackageNamespace(""),"int") + paramname "myvar" + returns QName(PackageNamespace(""), "void") + body + maxstack 2 + localcount 4 + initscopedepth 4 + maxscopedepth 5 + trait slot QName(PackageInternalNs("testing"),"myvar") + slotid 1 + type QName(PackageNamespace(""),"int") + end ; trait + code + debug 1, "myvar", 0, 0 + getlocal0 + pushscope + newactivation + dup + setlocal 6 + pushscope + findpropstrict QName(PackageInternalNs("testing"),"myvar") + getlocal1 + setproperty QName(PackageInternalNs("testing"),"myvar") + returnvoid + end ; code + end ; body + end ; method + end ; trait + end ; instance + cinit + refid "tests:TestActivationProps/class/init" + body + maxstack 1 + localcount 1 + initscopedepth 3 + maxscopedepth 4 + code + getlocal0 + pushscope + + returnvoid + end ; code + end ; body + end ; method +end ; class diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.script.asasm b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.script.asasm new file mode 100644 index 000000000..711260a68 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.script.asasm @@ -0,0 +1,29 @@ +script + sinit + refid "tests:TestActivationProps/init" + body + maxstack 2 + localcount 1 + initscopedepth 1 + maxscopedepth 3 + code + getlocal0 + pushscope + + findpropstrict Multiname("TestActivationProps", [PackageNamespace("tests")]) + getlex QName(PackageNamespace(""), "Object") + pushscope + + getlex Multiname("Object", [PrivateNamespace(null, "tests:TestActivationProps"), PackageNamespace(""), PackageNamespace("tests"), PackageInternalNs("tests"), Namespace("http://adobe.com/AS3/2006/builtin")]) + newclass "tests:TestActivationProps" + popscope + initproperty QName(PackageNamespace("tests"), "TestActivationProps") + + returnvoid + end ; code + end ; body + end ; method + trait class QName(PackageNamespace("tests"), "TestActivationProps") + #include "TestActivationProps.class.asasm" + end ; trait +end ; script diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf b/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf index 6fdb3d7a9f72b16a5eac7e23a0e790f125fd1c45..8025de6d453db8325b3ee94e29dc042bb8e77e6d 100644 GIT binary patch literal 4362 zcmV+l5%umvS5qW-9smG%+U;4{dt1kKpL4gtfZGKZ00aq%6d_UsK@tQ-EtEuy;wH(G zD2b8<%cRJQiwj=ZATEQ2OEx=p>?F=+$8EZ#o3pfO+9qxP0e^YuQ(q{hqM!PG?Njnp zE3bV)&&(wVLU!}D-`B?iyl2iiGxIxV&YU@SNbV52M@V3kkYhk*eVv4m*W3OX2)S5D zXD08?&iCwW}5h*MY}9Xo&i{AfHenn(=eh~eUHzGUnS z=Zk#7tW-06Bd$??*oO0>Xz`y}&+B^i^EEjSDGHs4pIcvkpmx`lfBV!1Z zHYYPqVZ$g*8JnBAtZ8t#(VgLA_%2`v>X(wg%%;&6~ zp3^(uxiyNs%brYjtCH%P7D!T!9&NZVQt~TiPsSOI917 zI&GG+TVmJIq0M45*P#CaW=1DzP@(D+Ol%4YuGpI2xnUA#YE$QETncW+|TDR zr_zT(1hWCRp;)|Wm24*sR`Yt!Ng28Ma^B?KDyCJ=@nrKoCbzEeY-`TuizNg1$DO0) zto(Y(RyKC?MQvjjkLjjXv`iFv}$P;4;I4hkUhjY!-v$J!vtM?XHm+nn3%&{xGC2P7+Fm_?K zX*OHj%o)4xS@G9NGY;0rY#!5hPMs?hoI;DpRX&EV5B2kbd5qQV0?$|L*3#r*=EH*T zS{@VM;JIwMaG3ffo83hY%S6s%OSs?}9!_nkRLJJnS#5SwPTstst>zqaVpTE>-AJc} z=^NQ%$wG&;l!c|!YH*vL9PV>Ns^DxFt-?(wZKSPH#iYHy->m|TuF~QwE_NRk zCZF2?uiLq9IU5ZwTP|gDMP)sg8sjA4bu*MNzs4ps+sdxnCE2!idk( zK@(m#;rS`^Z0x!M9t$pG!|STITF|Vt;=E?;s!j>ltrd)X+SzEsBI9gXb*Uj2@@ctH z&U^TI;^&KTretG+QO;rERnfI|i_=1h@>7O=owd{UT>Wi7at;rxaJWwSd@UY4+WR{z za@&!S)w7WV+KczXS%SXTt3vl~q=n|i$96vJquwEY-SgYFMPbrVqZv9BF zsLFxo6$f>^{dqmF=ATmXn%-Me{x_Aqy>7%oLGSo1WumoCD|Dfn>iLSVY&qGqx}8mz zY}k=^c6RRgng5JuCvYaf{8^RY_qOUmT|STqdQ}oU8}f!;4ZRl1g*HNt=>Ok*&#MWK z$G_?SoZsXB1q9xQ!0$uQ6Z}2|{{Vu22*E#s;2%Tq2N3)d2>vMq{|thE4#B^G;D-?W zAq0N}!5>5LClLHg2>ulWe+t3BhTzX2_%{&zTL_))0jbGDL6xOuUq@Set6vj>)?BA- zR9iq&WKTde`fWAHTeVZrkf2?Hb_*I7^q8Q>1?>^ESI`rJ_6Zsh^rWEuf({6JO3*<; zqk;|z8WVI_&=F3d0mi=z6wXmV`gizn=_Lv`DGX8g3Q$&}tW4oMK;sJazKOkFD*33? zN~Ja`wNt5sN`5K@s1&49CzV1}>Y`FNmBLgyMy2CadO)QfD)mz71eN-z6rs{dD)m!o zfJ&$6*#KUcp_keo82XyRhbnImcQ3@#vCWS2uaSE?fcmq4$!RK4}Oi=heY<>>3;Tu4;>r{J@ zYIkX43vIkb6Zh!p`*Z@Rs!)|ub&xiF9q5^F0#zPTWr#r=gDwUtgH{G!1`Q0_8MH9y zWEdszFz9B`!Jv^rfI*Of&cMf@i9wiwpFuMN#vsIWnfZXV0&4@-4y*&1A6Nib5LhR$ z5U?&_-N3@YjsZIktOr;xuoJ-gfJK0v1lA910N5#DAAs~Kkz=I#0r?K`Kw~30`jH9w zfBAnX%h7{2{(ou%WDj|lG;o$mAYa7i5O3pFQLGm+pT5V=EQI?+G@ zLW2^UCSJ}q_$BrNY36K8Kw_6kD`(p}C3c1QIUDGf*c=IQwks^LdHkIo+2d^zyF^ZK zwl5^H8Pd<$fp&>aktk<}dL(w0jBs}JxWpDng0thg#3soZ&Yq1(>;{?S?1hsOyGf=v z`@#u{T_;yKJJTw$i)5a&3j-2cB-c6nVxPobB)2%bcuWGaB+p+4^-F+*E=%f{0bp*L z+yliYu?yq@AC~Nu*fsJBXP5gWc8jcXcCAZdv&7_VxPzGyc|=kqLqZBPBcca7 z6atM9REVU5UmijXpDeLyhKuoILn+W8C*Ok;XqlIn73swzH+{*KF`&P zgjjuhaf_@;@wL10wOjGE+wrx<_*x>qR!)+z_}I-jRK>t5u2l^{Q8i(8fhWD9sDZtB zgglLS_n$31Pbf)vN~Rt%Gaea2@WF8q3l5R~m5B9V40*8wu7i{s)04vfwge3@x6GjsYb|tgnS$!CQYfPru)!^l$N4> zQB&z@!y}zi_7fWQ{iagEVK`N^Ql;Uem??+df zhK#0&)UINrCl)8j0*(lBL>&>|01jy+)v(=(`pz0;s1CA=Lt^$kh(3)+R8w6WkG%^i zHTs6<@z4e=UYFL!7hlAI@G=1p>8`@RCE!y@Eo^rqO1K7ptPcJ-hi`Zgk0hdxP9xw| z0;e?u>Zt;KRRF!3q+vUZ<9lmBC+dLuI8YZ(h^N%~IJ~hGjhf!fjrUUC%-Ux+g|)}G&5TMz!*i(5PZ`f|f3Bxs{kvgPNj&u!?)UFU7uU>Qp z_X_obo*`K6NF=?l_hCc!^=@onU#Hl}`+74rsw-*x`oD_gidWb2j#$e^vLS5upnk08 zL88usaqhtc=GIiP3u~0pj_E{rwdxVR#FG09vBtOed1Z+;VXI)<{PuoK+sDbLtJdBY z*7C{5uzei$6E$mR>a3mR*8Dv2_Tv`hAo_9l3dFV-0Wc5XA%V-}Ts4H-9C9t$6t;Do zdA0Pm=m1J|+j-Z`OH3z2Z9C$&NRqq}5FyUf`=K%&SSQ*X?&tD^N zZUE{|bDbXKW*^5NlIVUkJ|sFuct_YH@mNIC{wI|RDmAWLfY6D4{I%m1{ukTJRiC~o zd@_?QVf!SSp04?HrOu}r9+Y25A}TAmIQ^a*j!Dipf#5H2{y$y)70&n63c&Lrz^m(r@x4bp=_!%oEoY6nz{i zbp=)L=Yw5A(>sxRT!HfZ(>dqS38x;pYqwJIj8!W5b4mPMt5oh+Dn_NUQK?`bdfDji zZj;+IyUjJXx#2d8ZgU5l9z4IZ)j)q;1Uj44!}bY`=Ugq&^L2q<;DNrs7uUTQ7~H$J zfN$O&=AiFCFw>g(mg9y$6&oJ*Ky}<#KWiM+#zoYtk`(OLX!P z+pTE*TFtHNb#A?QP&j#U=Q+u@i*g%J;%}PGDfKF7P52@tH>&IXwpj0L$=0wvfb(zG zfN#|SFDiJ4dI$F6pMb)*{OPk6Bx{g*3l=}BB7*L1|b$Te;J_=+feELO+6 zI%A*5F2)NQd;F{`q6YkgJbrd8qBb*pv3O)XK*+O@{%@5EAATbC1sooJ)~f&5Rh*1z zcq4+|;W2HQ+^#O-8)6Z;WLwzoLz{Q_(cw3dyZl}?%I{Sx@T}V+Ily=z8%9=g*<_l|P?nl(8Pw>U_lMjAs%GmRAH8*zn>aAo)*!H3N zVGZe(I;3Te^bzn2#V4>!Jh+pa|wA%wdq@ZYZ3#lJq8g zOY@uLNm-XT^(b8*RVs41QhBpd`Nv8H1%B&Usc!q%#I~1`{;=JP`bV{euhuPmjW7J5 zP+JgtWkX~c!`dsg@>c`i+blpy&fMRSdF%UkJevOJs`jIy0effxYc{TMUA#B6(Q%E+ zFY&AX1Af&{5?Lii)w^#A?;a%sVY?rlNY%VE>%2>I@216(m19?pr6ut<8 literal 4250 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 Date: Sat, 4 Dec 2021 09:15:19 +0100 Subject: [PATCH 09/33] declarations on activation object properties --- .../decompiler/flash/abc/avm2/AVM2Code.java | 39 ++++++++++++++++-- .../model/clauses/DeclarationAVM2Item.java | 36 ++++++++++++++++ .../ActionScript3AssembledDecompileTest.java | 2 +- .../as3_assembled-0/as3_assembled-0.main.abc | Bin 7230 -> 7253 bytes .../tests/TestActivationProps.class.asasm | 7 ++++ .../as3_assembled/bin/as3_assembled.swf | Bin 4362 -> 4378 bytes 6 files changed, 80 insertions(+), 4 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java index 49d9c28ed..699cb8955 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java @@ -250,6 +250,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.xml.EscXAttrIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.xml.EscXElemIns; import com.jpexs.decompiler.flash.abc.avm2.model.CoerceAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.ConvertAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.FindPropertyAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.InitPropertyAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; @@ -1861,7 +1862,7 @@ public class AVM2Code implements Cloneable { return assignment; } - private void injectDeclarations(List items, int minreg, DeclarationAVM2Item[] declaredRegisters, List declaredSlots, List declaredSlotsDec, ABC abc, MethodBody body) { + private void injectDeclarations(List items, int minreg, DeclarationAVM2Item[] declaredRegisters, List declaredSlots, List declaredSlotsDec, List declaredProperties, List declaredPropsDec, ABC abc, MethodBody body) { for (int i = 0; i < items.size(); i++) { GraphTargetItem currentItem = items.get(i); List itemsOnLine = new ArrayList<>(); @@ -1905,6 +1906,38 @@ public class AVM2Code implements Cloneable { } } } + if (subItem instanceof SetPropertyAVM2Item) { + SetPropertyAVM2Item sp = (SetPropertyAVM2Item) subItem; + if (sp.object instanceof FindPropertyAVM2Item) { + if (sp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item propName = (FullMultinameAVM2Item) sp.propertyName; + if (!declaredProperties.contains(propName.resolvedMultinameName)) { + for (int t = 0; t < body.traits.traits.size(); t++) { + if (body.traits.traits.get(t).getName(abc).getName(abc.constants, new ArrayList(), true, false) + .equals(propName.resolvedMultinameName)) { + if (body.traits.traits.get(t) instanceof TraitSlotConst) { + GraphTargetItem type = PropertyAVM2Item.multinameToType(((TraitSlotConst) body.traits.traits.get(t)).type_index, abc.constants); + DeclarationAVM2Item d = new DeclarationAVM2Item(subItem, type); + sp.setDeclaration(d); + declaredPropsDec.add(d); + declaredProperties.add(propName.resolvedMultinameName); + if (subItem == currentItem) { + items.set(i, d); + } else { + d.showValue = false; + items.add(i, d); + i++; + } + } + } + } + } else { + int idx = declaredProperties.indexOf(propName.resolvedMultinameName); + sp.setDeclaration(declaredPropsDec.get(idx)); + } + } + } + } if (subItem instanceof SetSlotAVM2Item) { SetSlotAVM2Item ssti = (SetSlotAVM2Item) subItem; if (ssti.scope instanceof NewActivationAVM2Item) { @@ -1942,7 +1975,7 @@ public class AVM2Code implements Cloneable { if (currentItem instanceof Block) { Block blk = (Block) currentItem; for (List sub : blk.getSubs()) { - injectDeclarations(sub, minreg, declaredRegisters, declaredSlots, declaredSlotsDec, abc, body); + injectDeclarations(sub, minreg, declaredRegisters, declaredSlots, declaredSlotsDec, declaredProperties, declaredPropsDec, abc, body); } } } @@ -2088,7 +2121,7 @@ public class AVM2Code implements Cloneable { // //int minreg = abc.method_info.get(body.method_info).getMaxReservedReg() + 1; - injectDeclarations(list, 1, d, new ArrayList<>(), new ArrayList<>(), abc, body); + injectDeclarations(list, 1, d, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), abc, body); int lastPos = list.size() - 1; if (lastPos < 0) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java index 3416ad192..c200570d8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/clauses/DeclarationAVM2Item.java @@ -16,12 +16,15 @@ */ package com.jpexs.decompiler.flash.abc.avm2.model.clauses; +import com.jpexs.decompiler.flash.IdentifiersDeobfuscation; import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.CoerceAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.ConvertAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.GetSlotAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetLocalAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.SetPropertyAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetSlotAVM2Item; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.flash.helpers.hilight.HighlightData; @@ -148,6 +151,39 @@ public class DeclarationAVM2Item extends AVM2Item { } return writer; } + + if (assignment instanceof SetPropertyAVM2Item) { + SetPropertyAVM2Item spti = (SetPropertyAVM2Item) assignment; + HighlightData srcData = getSrcData(); + srcData.localName = ((FullMultinameAVM2Item) spti.propertyName).resolvedMultinameName; + srcData.declaration = true; + + GraphTargetItem val = spti.value; + GraphTargetItem coerType = TypeItem.UNBOUNDED; + if (spti.value instanceof CoerceAVM2Item) { + coerType = ((CoerceAVM2Item) spti.value).typeObj; + } + if (spti.value instanceof ConvertAVM2Item) { + coerType = ((ConvertAVM2Item) spti.value).type; + } + //strip coerce if its declared as this type + if (coerType.equals(type) && !coerType.equals(TypeItem.UNBOUNDED)) { + val = val.value; + } + + srcData.declaredType = (type instanceof TypeItem) ? ((TypeItem) type).fullTypeName : DottedChain.ALL; + writer.append("var "); + writer.append(IdentifiersDeobfuscation.printIdentifier(true, ((FullMultinameAVM2Item) spti.propertyName).resolvedMultinameName)); + writer.append(":"); + + type.appendTry(writer, localData); + if (showValue) { + writer.append(" = "); + val.toString(writer, localData); + } + return writer; + } + writer.append("var "); return assignment.toString(writer, localData); } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java index 01cf0321f..104812b60 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3AssembledDecompileTest.java @@ -18,7 +18,7 @@ public class ActionScript3AssembledDecompileTest extends ActionScript3DecompileT @Test public void testActivationProps() { - decompileMethod("assembled", "testActivationProps", "\r\n", + decompileMethod("assembled", "testActivationProps", "var myvar2:int = 10;\r\n", false); } diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/as3_assembled-0.main.abc index 0654c160d3afad6bf1b9741a448188d9abd26a81..14763b448d1bfe19c099d0b6c6ba8cdf6d28dce6 100644 GIT binary patch delta 1208 zcmY+DT~HfU6vxlG%kJ4tLcY@k0@@A?C7VE&@D&QRv89B9Z7`*@)LpS!UAz_wKJiisUHJc(lNVqDZ zBxz?!TO_=V)Wyj)S?_m~|0-%}7Jq^aKJC&Yw~%RBCH^F-X>z@ff9U-bJNUfsc=0v{Re+6x4t@_nX~4|Z`ZsENVSwcUB#CJ*--c1z<;c4%xsD;K zEgQxRn9MK_8)m^UpEb-0!|XQ9bG*^NJ39EFFo?pc3aexhmMp8u=l%WBbh4ZlDUX%% zi_{8Qxs&_{|BSM1g|oaZ(3yFvO8y{#R-ua8vT{VPDw_`~av>*WNDVyR+7gJcLx0OE zJIgNz24j7NKFEt)%)zhP_zM3$km=}2UB`;7uh3?44h!SV>?u40dBEd<1WiuGCA*@^ zv%!w0USS*s>{WzeyJL9QHoU}FgLL zh5r&v#f(K>Hbk!7LA`CGUgNRQu=1wmo8gtvMS9Pc=lP!@9rtiwc!)0B$^tKj_k^DZ zd>XP2{=8LI=3j;v#HSo`z}Id63%o6ol{;&lBV)W8$wgH>0SJ(DTsLgj^!mL>1?j3i zIn7(5tJ_pPH>{{I>MZhxwa6KMFIuEqw(VseimeArFyWxC+43C!E%t@zt)+&;$_1;Y z#ve8OO;_yXBER1_j#E4yZ|Y0!oK5AMRaU~($pT^?m2|hFN=E@@I0j6H=RlI7?9gx8 zfEW2(yz9VFa%>26^H4H%7n9{=2Won-8Q`a+uGccHiPnX$%KwF0>!b*i{y(<15(#nY zGY;(?n|6vnj<*fP{zA9-1B|1h!;Dh7C(&So4a@|8}WA|PAy6Jm*kh!`=hFjOqgcdlAI2pla-f_nSa}4y9{|kk1LybwoVQW_^{wF^--`6rSQ} z8Bu(a{pkA`lWfsHIeHg^3cz+D4w?sGDrfcv zyBFw*b{0Az&$+0@X}s|gT4a&^7RaR9lee%W=}XE^Vjc^Fg4tdef;`|kKm~R?6*ugP z66*`5c6V^$0APpA1$!OAO`;d%CFy^cp%Q>d5Twvo$hI&?HN z37CVdWB;mEX0nY?HAv9w7~it>Q!EqCN~ub!{{*Xsa}mO400DB2>b9+#+1v`3kXG#E z0!v4h8%WRf$piyVlSQk^i)<@0N^7?4dA29I8GIH-9II6uzQlfwe#%E{wQ)>-&8jK0 zUmE|ScWv?t`+nEZ*y(w(jF-f~&$XJ?z(>#6F(yHOq#OLIrxOR}68UCDn8M_20Wptq zx?Lvm44?!PAV_c)Lu2BG+S(HJJFLE>;c_8l}LVpiK3oDRSz};e3j7kN?R-* ztA1A0?NE)4^Dv?PP^-n`{AZLMx3_G!Irewc6K%mi&}|)Vf)AcC)v{A;;d9br&B+Dl RPF}IT?}f9C&2xV4@-M*e2o?YU diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm index f2e11ef7d..0a328bc06 100644 --- a/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm +++ b/libsrc/ffdec_lib/testdata/as3_assembled/abc/as3_assembled-0/tests/TestActivationProps.class.asasm @@ -41,6 +41,10 @@ class slotid 1 type QName(PackageNamespace(""),"int") end ; trait + trait slot QName(PackageInternalNs("testing"),"myvar2") + slotid 2 + type QName(PackageNamespace(""),"int") + end ; trait code debug 1, "myvar", 0, 0 getlocal0 @@ -52,6 +56,9 @@ class findpropstrict QName(PackageInternalNs("testing"),"myvar") getlocal1 setproperty QName(PackageInternalNs("testing"),"myvar") + findpropstrict QName(PackageInternalNs("testing"),"myvar2") + pushbyte 10 + setproperty QName(PackageInternalNs("testing"),"myvar2") returnvoid end ; code end ; body diff --git a/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf b/libsrc/ffdec_lib/testdata/as3_assembled/bin/as3_assembled.swf index 8025de6d453db8325b3ee94e29dc042bb8e77e6d..3c7b02db7296a1f9b942127c80f52b632217288e 100644 GIT binary patch literal 4378 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 From c1dd430f43d28ee790ea68eeefd33474b31e5857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 4 Dec 2021 14:49:38 +0100 Subject: [PATCH 10/33] Fixed AS3 - direct editation - arguments object on method with activation --- CHANGELOG.md | 1 + .../parser/script/AVM2SourceGenerator.java | 4 +++- .../testdata/as3_new/bin/as3_new.air.swf | Bin 20400 -> 20597 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 26138 -> 26428 bytes .../testdata/as3_new/obj/as3_newConfig.xml | 2 +- libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 1 + .../src/tests/TestActivationArguments.as | 16 ++++++++++++++++ 7 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestActivationArguments.as diff --git a/CHANGELOG.md b/CHANGELOG.md index b82408689..fdb87a23f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - [#1762] AS3 - Auto adding returnvoid/return undefined - [#1762] AS - switch detection (mostcommon pathpart) - [#1763] AS3 - initialization of activation object in some cases +- AS3 - direct editation - arguments object on method with activation ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index b371d0477..cdb4385bd 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -1689,8 +1689,10 @@ public class AVM2SourceGenerator implements SourceGenerator { NameAVM2Item n = (NameAVM2Item) an; if (n.getVariableName().equals("arguments") & !n.isDefinition()) { registerNames.add("arguments"); - registerTypes.add(new TypeItem("Object")); + registerTypes.add(new TypeItem("Array")); registerLines.add(0); //? + slotNames.add(n.getVariableName()); + slotTypes.add(new TypeItem("Array")); hasArguments = true; break; } diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 327dc983e2498c4de0453102f2b85ba68d5b47dd..3756fe40b034794db05f31c476d4546e8c94af5e 100644 GIT binary patch literal 20597 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 U3;}#;8UE=xX)YrF4>wBqMpY!f)&Kwi literal 20400 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 diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 10958fd5327b1c556f6f0fa133ba549a05262036..8870e2c2b42c1b088861889edc7ad41b23945d2a 100644 GIT binary patch literal 26428 zcmV)6K*+yCS5qYIHUR*50mZ#}kRw@oABMb;NB{+(F4WZrx*L60brn!oSI_jYuj!ed z*qPbgo}E2rz$U5+=&G5jLTv%n(@k>8W=liTBtzx|Wm2LK_A(xjXD{GbY%0{C;S-4QZK+8*)s+0U#-q+$9nxgpV(QkfD z^!lHE|8ITx4M5_*i@#o8-H3c|;P0xD2=*hqn~7YYZijTT+f24tCycRO*f8a-;lixjubo zqw>MKXnx@Z8u3E8ZqyriB>L*cY9mu#UVix=u<^OodZV&Y*)n)9$pE-ep_Y2;>Wv#O z-?;PEn|E%%b@i2(EgEH#zLZM;Rt2|H@r}^S?VDSx_wXby(M9xowbkXJJ9qBZ?lfw5 zmMc{{2*}-8sjO{ko3*-LoSB*G5!YN^t#7WCA4G3sghnO$=Hh#mrAC^sa05-{#u5wO_Ac7OmpP9dhnr3784qh+dp77PRS^g{Yxq)od)= zH>^a`rmCBYVX9G6GfmYp)ugGWOjR-Uep4MVwLw$Qn);Bb59^T#USlL4L0iu+E6HSn z4rpm5(>tPMM)7w{iCLBrQ55xRM5XtwXiDscf^AjD(U_$@nRQ&=ORlTXHXPZBdQ&mm1;wNzGFDOr@ zK2s8rUr?HVK`BMOo>BDtP(fEs#T6HxOrdk85-G*2@u^axnwTmjtI4TSPqk;Nl&Yqt zN>t>4+I+^t*nI~&{Uiyt7|B-{M)ZFCa_Uc+=bz{QUKlsRkPkO%@rWK0Q z#?`H@@&m0fU(kwEb6RnBS}QKh0r9ixz}?!jZr|ym&CE`z7Yi09i)Li9y+ge*Oqfwc ziz%w68&NZ+=$I%fO&}FhCu*t*Q|;l|lO9t{6?5jWsUEQotAG&^$$osaNNhkE%;GbQ z&j>!F_>AFm=%_N7!{1{{B59eJI>r@DFGY*;AKkn{GtY=<$`u8NBl;B;`-*l&!yYD> zlDL8Cfmw_mntqXHhZ?bdQYoobb=E7p)wJ?P{gY;VCvSZB-nn~ySkKSy4r>UL1o-}YMlUH8NOk$%SN2F8YIAs`z2XTtYr(}2XCZ95#S6^)&!tod% zKb$vT#jWGcjQEo&00_5p0(c<0&5+TWItaT_HKyo`Afuy;fQ*@uC^JLmE9+|xUd{_L z#CV~@?{oz$7#T>3;x*?B^V(Nl|D0Z4sl7M!Vr^@=vXxt1zI=RcYUcP$J#mZvjlH;7 ztG%CFtuJm|J`P$nGwU{4=8J-@jJ-H1Hd6LUFHX`)FWI{CEw&gATl zXWhZwA#pbsm`A%%-(I9Aw21Df%iE2W3*ZUrcqZ3Zz=~H+k4wLFt5V;rZPY8iYm48t zy$SBMa{GhoZE^OQoYUDEFDKo_H?ZS8BIif6_}zHs*UKCC%Jr+;joKG0b+9M$W5C_k zZsXW^4z#PXb+5eUyD|JiaW?Lt;f-)6*Xlg?3GH_qbTRn`K3H9Dtc>SYDyw%_8tt!5 zr=7|DOpd!>5`UbtE;(n@BiZLstkv$WZphbeg#qqFAh>$_0^Z*8TIEai%GT%T)bWnc zXz{~?vW9$p7BzyuIfN+gbwCK+#SHtPdgiQs>#x;$v@5#tn#F;UvRHw;ao8? zPA=yl;;)x;^$I8lCh~F)l6)gqtGWY8V|YU_(mGH5agP{?EBfA6WepVNXMX5GeXra( zy9J2xT%dB1UUPtOiuP8s2B%3EX)&}9O8$$uzu1Q*P=Bl|{L~z@doV!b1^Z^a=hNb< z+pE%#$><$r~*E+FP8|VqtZzd)8wcqzTgE zM_zz-kND5is{c4^YtpRuJ2s2M9_y<4g+SL|-z;6_{|i*Y9=a_bKuBk*De*iB5lq;HhhE79A` zQyAQ+yswql)|9&zNwe4KiV5Dr`iN6{X}j)-Vk9`TvUJdY_$?vMbd;Ir7EHUVD=JTu zf<`q`+4N9427%eHpvgjZPC+h?D3F@1J}5u>Qv(XLGscLij+(}pX&f?*!=`b>G>)1^ z&Qy<^YTne(nCe;U478S{^6Wi^uM>-`ZxH%phx0;EHvZj3f@p%04 zt&36{pzIZt9T_*Y#$vy>C!sUq#7BKIP8F{YOg>tEQ7HB8H>ibrRbrOSvAK8zfJQ0?$br196KC~#*Ct_^*-C%i|H|KH^!G6 zs3;KRv#%+1D@HR*ySU>azO`ucu)ROb`)2d#D-qL*C~;^jpchV(HmoP2$0MnT0Tpy4 zsz7u%Nlz>*1M+@lfL0nT4O9oF=!=vA{jM^g5z-&stZiN0Sa$RQBa;5eZt0HxNDL0G zfVNiIQ0^;bWl>pDR%Kn1azoN4iT*SxBu$cikZ>+GJI;!Qf}}|j=eW~jMre`-S(5}6 zCDcg0riN)TWMyqN5?(+AkBZeueZVz7!%!8m8VQPgM~$R~;jNmw@yE6r>GU&JBz>kB zq-2b$31}L%%b!EmFQ64 zqLEhzU?*z!17`_V7!BZr?y_ogeq%M&#T{o zUaOaPjC}mN_wGGgjP4Bn+TLFC2yo^{-ti#v3{q@P(H9|4bCLJe5c0mfvbt7zYwLl7 zy}>?@(z$Iv)fI)5Gd%ETkXCBm#$DMlc5Q9dw(7B$-@N%UZ7CIl|7OECNQgYz;xJ*- zxk@KgYK19V!I_j#bAUNFFRV~zwwIu(!|-I7T8u4Fz-W)D_kmV}Vha)+N#IE*1x8a! zI)l%E5;b9LQWe9)Xf%vbO*0Y=yfA1w9SUq_zD!W-$v}5%HPe8MP;T~|>iyTiLto}1 z>`+rXQ(udmdvJZSR3;h35^9*N*jGn;|Uo0}DV~tP(gU{bXu9-poLa zuK8BZEIR49rmIG82e9oBz}{rni}Kp%NldOlODJHbDKPc#r6cNZ|5f_;gYS(T@?K4g zbKdI;^uiYc0M*Tcx>-~=r`63Fb#qqToRiQMK7&x`5Ja~A3x|N{8*F~Hai^50_xpKl za0n0G358mrFeM;hyKRu?FA`1}g@tV7OM`8TKKP~>t z(PUE5R1HSHXc}x3?2|AL1($Ur$|O_wNTv}cnXvC0r#(oTw5H=Ls^SY?0<@;%%Q8$h zllzxW!l#e6nZ#^P(HGG+!=-Ki8|bBLTjvK#UJR=n+m+8jf$34V(P8gR1bS4v0y6(a zh{A!56BKT+x>{{KsFQ*0+>DjTtCZJRgZOa>opz$GIEZ;&#& z=9bpV&^&@2T*ku7GMY4l{MRIio^SW7TRf^xxKroB3IK5RK7yV9S`OqK+Lv`0MevG! zz?rEITSLwwOlX2@2H6|?m4QKgMh?y>{vokVkb{mrdUov5r^g_M;A0TYi#20;ZG0lsXeL3qGNw; zZ%;q5x3{sk_h4`DSN8U>|Cy3hPd88Fr+%9GRousCN{@D~c@FzadgiD2KuVuzPS61( z^AmKZlVFA|{`rN>OegM>V!0elrr$%m*I4e#^mfO`%pRcmARovVinC&>bhf4rwYX=RxyM=^_g$#-d@Ztp z*S#}ul0w;G=vWtwAtM$IDm$XkYk+OhX`!%sY~=;X)e-P2G-=~-Ex{*Ela`bh9i%%r z38ciFZN_%;k*X51*C!7Of>z4{yW&OzW%QJ<)?_6{C1VYPnE2Xx~ZaRb|AvP<3w98(VPPoj&jo z+>x=NHI|A8zqIq_wYh}_ZMHbA&CX6~v-5M>{KWPuY;u{sL=YzDQYa^yMYHEi}{e-FItrLo6!IzAL8gfyy z1|lF6!w<1)j4|0zl;r7$r=Yew`|wmGd7h6Y4l75F;*-PY7(V0pOyF|?pGkbC@F^6P zBh&ahqo&f}I(4mwxlVW{fn|(ch0LNVY0x24k6wvDJE$A{$I$st)VvyrDP{y3LiGz; z6n;#Wnj&5`rrZF}YsK07&2eZlz_R`o(nNv5V3vXy39O@0l|0@wD5Ic<0-F(mXl3F1 zSu>9BPqDg3ND-CHllHUz$zn7Xr48tY#Kxzz!Ky0OZzdpvJyb|#wTMM@(RgxGi=cm5 zxBHh3+9;EE+@f*QjIbYE21JsXWD?o>;8Zt|H%Me7C#)eH8lqdyMuwoqitpTvD`%Ud zI79bIbVVF7JgG4Xj$iM?xo7CyQ;{>xb5C}z5q*Y3qHY{U%L&nPqM0Y(ypyH)_!%Di z6h?~C*mO4&5FpPrCvl#IJJcrGTUIY+O6h8PioS?vr#0Y6sn5H+Owr^7uy4$;r6~XZ{ zv2T5De!=FdJF^N_+2MGEi>gk>7@1E9KQSWovkj~z!gkW)76dC5KC?5`Ee;XIYB8jb z&wx=SkxdRIV?9AW13s>h4s2Z=*;3#Jn>LLM6n5k(P7(uj9K>)aa0P#;>5v*A?ez&J z1TL=R{yL(>6PWy%)S=6r{(F~*SGX-w5nAS?{2L`zE-N(d;K(S|D#Xg%> zo?#l83XCZ`(AL3}az%NluB&Ke>q%A1M^dCXPL_1Crhu0*Zt9q5saN1K3x9SnNGe>} zr734LdubBVtRVMQ1HOn!;XV!@a+(!!91}BOJTwEug6^`n1CkNUX}Z%D=GGn^$QJMw zf@b>b+ciMx(s33$j~(w>EHAxZrwEu!xp#9zb+`krRdRNx+-cG4bRVKB;MKBG$@RqH zbOod0G0AFYUx{EU&1vT-;mh9c2*-I_Cz6m(@_;DJ7s3%1po6P*&|{NInKjJ{GowJ~)moA%!NeCA?P26;{ZQt|rbEiHOikx{vlE(VqhE0dAPQ zi5x1~o5tI+C;oMAD0KxbJhsi|3cN^i7&p@E9SPiwt$@J&c6_yS7lklo(W~VFgD)1e z1*%rOSo{aiLWIOhIqC)zFE%EKhAp{dNOB?f=KUoX4gUEriWloK1Egf|R{xShe#?Ep z4vs$Cc|_{_{E0`5fCSznCcfmC3_9_nzF9;streX&n~~nEXz0$H<+16_zOSrG@01S* z-l;f7FNn8(xOd8@1m9_r-zi+yW2CcGA&NRL6pD}ty;Q6W7Lk7?o<=MMzfdU29Ydqa ztAOrPlH-NG+~S1_b`CGF8Q;yDkMTFLn>Pkv&}{bX=3_}*u$j)2KD`eX$4{F5p*Ksa za^IZQDHLLgzKF_`?Oss%-@#b^IeTkk3BR9Ttro$0H!Yc&?Y8cinZ@At#3lLESXzPq zvat#`o%=T7KY#vSdCS1({CQ(y!rq>kFwUPZZ*BF`>vl(h^fYr&rH6sDc|`oB?THCb zGA_i=pGVLmJQf=dqC(n@JNxI)$0sJ79rx(OL=0oRQ#pUWBp4&!J%7GZ;`4DK8sy|^2Wh)rzhsg zn}yT+H41V`(qTa_6beNMc6wpz;%tK5R;0Khind3>huDd1CtqBxZu~CUDJ>yxLB28+ z82h8@AcZ-{Q>1t9GD1L*b}+-)$gjeq^`Jri@u}iJHUO%q`rUDYFN@W4|3PTQdit>i(!wH zwAVCJ@HUU)tRX%tS5g*r+gEre9 z?l;22okX`W?sm%UMt2$Kslz!KcnUr{diQPrcacs+V4& zmlxzEuF;C)%_YB_PmKl%9gZlT6oIRVUZv&8!jyXnadaHaO2;6Id)_FzEQq+_s_PFn z!S0vuR*I9i;Yh#v`h(Bg`wmyqbEZN3rgO#x?~F^qGwwZaM%20JyWT}#2wW5d_u@fs zF!&RN@zA-5^vlwLi#T+CzW{2A zLjnf7?MOaxnV?@1wRO=i3B%hAi{!21+!QU{L4PBhz)Pporz2xJZ+pRc?nW5m$Hbf7 z##{1f9$jH0UVlbLK$tXlz7GbpXZMeYS>4GaPSOsugx&JH_j>;cjBIJ4*H*i~0UQ;5ppMX7Z+{AjG+{uHd!$!|eUL8+jBV~62 zZ?~HVSBgU!cpvY8)ya%vCg31>9OH0bNgIc`K2lX5-_)Ru%aEV(KNWt)O@h0B0t^Kw zKs(oxUk*)xTUE&=b5s(-MMHOla2^}T77Av7m2jutzaK@&S!3&g@V-*Rl4mAVyN*yVRJ&O2JRt%K-1uL%0q3}8LW7%+ ztgHNug|DKVx(9`BoRqeGmq>w&7NZX5_a5p}U)M4SHuw2(qO10OINF?F*Ju+Tb&!bb z0QfjNAe~_7_wOWmfE_`|gLCv17y*MRi2B#beo$f(6pejb%gy*O#)^(#2T;$ojD14V-R3y1F zp0^-~f;j5GPu}K`%+Ep%McbTF;c4Fd_PxFoX{P`$2(4}CH<4PavMhMRK0<`oJzpr; z0SA8`hERf|J#+w$&Qa;&2Y@3Rx9n3rAPOeW%EpJ{F)Y0P&^1Ivz$ju8p9e)?AG!Tf z(2m3Bg?%xH$?cq$sSW`V;PdKXgo42Xn@6G~Vbss)#mbss^pe3um%lq;xB?O`spF!APyu|fF9;Ov_(l#9A#^(X>;~Ri@uM) z3OJJMrFPu@zX-v@2~l#*ZljV7%xmn9f2lh@(86I@MTu@PN2PQK$g;{+_zT{Fh(PP3 zEfu_{tV#~2?nMYFk|T+CoZh~>*9k7LdCaiKse6V4nz?zC>=fD9P%4|E1=9dNAR0ii z1^R?Qt%RwkO`YWe!|yEKN-luy0sJ&Me>rjin;5X_`sISe-zT|14%woxSaQL7B*X!j z6V}zths67*ND{zdAqiyMNEsYoQ$Bh`k^qIqD*1uIe+D_AKOEgPNa0)KB7AEo9NjfS z%>X~i24fgL$$>Z|lc-{Nh%0MqetGcg82&Ii^l*nGuc&9fT+;M2U;bG`CodDSeFCd~ zm>=^~L8FxLl)JXVSJ)r_y%5Y_sWoc#Ifo9)L9TX7cdU{=>GJ9Z19R%~{HtUrC4IL8646U!iiUPWp?gpz{+91RimiqOA%pN#9x_=nH1TK2(_KT{-t5_c~o&%VqS z9UxJZnSYCIR)X^%%Dj!X%om6s-2D{8WS-hF2k^K=lvlslRWeA(HlAn>id_b#h%nGN z!a$2@WB>Kup7xja_Wq;2z5iry4?D~;l5I*D+K6Km=Cv@#7>K!UpMdRGLvXzP!77v( z4jkp2eRfNC;3x)XIEvNyM+nl9AS#9(dqg$ft)@^ zK^5!meTmDY2^(N}K)puZrCkaWLu_u&HnD?fr$lJr}D@^2YGf#}Pk$Y%jtT zLx5zWFzWzvSn|%WTe<^CF*pITuB;+~A)sd!kcEz|Grn zD-1YsjtjUsp&1!qffwWu%Qhqm_=F41u`Tne#NUzj804^5>FdV_fnNv8CJA!*^J2Y* zNZ=8~@o3Zf5TUH(Z=LxfFa_TLbr1r?c#K_i(mUfKgsC?}k^V#$g(N#jzS)!n*kVh) zAX_6(zYmA)?9=?=!GDE?HnIEt`ZGj?4gMZ>4ux_0+s3N0Buy}J*#I%O4-zpK zn;qxYLV;(M=Ka_x#77@|3v>hQ4jeR;7{X8BgC3{6G>M3wgs5vIk(?%)1VJ>DSVCgSz`AtC zzb>J%kxsP1?Ik$OIct<0RNtbPve+GaZ1_^3LNOwU zNXWm=CfJr;;09;s7_o!Im~zcsRLX8Jg^*s6kQJI}`pJ^LH9RCuRLS1jq61CZ@ZpXV z_~JC%Tf=9%lX;dX2r`CGLEJT>S#>Cxg&QkHC>cGN=bW6xr2Hfr1l~A@SY}Lv(&JkL zDq^Y(S~iiC8_^E(5(-=Uj^|UcPG)($^m#uRSiWUp<;SP*QV zuyeqci~r#KSik4Dc4!H#GJfseAZho=(SCoQ0S&t3FM-q{1cKN;cz_~&pUh$@asy3M z96uHq>l%XQ;QNw~ZzDcGKd}8NTmznd>*?;d9&f|{vA3k|Fs<(^sf#*qh0S1;OkVPS zG25yGzbAvy;zysibd4)Dr$IW$f&5*HYytI8R^AJ zwT47|Yqi>D4*EWceGwzLaFPU4yM^#0Hah{Qg}P+k0g9t85ovEAA3z|50|3HC?SwbN zCZ>{2j8rC&4>C$`A3n$+b|CoxGU>mO)Fp8i2|mgEDY%8qyTmehIhZn;KcE9-1QR-w z{><;t0m>&Y#M3P0iGW~$wDO$aU^MfK;2TK2A*5AK^T4*T%n}-skXvD?kfqk%ydg`i z1NpctwGQQ#eWX_8cGADJw^!ZU`(SVHm-qH4*Av`!ZNVi@PF`^C8a#=^WPS4sv#0$a zZZDMNLm)=<%qHpxp>W8SNX+R*mt`aut`@zz!!m>~#6VZxlNR`JpTGj&q5~m1e7GaJ zLF%?ON0%C;}VTY2@g`4T^OTlE~7`<@b>iCX*!DM_& z>(>gg3!b+Jiak1*MIS_ta!m%J1VgXvz_~Eq2u*IGAoM&nsY z9tgoe=rZ*`$0=b9jWjZ?@->1)C*EuWrN;x?oRY1Xi7@XjU7Dx+- z^@!FbtVwQKz=N$xn6JMs>q&`qv7oVvL1P6){xeGD1LM+eAH@x4+|{Qy^En)+NKf$O z%(vv#Z&E_bh@-A2&1X+uan$wTtAu`DW&OMg{rn&A?Wxdy;y<=n?Im0}$Rh4vFalgp z`vn8h%K*==UCr7L)ZVf_I@(fk~&L=vP^T(0LN z6L#jZ-VK;F6&cfH(#Fx8HfJ z2QR_TD6=?49Q);QGoz5;j7qPEHx2 zv}?IV{$7In84xPbEom46q(rjh7Q&Xa-x-cF#gb0+Fd4Ax0F+oGgLWN;;*Vt4(W1KX zKig|$?nBP+j4T|mbdMY3(Q%|Ke_JED9`+sK2lm$iEBJvO`S6)Ae5atrjk7$T&fG&A zN%|0!D2-_!*%ZkVZo5-hnJ|`QMQ_-EKq1b9!wwKFOmbuEAsIV|uxnCyPo0A2#3;h$Jfm2g7skOrN zv^G6UdCg{0{yWlU3kw{5!8hPc%{N zeDe65!sjfUonc`zjN}z)1eHjNqr*9av8qzaE-if(apE)qqDqELPX_EKQcMT(aD4;9 zQYbDQT0sPnP+WMXnV`JJ6ckRyUg0#_v-1$8UXe!&f2;ap6p6p0aHCIQcXzX7@Sm!I z_#xQYgmR{Ig4{o9#{M8_}!nu$Y+?4Wa7%8uk%~2eJ zhFeH>htcn7DLOvP^BN8zja33l``Q=WFvX7K90DvC!I9syx~n6EhCO6T-wyH!(58m~aGq5rSq^xE#Q> z=oZ&m3o4*z2p}!}^=3ST%=`!lnQ4s>&^czU$zIU{CsNLJFEoSmt#@>M*L3qM5>A{L z-JQIaD&X}aY{yKVA$;J?3pc6W4EXpbULgP+V5x+QJEG2Ip%(;hgce*|z$w+08u2lRU_VDaZ5AFxjRg3aaT zBZABIpkbt57g?zjoGbEKW}5g`Bp1?BSWP_#x@KlKud_X(FEfM&&t73WDj9?S(DuY6 z!XkV=$!H-+3?apj9kL!Ah`{_=h`V`->?m%czVy^rhDqT_k_^u&QogcwHGmt}F zTBv*%At*}Bp}&o|KHrhfn4A;32ez>KPIaMamuVJCO5lgoyp|m|Y zfk(e5=Qrs<8&A#;g_Pw0ZZOlJ11{m}j%Vj%*vJ<5_Ue0kKexB{@9*tlzj*+0t6gBD z83Op{w4Tm-Gg5b9eLx(iL1LixT@w!iLm^fGOz&t`+5S82@cxswKBGsCu=Oh?2y(nsr01q={r~sHqr*XDlMO^FlRQ4SbNT}n-ma5 zFf0d=7R~& zoL6bP2iqfg?Qc+@6t;&?{yp{Mzk!{!$no~AZ($py;b@?bX}g!UKgJHW`|NExPI=;@ zJCE6%a)1mX?UtPHgs>$T0JtXDX6JA87-pO^<{=cjTzyK#&OLG)J->$3L1WvWTqn(6by2R8{LTCLG=#dkSqB;!~vBi4njHm+xPc)&q7Ak6? zvmVTpz&vHX0`5ME2raXja!kGm^MX#P*D?9RX&XR92GOc=c04VPw$N2;WB)01)xWg2 zhsrD8+S|iUlTzHsVt~$(4XzlVBjuMr3|7OB6S^lKmvpCs#3C$!eQBe-_26}sRdUtS zeF6jAg=vq}U~2YXj>IVO?hq1BBLAX(*LXQrc{6S&vFuj@o7;W=4|H^6Px z`Fcz(y<2jq<@`mVtKv{sN=pnKL>!KcZ1=S}D5^;ivily4qX!(R)LYnFl87N?2ZK93 zyw!GoefML8x{%RV27|_axh@#s-ru(7P7<@p?-gWQfWHP8#MidhH=PA?L?Q^mF3%kd zjDx^c00t57G9BfL>jft*k|1nx)=lL=)GnE@TGWxoP+M8esVm!pqS=-Kt=`y@QicSs zL1>!bch49Kwi1a89P5N8kh%UAr#Uckti?T9UUqfpD}W{FE(Dyg1S8=HK;hhs1eQ^iZ}rkwi}wqp%UJdDS1Xo2x~QIF|tJw{0j zoSR^e^nNVe`T(mx$k!aKeqJG(PW_FT@hXVq5H&oe7FBK;gPu+OJ9~Tod~fgH!a!$G zsbMvrKc}d9vOAM!e3U%ZDSBL1&4+AuK~Hr@HUBR#9sD!mR`q4%Gjb+EpQM_%Te{;G zEC!c2#Hc^PlEkr!u7ut(554w5LZ8^|h*e)KsyN33YJlDWnn8NUDcFO4E(fD`;0|Xc ziP4b`$#WO)8^H{=o|X0Ot_H(1;<%ahL%9#zF>Yfa)9j5}1GOwsiJadwfD}0@*(JT! z?qq{-$9L%5{2ZG|xY$r(fZn3q1(w%YC+tnJQ$KXJ!P?2T1;sQMD~%6OjF56iApQGY zN$uxei6A9qjqr~9?x!QL=0%w@_jDUoM}4E zPV#IoSq0d7CcnB}r{oa+9>(X0nn-f&U7Ta@lq4t2?zs|4fei&^;e^=UHNjcFp({u9f0zfwR$IHm2$h z5VR}`yYrKEPW6aqXy+UE=SZeTUykH-DOpWU(HEIx$;jJ}5=QPZU%8@NA<6FbRg|FH zxEoNHrzNR9(4#wLNBtMUtWn>4PjZ&*2-fulfWDKH<$4WI2kS>w7Ima=kVCrD1MM|3Xv;Kubseh6=32cBf#wKcYbII;> zUd2u(^BT4ED+Xi2l5mSdF%n|Fb4NBC;i$stklt4MEj2*(~D4cb<3UY!eIru_N zNfP14DIU!MmuV#bVVGo}UI&$S7#E77<_x89%{+aNSZm%#k~H4um`k+7FNJvTJ|s#b z_q9jQz(zj=gwI+ajjuKbiMn%RtT}{6g#wqH#?j1_?ZN3*qo?R;tq%@8$OCg&_;jk& z3#Y)R^Hm&a>G!FH{63FkAiWRXL14^J5O=RTJUO`gSDPo%Y;bc=^At53a`PDYeB;L6 zUU_ftFYoRB!QS4VG4I|yi-*Id8phMjbFUI3A5+y=A1c2HT5$6Zl>Y`~-@t>0OhRlu zDu5YS26QNA;B^#O2BtviC3#mXrAj^3o+$9-N6CoE?Y=_ z!?@FT7T)tHB-bXzA;e*liz&rn#?(c$p_AVb0zx1gN%mkF=QPBmu1Sjt+o_y1)<05y zLwF{+`3-kpZKlYL6i(6v?PgyNo@D;TBUDnzud?$>poa^`;UV7IaM0Q>`H_l-?)Z`N z*g&VYyt4R>L?vAR}|-&kc|NN5p-d?5)>d?KMqRwB_aU=E&JJD~@08Mdn_ zyG8Oj4tVA+6745`pRJiXyN=l*_*Bqzf14&;$B3M09*x(-G+qT(wtyAZ4|{pMa_rWe zgKHx3-kiA{l#hLz$z8Fe?y|BtK|uK5Z6KrrJt-R|{GCP5wA?cs+#EoR(bk#l&pZYOw1nmOkvkr{it6GT*BGGF^7 z2P01Ga`((zGZHC*0wabx^>_o8P+r)UrsNI^7g1u=fx&+Xelo1MrR=BDLe@TuRoGjQ zr-XkQljFGL=I&UXq$?bNNCZiNxN|~*5&T2vlAMqJeOcp)AmwzYeSsrK*A#% zti{(^^9t?|yrYKbEk{_1VH&m2Y7xy)J({7lrWrR5L^JGl;|S3VtQ$-&oOL4|UN?v? zNFXuVYWF+%KuiZ51Y9q|wmuNk0UwCzABPXbbifCKybdomKo?pRA`0DL@Fxl>#Yu|c z)%lqY_&_*rg$M9~D9*Ptbau-J;)k#E6E41ts&%g5Ig;YX$tnUq-ksFQG&C;*PT&(e)Qm3=Gx4p(W4rRc?qq`a+Q@v(Lg zKS6O7qytn%UAQP$kW*2FEE+RGgyOzFD1a7Q^mic-d3hKrF6ZlkHBN5-eyAP(8W0o_ zv88`Rf8nM<{$72H2JQ%3bj)RcNKrQkx1S+V4&7(h83QeJi!W=)K-7+h{?{Rn2-^Pg zI>*;IOi`btfRS3eqk!=)fH~o$3m0P9W|RvMZAvN?uQ$P*fGp`#q(*|Lx7!ia^FF5_ z_knoe4w!wyW^U-T6~%n08&K%ASSCBy;3eM+szYx_Wr)Pz#QS=}=qr>P~i)@P!BqoAe$E;!jchnf8o9#Y6OtTb`Mp zpE5-~)qeL`147!}6eTZ*5)sMEHPo$F5Pf1Y+18+wQU(6o8;8bV7-9nvRaNyeyD4!i zh8QySN`y3upk%OKi%f5-unqZQ=2Wn#Cp?DIBs!0;sA__$Qv$7Ds;YV8+oWgERU>v5 zU5zJGB0e063Y$o0_@&69E6TZwdcGVze2tQ!qYskGz*PlT=g>EwDHZk<$F$;)bR#<} zN4kmflUgY88&VOJq>_|A)5;s6Y567c*Qi6Q>rmpHq&@H&yJLEF$EUdmu;&YK=;y>H z1*NE5gX`SO9QRaFUN)<8$^lms{yxnzMbd{$>O*&Qnn$)OTr#P8&4gliujAyIpXEIK z?g=i%4(P#=zn4w*9geP{|>F9S+&WF+`Fs00@o z3F=6>e}W`ockeq(!mv9fg?88YlirT*i8ME?e^$ZU?(t2=CtcL7W<1xXWPjoR(T z77VGK8GMQV@rI#!B=J5{1Fr+_ukJjBWZuUc#+^x&$s=Y$tLUl+P|V`_sRuw=jgubV z!wC~C@_YerPN{_^;k_C`g@8C9;MW_6DxS1+a#;(3;?~^_L8@KUql^CpULT zNhDo?@bJF=dbzO@-6{bEC;HfLEZ5d;s>>;%l^c?RNIHq$zN8?MTj=#m`<>sv93mr~ z=m9`5ziwVk5K`ftcc3a@2g-}7!t?1PS#~3nVO2r6JIvP>3V?l=O2T2iJbUUMhaMyK z57HY_5lmCqNBo2h(_RqE}K+z##6X@jRG2A1K>@=m&K^4t4l>Vgjh3A;(Nhp@?wQ z_$g}hD%!!7lbkigS|7GhY;Q()#ji?Q|0FF&{XLPz%VB#T2X1r-|1MJuD~x6e(lnX2P{RVB7o7!u0`I_v^1*}5~9V~Jp7CULq4T|r8@LfiKlt> zTj!RH`lsZ(>~7?hZ#zU59Z=2_$+SSUpOQr|a~9j_r}+q%x9DBek?(U!7o{vv$q{3q z*s->VIF_?9qdAO@EY&ZK3dH5Afgs7<^r>sb{%D{zJ70keOpp+HR zp`{#>>m`KinEs80AIeohlvgAe7;q&a<=ivj^G`Y6T1Y}Ff(L|CQ8-Z?r7jSX5Shopd>y7 zdUVG#(|-|SCpbqOSvv&C)yic_%joY;P?S711C0bo|Dn#Xlsz^5=LW&)<|P0=50p9e zKx_cTfv*Pz98y=sTf~8L!P~q}ap3tkNc)c<@Nbjr+S5h-+kIvv0s}z?oNnF}f3!zr zFCbwkAo0M9qW> zX(*h8%qyp%ye|RIKV$%Sfku}Sy3gVO!0QX2Gki5@QrmBX~Pn9w( zL_;E|WQW6l-SQYE9EBA^1Vx!{P*h9=MN#1zl{8dWl!w|n#Z!_eJQup5f*E=~Isp4e z6IF2XG3v>hC%1|Qj9EG~J%~D`*d&BMp(ksdx!0}}h$qomUK^pjPW0@H+5msP23 z&-JTP$;o{IbQ4y7s+9q1X&@F^sX=B>DRl2Yev=v{SbPf1Fe;01pP%4nc-jv|3G^0POVT5_=QHi@htOs2+6d7 zCOOyvi4P%IaDW_z#Bqi?N_>ifpm|X-iwcS|iJ46M9Ek!Wh*-#`C}!xBI4>(`y! z(()w$EFEcj*YtY`2iEVAiS*t!zN7b;&Y1T$Sc`1lt1Z4)S!#H7nb}|&7%6|T=ox1V z+8gCJY{-Z#q@(;am^8^J5?ZBv)V?NytbCv&Zk?KroSaoY^H^{w{Bqo{XFM&8ckJPr zO*y)5W_BUQuG-1$kYg}Kk_B*%urR@F3WF13FAzXCY#|`I2a6q3Lkd;y!-rnKh?~>w zxH&eBLgZ#6lc-3qf}p|{3V8tT|7w(7>(m>tkYY5?BB{Wy#rQ2*&*XP}5t)WQQ!E2H zMdQ(wP_2>+4005cjR~RiaNBJVvzdFSGCPUbxb3BAGnIR&FPTUx5`FZ^c&3>_|K7Yw zJ^S+i4yX0oBpBxmOe%E7U_MHJvWo_v8O+b1HCepzZr&fMMvcBmHM4~BbyM_3@e5H9 zhB3%P?lG8C$<`)JKktSJH^g_ZM#PBZ9WENW;~map17FON&Mbr#``|`%Ypd(4a5~ti z+;2Em)ff)5)GnlGrA)?D$^6UX(sYruP~sRtm$y1jkhzQOHO`$~f^KJO@9|>qT?Iea zD~HLSpd5(32kVLFO>oA-{=-GyYnl=NI$j&|n4j?C&f)fs#$RM^M*(u7^#?b3mh7SV z;&+7pzQ@)5OL~4+Tz8{>NX?%lZh!>)!B>>SZ@i@&h>C}i-!C48ibk}HiT|w-!Z_=s z!x$Wr5GESBgD@W3L0ECt$phi#tiA7GO8IHID1iOOWdps0FCLZfMYxkNCXN%vc&j7E z<^{&MGs2LCn3J-Nhaik#83e3^u06wb#-Xu9G)vahN3Bu8ID%aDKZ3x6U@Jn{kTN`i z&zO=BVG8jtu%k#DD?B*I_&04f!pZFbuaBK|1*9 z^3|>TC`h=k<$F9RyC+Mi+c`yFPVlZEe=8wyzKu1zw&i-a4oaa8PE&XIR(o_nlr%q4 zvCBbEUP~USV;aODbymqI?%cV0d-~3u3->BZ1Wt+PwZ{wayv|Vqt-akDwo}aQ+TA_k z7>8dJ8NXvgu^3kJQ6(EUEch+J(a(%oiUl_iJ!wTLqn~L-52FGmKDrfE$24}9qKHeY z4>B(=`BZu*sEdau6j7uO*-CK1FAADTOtE7nCz8n@wW{7$ZY$R!4-G8rr6>;bp}clY zIhT**<7M+4(tZulA2olZ3{S-anbg~n!od*QP*V|h3x^iUS(@#Z?xY71g9B=6xuBMd z>S94%EZUVQ(^QG_-K}>wP>u54cT4A$)z~}Oyn3y4Uh;4iBM^kf7?8{r+6M_iVzVQF zd|5-pIUb4vG7|*m1KG|GBr{R`UI-eVeo?S{OXcW-=BQ$v9zN|$ z%0qQz!5t%hH%>7#kiRmf0*Zj-kI2|CY#Jk`F=`rPT*Ksqsh>2}Q`Sk`;q5sB$Z#|b+cNs@zVKAs=QA9-7& z+&yG2V8a5HJc@C&FboI8X6KE^WJaLMMQzJsAZi}rIn1=46r~* zIWdg>X|b&WpNXg>aNISLhmI^N4ohn_sCnt9`!D<+EIs^fip@Ff;)%6yIS*A<< zUa=PFSG?%^q0qYidU<2Jymq~|aj&xFRx9t5oWA`Xx|1`)cMZ%>K~VdJZ|xZb5Y^9K zfcE?@+$+VgsMwR3J>L*SgQRQ^{x+KNz9XHNe>p3@@6;d%AaZDeHAFR5p;tdpX1N3T zS3)E)C}aYB04HOCb1mE-xt1bo3Mo~M_YdG=+s?V>7en9>4;$csQp;ich9q6Luf03E zZut^GhVs5pMVq|j-fBoHX}Ko>K(S$Ts(}|S%x%6dPCTVO60cb{yd-V5?-YWLe4sOO zkiu=oUeH;iEuS3(kMLl$V6ElCS8%EkH9zc%yrpF(`ZY+dQ&2|Xu!{02` z;?&`KB6QDEtR*X+{jruh_{uAOzA{Fhx=+Rpq_m8FEIbk7*aegMO|h5Y#>dEW?U|d2 zKOMq2oQgOWNufxUUE7|07JQr|#oD+=VG41KmCUL+MPH6`SZG3g#lSgxE$i+-zg2^0 zOyj}zT4ifVZZ&M^n31{qnF~>eon0@5dy;xNCDrv-5FpeD-4q4E83Qgpk)&h_(*#QUvh=6@&i*w8mZn0eaQ|AOTUc z$WK9u_u$h@#$ZH8s>&6tWMDqnD2xRT+akyp42K(iMXnMC)elR6ko7!)T0?1uZM}iS z0A^cT??)l3b$zA0y5XwK#-t>tc1w4(7-DduQFoOU3s!-x^5<4JD$17PL@kOCaeM6& zYn-~YB8kyr2!e;?$!8yQ$dwp`bZFA*XZIn%h|P|aX>LKAp0nMmgw2niT978eE{1$E zQ1*f>vC5Zd64+R%#Dty+&3VXDXT0|<|$2(Om2}(%? zHQ|_QG!aekjH+qoBWYnn)}hVSv68xWF5-PhfX%TMG1_F^@)0nu#5Y9+_lSU*I8_j^ zdI*-V++!teAT7C@fLD%Jk(;~YTP)_$wyWp^KqY{hn@6a6<-**jyAIKsS zZ?_GZih_LBR|?`!Q6hD|fe3{XqwjAc9QuxQMxxB<`%VpFG0SujOQc9}4wnH?L=x-~ zPOS?@jokYDw$%}Po$TZ^1qYh{p|vl7FQkeHS)Aw}fs-|S5be+I3Ii)8Hx~g?89BJ> zsc7}mmk;cQgR8QR)fMjgj^97>JlVljqiF4653R$Zgyc~iNb!N=yT8eiU3nZy^AQUA z^aJ^95XkMsk?+zXfoI4>M)<&09rX4lJ<njcr zVN$f>@`e|utrT9!vq5`5tWXa7;evndC?KHmM3N3rLsy9WT zx%2Kue2>g&>`pwqdvUx;cIH@^36q?JPAFJA@U+IVo=e+{zOccNZ3tY z9s`R&kmS@6cID^=P2h?NP=&Qj)f$ex7{n>;{V@h(;}mzg_}_b71dOVV_Bp<^eS8?DbL5obR^ zSG`!Exr8D&#nJYoc(aFt@8AdEdI89_#v$7n(9=J{NHlLPrCj^g#8(Px6 z>{eN1w;Cbg2Bv>iy8;b6L|+ziXywvu@x~|mYM4@YL4zHC=w>`eX*WT7UsEEqg{3?) z9xbaB5)Cd98>yYVI-bA=l5IZQdGu)p-Za*er@JT08ggyw7u6g{;x>Q ziR8mx#wj-mN+98;E{ce^5M4eD(Qx5W;SlgqX%Vzrx+77G!D$h`r6wI9g^ z#n$r)U826ZU0+dGR#9Zf_SBa|a&ZrYWr+v14-)FcW=Envx4=TS=k2tSf_+c|2J zExPND2=ZlwwFmHkBs-_LBFTY-0B664Wv11a8PZ)-%s zsL&ke5MI)eMA*o1%?@KxKl0(HR6^PqfXg)E-ScLOeDbIY9UI6fAPz-v*hVNy&n1e6 z-uuTOXDE!s(L{bZf}Hz(D}B`GRHx%^g(jvPTIp|XtU)p7Mu9nW?TDo52zH4sex5R! zJ@+sp5nklKA3#j3w8$<{=F1AsQ!MiK(ri<(L>UR-9<0~4>-l07aRA$uqPnycbADTb zp~+(ug){R-(W@XxU&?E*G%9jAvA_c$088b>f~^GPz_HGN7UjeOr+JVT+-@uz^MdO% zCy^Q4YbePB2q26jL#7Th`XS_|WCwl4Kn^n~o(=Vp3Exvt5QJWWHmbwQ$S6LCMSz`7 z0d`ohu~Zw12(a^cJx>94DTK!%C}n3n`j`lzuzX~w)FC;si(@;S*-u0K)Dn8f zg}-W2iB}>y6d$WZ*lX2{#G8pqWW0y#kyRp<$eKEydQ5vgl?cvDAsjCXyEhzFsf|r6 z{n*l$@r8h)vzQ&Y?5n^%)e?Zloofjo@(vas^979Hx?}f7q7?<#Rw!@Pcpq)RVV3Ug zii&Hf%`EKO>hgF$jS9`DO5q7qnkGt?XSm)znL=S&^dH4EV|V_sCsWvMAIA4Wh*W>B zc6SxtF61MEwCWpooq5(P8SO%SR=UDN2QNcB#Ug^S-aFC&a)og)*oPoLxlc1;K6p-N z&@YI&JkaWF5Bq|g3q1g|od+sjt7>F}QDF2V^*S-2h%>>qj{&9NtWsc==Qu2+gE)PU zsW&A}MQAeA>bp-2#=!S-Y|_ zFUfS;iGyT~%3E*%cyqf^UtO+Tr{GBj65tj&q?9+GH(s18Gi455*(J>pyZ+c1y~h^4 z@`d6;XAiDZ`<#7grLqQFCsA_QG%Xy{oSVGVYJj+Rrp@4zJDMT4Q+Xx?pP(}nW~SYx%*?`F8&%B`h}BBy05>PMOq+<;Lh4B5uq68w zC%1$>;KGIAzU|=3tkya}|>`H%dzb$f;^xiNr{n z;}~pACq-9ziBORmHifun4Mg(vXJ|}->=;3KQ7 zlX?<&ts7aKgy2Z{ZXg2S36!Z(bR@?O*$qgDaBOQj3DT>!AiWR{OFdU2@b6J=UgzJC zVMRJ_TakosZ89@L%rC4yPQC6JRZ$?T&!@2ZkU_~$JOftn z_72-MnRxPxcWnKFSi(wsM0)dXV|U)XGd#U{6l9cQO8e=3O3e`9=iO3{M0q+B&FFfi zu~J)>FyxFEz>s@bzUBcil$871=s6-E!_T7oX5z~WQbAc29Q(=ryG@E)Ct7*7Lr-cJ zW0MDwR-9+o(_&$c>OoR4i#24$kaq&Ervt+SKG##yU`0hSNH=`N)R37Vwn&Aa$p0I(R%vw-@ku@T3=3|eE1=-D~2gq)p+}WX2z#p?Y zDXdE1)KT8}I$1eJF@BaZ4h%-Ja3VFKcP2f=2;#iJ%u4L7#-+x6-joT%-9)G8i|qO2 zIoXHI749)#^50(zvAl@N6ook)UNgbx~B$dwJ`a^x*?n?VQ+=thm#r(f zUwQ|kmmvDM^f7P+$4>#JGAE!l$%^XpI%(%NcOryH`}NH@fE<)o0k^F?tAH~+!SQ`t zqpU04|kw z?Idy~nILhBmVcJ*0V0e2MZiIdh}C9qW&mCKv2Xj2U`wQR&JvgKp95AyI3(OhDCpVG zFNDlr?d-G{LqOrMrl5n8>b%k-!%v~Hs5G6-6edLTMP=p{Ef-k3G+(9Wo=QVRYNNN@l2(QjC%@ zzyWd#Zk0+rOkk!7AS_J_a@4!IRa>gm>p40vw}ca=a6#v`CmqjAXK+bOar;OVYT8!K z?q|D1MXx!6pH`Te(u%V-&Y1CZhIAl?*h9)uk`-AO<0iaw!2qgQ3b8D*trCS`!43}E zt06IV2rqF~L)~5t`|!6PpCQ{DQ&VBEgsdp+l~5WXP6)E2?Uad-6pyE3hutD@2!~xk z%hI&QoyAgz!raks|0a15QHBTFRk7QPs;EK}M6SO5II|z?+8~UTaW+)4CDO-+1xnwT zZEcf(*h;{4K-ViY3(S{8`is2tymdpY6T-+6WrE|R6qAoOf|%a`5Y@4)+97x zC6@W$PW_LqT!<)AkZlt1-NuHT-t~4c zl8)FTFTHDK+HQA~x{|wXf@AIM^qG_xtcMQVj7HdAkGPe>=%_^Az}pS7G@J4H4CMG4W>SHOp~95sF_Xu-ROmMm|ZV+DV?!% zX(DcNf??-4fib-F6&aCEpN_DcZ^4{P_2WHXgFc0NWMe9n*}%h>rQ8V7d%2;YO? ztp@)wvEY#DI>NJ`y>zzE)~_Qj-i@-8%bm*2-H8m4u0V8=oyj&$e*rhiI4*T3 zP!QcZ*#KP=ge?;4oNCG;!{$LZ!1Qrf4k8W+i3SY${;jD+LNaJ}kF^+BLUGLh=*SOaP z1is3z)9LAz78U9C+@8Wb+OgXu8trw~+7_Ano;l#~1RwWeegjt9drC+b+m8iTFV2dj zAuVp7l~V47)!A7+tHh$&1XCpnk0Zh)s1i+PFf`z$$@1b*r5+q>Syh*KY)vD_6atN! zVapC2336YFtT?N}ez9ogFxcT0YpN^vNqqpTV(P5 z{Jw9U&tgDbhqcm{p)MTo6d7FO2RP>~0E;i^f75LN!7i|LU;7~nw#|Z!KCM_Na;`qU zl0(8~ZFvsmRYhbS!%4NQgyP6^KJ6xDoz$=vaS~onyGiogAj@)!?!@~-mIJ7Ou-2h< zki`ZCUGw6{kp{+cXqtsaVS=4SX0RA0x1wGl;|5K0Ox-l5 zuF}*>NPz+8T;Xc=Z+$<%)>x@*Vcs$!*(f`;%OcU|9w~o^FNNRlTnY~%!ceS>rnuKM zxzcECUYeZz;DZk?l$UFZl?zL?^~vJY)ZAowiL=`-ZLMxLCM);L>ziwpIvz?4qzrlo zJPc4KdI0Qb6{8J2C4LU#_y0Cb>*yuS&(4$gC|7}bMV<{VgPRu`7pJpFx(c3otr+=w z_ZPteFM{Ic@c7!1f`T`r+jS|nYnWEJh=R6Nsk;QlB5FmHrI=WMKovskU>+_1ucl9HmIjs~Y4suoJ_Z8dGdfz?1Ws#GSHD?s|@>RM%sAzuXxw!)8Ua>IG<+8jz_&qF77u_zq21s-hL4Q<^t zB@EWHQRGfnV~2@^Q?P(xLR!%c(?I5QsN_1Lr1M(GP z&PA0J`FaIRt#I1?kYsN}8|2`cn?s)U+(QlSyD`edZYfFR5>`{6DG4njg&_2}IoXk# z^))SmGn$#5n|fpypT|$>>&Z*3K?IfGP*b;A9*q{1coNfysvOE}B)P9J?vOORniXO$%&dEf?s;lzTiR=i=fgX@*jFLf8jZ^014`j8kv)s4j4ICgHZYR}< z=fb2p@?(%{B+dXh^Q4->zEX{JlcDt(Y(U!=LG_Eq)(!SIfG0SI&j~mx5{UT{^S3x83ZW_89vg$LyW<_TMEo}t;vnF7TZCl5OFy}4ZsRtM#$fRDRuIuQD?C_e>0+-vW{Nr)Hh z_H4&V1iDF_#Pq(LMBqH0QSQas(f+_m5^bE`kCyJE{G9eLKtFEf=kK>+(W$uBB$eHA zz|k`jlrE{uCGPUv!}J_}1*%TE$_sQAAVowEIgQX=xVON!D#C~Z&0IUop38^s+__u3 z)2Q8{B>#7o-CCh{K$|ux<1K>Q+p>D1T%tae|N?smh!X!}%vm2fsx8PZXR)}i~?8esZ$w^lYAD;w(tny|94 zvE6v_#0huSrA2Sj&F!sKo^ok%vbtJbtFAZdlclpIOtiFkv9__bR%yIc+1y-RS**}> zlXoZT%NvXDe^9woov5u=>dP-o`W!Rip2Vsm?8b)~*s-Fj(z{r&Zg57xPtf0p_z zZdEIdjbIOXj@nl%>$kTnx2rF`{05Kqj`|EKXn?5e)IyZeo#fu=ZKX8haV z5WNQe zPQLQ(YDvip!mHPCp z_38)jqWSsfX~wgax>axBCoxynR~os>($dR!fQ>J#)Em|H>XyYvX$HXADz(%zm#S80ySGb0zN@Ed- z=%J73C0cuLtT(D#mBq%&ovJvK542z1z$#k7mpdTuVG)=K--uZ*Uzj$g&s~UHT3*j5 z@_oZvENkngty#7nw+-9Y9a~S^ddAi@+w8aX0oxd~&Ae?6+2*hri{UZGk}d?rj7L+i@L4B0{Uf9KvyY~l zKlkWHtoifvT1~st=fq-rqX=Zs@0)e*r^vLwAx#G4#In zXzDX96}zuBA87M&zh@jhe?dc6L&p^_Jeor1Ts1bItR<)BQ?=C8e7csNn(wLgOwDI% znW=fF=J4CsVh8!(asnfgnBWHk6+oN527#@9YY{Y~Uae2Qg`*qvfGevjKU>|3xp+Qu zFwpH{sGD8CRaxC!uEgSBuHJt6?q>X*%EZskpNZFRZB=jAo%*fy?X`vKRz3dC)Wn7P zGw(mcWf8cq=R@~}<>H(@ed+A!ch8R@!5;)R)>z@-kmbkV1Ymv2r_mZzp>Cl|I?RvRnp6M_EWpDg@K@3q2= zQhD0CytP%iXO!kjMtN%1D9=nAB?pVeuyXm{q22@* z%&2B0G~F<*xSh~UEEJs<>Qz=()sKVC*GF`y0R z@fyZ!1g}xN#_&4uoHkg%-@{re?buj4)+H=2&4}|K)4oJ2&x#q^B@L%z<|Q4+nsLd% z5f+%1x`yR}Rg4~nd7f5>9&>(Lo7ZdlxOGLVXrF0uE%_O4EcMd{pH1Mb@zW-)y?LW% zyscMEz#ePXv|j#^(;UR=?0LjJlUKB5tCo;n0Wew!G zMZiO}{PeS49%5PWMs9d$ddzuYNo`#{|JO zE(08BqNfR9Xc&SgVY&oZ*G=nz20CXGPRy9obc$B}lV)aGDgz`VYh156ul8-Omq>Dv2zM#X2^VPZB^ps zj37gd7drh;SHOaqfs{BNbFnmMeC_own3d&?_l92B*jlP?6;_sBJTg0V?#N3$Nr(Q8 zy|A#c@qS^YzOeq{5zwl0GhUNpzaZGk#0!(+L&hES!XyoP$vu2wlBa%2Us>uQ%!nH( z&Xom@I#b(JV*|H&v$3_Ze%qv(Z5$F`WYTR}d{^HedOsKz{EW8*v<D_iyI z$%5PQlsCCICGO@d^Jr)5+Y9syEui~}%64P%Cev_-qV8yE^#+7fnRjqGstk(YO)>gpL3Wn&6_mU977pZ3B)>$9?~UL5YGwUSrG9z4vGL_<9qftv zGvIDFZsOc{0ko^Sb*Hi#xG{V~F&cN!@Mkz#Xf@9Jh4#7)x|n(cAFM1jmd6Xr)s@@J zjrP~3VJ8beSK#g!#UDB9q8v>>$sRw&>c;Jrb@keeT@9+qExv9P|q8pK<>g&;b557%+Fs*UZfb^pY-~dqw#&1$tgUhx(;97T)8l1hxX%FG6>nwQ6H|V+kWL?yNZQZ)$M?4gOxIu8`pO zIJ><93eDStzYVoqtK$Xtil?40_|V7l-d@3uwea3}0TuqiW-znJdWSgH-!q;&E3*WmFb$PTS zGxE`RG|In!2Q)Ff%Gym6p;rDQ>OffOcmAN}{}csrf_SU&UN3+BrH#dHQgqVK^s>-- zUb%N;$z6WSRqo@=$$Brg`Q zSGAbj-z$Eq0LAacR-OC>=RtvxAOYY{q0mX97j6f^tDSWBB!9B#V{b92#l|YHd&*}U zlm*h_OP+;xkND3M<0tTA2DfARjUmPuUM%Vg$IlDh9XUA{IS+-F>hK zvAPx?*RN<#bNE)yg8Ag=qP1Y1UW^}@w`=zJ;CD&>fBa;@sw563;t8v48of_^x)rOLr$gNF5Z_w7dC)x`=3~40+$%BLiD^k_E1(xnlQyg;W+r2q zm<1JdEUrOxw@FW|Dg%l^Wq>h1I6qJun4&jQ2K0N%fJQ`rbbVv%^7@k02aG8CBe$hH z`Xezpv;xLzbzQrwRkQ_dQCm@UN!m3$_=3LxWq_JyjYh$aPc=^riFViQjYVqHE^acr$ z&$T#Bn3PxPgi50{M#k+**Rf_vh%$JO%sME%Qg~hfdWQ*Y_kuv8WdZQ;8+U3 zbXs6Eqh)h=4QO#2#wJ~}e2m7U7&Qzl)xZOTrc+X2JNH$BT2BtTQ>U2)WQ20F=XmeG z1RnZw=V6DM+L`)B?DW&qQ)fVv2M#9m+>uxef13FmY~I|g$>w2d22G=8=XmeOm}Kk~ zePFz-8w2BCGK~O)8E>}~$q-9nol(x_Tyz zbK%hvlTz&t@&^UFx0e!Y%s(W7ztRsN%`KxsAMxJOrU*u_FtoaKl;JQ z0sqmo81r6NpclOm0H|-4^v$xqIjwJ=(>G`I%~=Iq(Gi3~Nf6okFB}5mZ?O5*#hq4} z-s|hJ!67VKmu|091+J9jP$&3n;?s@{q)#IhAcp^#~a@69f$D` z|BU1>$J1%e&!ZE3QV86jSl-yBGjYS z6_5olLKF^coS<-nwUt`qUY!)Ig|%%Mus2ul6)K6w^2%1DT3t`nHn#aglF8t`b+}|? z;0;ni*TUjz1)4{&gG<S>6YlgmumS*Fy^mlQyq1KVq~EcYT#j}?2|V=Xs<?hPA9<(JN)%ax$C&-G>!-OcqVrV$8$JN@bQIQ9>>q;F5rD)!TJbOpshUk zU*k7Ay7u~a%+Q-@mIGp*ditHLcokZ-Nw}8am8C^X z%8L%t9h?L*V$C)aJH=Q{i`eVa`vt+Df@unZ04g|;$EC~AGTvTi=S|7a&ZvYj+N(RP zMf7%D$}cE3J84`c2e9%%dX_D_13gnFJ^ciGXjWgZCZVUjy0N_uKFY2%z`HL@yMN2> z-%{oT8p>QwJs}R5@eSo#-AX#Yt%H*k{xo%tI`x@)s32W+Hj!5B$T3odC zPtp6Jw$3T(38_ z;J7=z?Y`Q(k+3m1%;^0YBCGiA)o%^Gv(FTe+AZ|}6((v)%T!dwCb zAqj$TWLUF~4IhKIkA{64GK-P6HNi1vZ6il~qlW!_khXMV#5P84QD88br65KE`)FJzk2eF#DCnWU zX2c*`Ie35COyd1h?CvpAM5T+Q{j7ho5KqME19U^;!>9CtRaLCtOhE>_uaU}X0h{Q8 z_2{}0L;s5D_ODp|)DKEol=v<{->sAxIbERt{D zvH9fqNuK*SW=hc9bT<2y-wOVjH6;6m=C;H%14x9dZwa}A<%Lz;>hZUQJdnKaA!t0l*k338C!2R5j z1kSkBsG2iFllhB4G@k#LD zDSQ$>d*lcxIA~7~;W2~+b4BuN&k+7;gdx02z7%r%@6FMO zcka!%8SqYiK|ENW6q1PL)4q9)yf*uQ9h`l-^MI6>#iI`x0VzC3CRg5*&HUs~7O@+v zW%*=t%99lh-FdP+H$B<+wH4)=^6Ahs73b&y@uwf}neveEGfnd|g~M)wG&VXIarr2f)RJLWD2h=JjwZiLPaReEP7NQL+<7;w|JmpGs6RHCLb5=hxnU%T(kyY&S~~M zE+*2rU^81JZDJqnEuS>|BTtqTg@H9|k|X#Oy%FUn%cY?5zk|7g{QHgdMSOpLv_=fv z{j_3abKAOOWD}FS3zxWaYjGLgo7M`P6z;l&|IC>?l`RXeGiR)c3HS5FgmvajWoxUK z9=A6Oct_Vx(OKlPFq&t?U-~>T;mZZ3IbZ$h|MjEL?@|C^E!u%|ov z>;(cptTuD}ox}t#xDWXA;CH8A%;&aCC-!O-pJHs&BAG9?X=a1X^Y1w{)Dd zPG~1j;dKVDDZEN}mBBZXY=XPAG?+T$`XDizhltrcNea?a;4h)r0(%K178&(jOJ-*0 zqtg#Q!6~vm2}5RXXZ!R=e6APggfX*k=Ql(*vVjV#<^a0=26r1QYDK+h6wRXbw)Nms zwuuVW&Crw6i*`{zy_l%!KRmtYEZ7T)1*f7XoP?c7;HtxzuAgcBh|(3;Z_#%YeFwPj zn9}zTTTM%vwn6TCQ0a>MZ87bkdE+&M)LYHxFlvZL73Q@C6SrP7Kf=A!U02LRA|ZGX zQq_%cw2$ zVE<3C#Tx1}@cXz6Sg#lD1-ocf^yV3iIK(5ysr94N)Rsxz&w zI*Xx4dFY%Rif11ldcM_FFTO$#FU(6^p&iFxOF=1z8ZA{2NsF*O#O~2{DM0{JksR|-qu-@9eO|biw+tu>qO}G(nzJBkE?y=-bdQLWo-;^WH`XereN8EYV zjHtZmyZ%L=4_y=l_xyfuF#HvT=|o;c`DWSBMI@cyD}0pVSP^A+zTGaO&y-1AvGO`` zKqRYBNT~zKT~KI~sj{BXoMcLK(g+d->q9&RdPAfK#YRsb86e9-{g{A!;*bo>j47dm z;>nDrf%s6prccoup~DwR|DT9}!A=W`M^G;8l|gM?^vb~WF2kbO>g7$*)*be?zyRJl zWuK0W>745Wt7%O8n{o!>3 zO1~U=S^i_;W!WUS2N%FlcmcFCtp9Rk0oz?pE)2ay^B0tCCve1=i3-*2w`7B8ezC20S`8GHGT*;gEMOeeI%FPK_adL;N#qIT!LZHyN%=lHiMJ@+UP6V?Qedd zLx}_#2zfnp8(JuX77+GhPbG9PjK;Lct$+jzv==9_BM8O8LIjPk3&)8n{1BEnONOMz z1B(0_?X>c&c`uImj$FsxrlI2(gmPp3t*z~qv;=ClSaiW(e8T z9W#VGyNe`&BXi-!7iZ0d!}Rvzi*xj8&Olg=VpDL35sVa@f;`ILE*BOABep*|1=ljr1mymZ7hFb@jf|Fml zp$7tM&;X}?0dz4)58(yAFR23bu;`;LPKx3fMN^u31KQJ+sxV~ z%LP_vxd65Y@YCe_B8`1)Vu;8EslP{Zff}$vL4o9e@<50KFej|(xetl=&yXa5(?Sx+ zd2s?bzp8!ofFuD54AhDPgZ~6_Kz}s0Wsrhb#zpYTP&Bq>gqi_qzdX80y4O z!Yn)1DbkMHLZ}rVJ3%&>JW7m_pp~B7BIHjbCPS9LaMYg;-V47TF?_lg^|!y|QIH1y zzKc+DFo2sCV*U{Lbmx~xH0F-1W@Ach2+_n+oBUBiZb)>u+2(v{zJL9 z(U$uX@q>>)#WcAmuE#a}%@E_#FAlXF(ov14nuFqyfhqi}4fd}#62{nnySr=r<=x%? zcz5?d+ug+hbBtu05{5S77=?K)$}xr_PTQxS`qc;=Z+@@>C5D8fnz77n=?)yl6zVA$yS9 zz6dIC1O0Lz(FwA?GBgEBg^N>PZd;<1q3IxbB!vRNxq>1A9=ot4bxfw%BM!A3PzpU? zMjYyd(q@10>*BCQ6o5VkY?@oUyZ_Gau7}kod1D0W<4BM`wijW_5kN9gn2~@SR=hLZ zmhJ#jOiqBTYb!{f_nw9XdIFl-HSJ{uYocdcayY~6p6JvOaC0+)QDDG{F&^M%g=S=c z1zwOtY}=41;1Me{$F9t)6MskAW01pMt*;+1guU!5mmbLBUljW_L;{~6j>ntMhX~{& zZ`0hDfhqU~=z|a-#uMzKlie8?0UW(KigPBiC?wfI@=T=^s194|1=$*T@Q7*81*LZ^Es*veLE2wk30Jz@f*>xnUiS=G=%K0Yy71 z)}xnmqpzPO{9d1d?u#ncDd)!TlINPrK(k6cL2UH6MM*Zmzmnp~OR@pYdg~+`$g5G1 zDKwyZH=F%J2X8fz0t3EvYjH|`LCSbL_mGz?j?f*EkFR?!Ix|>Jx<{}*Cz_GZd8JF8U^^6QCB3F#=IiKcUky)`-|EmXzc+M)w3+UV(y3;6sr+gqa}y~R93 z6a@K_ry%ZH@w`5i&cltB;xnustaDDyU{iJm0|IZ71I%)^MajXP0UZ$~7HykINvz+8 zOP!f{0Ij~*N)2}_&ExMd96uocA|p5jfM8{7rf{*-^h-$XpoPQYEenoxNSFL0$Q1Kh z(S*q~C0st(TuPy5uu@s}EIPpZ;H#&fA{4^WU_;wkL$2dw42qU2k|p1_)^v0sfmmO{ z8<>()&Fm}4m5e(ep_Fne`?f8UZLb_Xe;9ryCX&#Gg;Ed!+z|Y^a0@>e_$3wM($~h- zRo$-M-F$UrmC{{Gl;?#FNp@sg5i)`+9oL?<3Qt~(Enb0Z5z^Q0A*(kouVDvCu5UCd z;?PY~o}@J8$Vh%`{)_7K+oL1FIdC_fkPPpmIg#2|&dS?sU=E4t z^CiLd2|EXDx%dyxkM(;&Ylo2n7K7ToLDKG#qy64K0|s=-UjeCuRg~C1cz_~!napAt zas$m$6f-s$=L$lG;QLZcZX-ImII#UGTmznb=gH&mJlux=WAD7a!?eC{USBZzQ`8Jb zsk9aE7rU)G@CPaweGYm~qHjpy=a^5Pi*<*e6O)r1;HEz^kt%<~tf7K|fqZht#(LF& zJtMnNt!*F;+3Lo|W&!#>g?$k-cyLk#Qn!WhBR+NlP78I(oCJzgmx!bvkPje`!T|t5 zb8fm1VH4BICPpd~$Ok#Cw+}DmPuiD!0Gae(De96Wiv*wK{uJCo?pySugB-4Awme|dM8GTp#!*A-lngbaKUlrZcCsDxYY?ChKdJRY9@wEoGHgdzV@&`Ja; zk$|Ii&VJtm9}yH^U!_nzN$u2tBhk1aF5FB{UkN4?=jeg+r;g7! z5KP8HT0d5ZUGTi!SM1ULEczgFlxZ&%B^Y^R`_2ULMr3gd1)=Y$p{7jp+PdSME2qb^ zGbsrscp&6|Af8^k%u@9g#a~x;rYEU50(qzDVakJ!&okh!D@TPNDW^uG`VaUIgA*Ll zLP^oEAJM*qJ;_Uow!b|I>-E=FJt?s+4m4H?Xsn>fe@cl=U|f3K2MYnr+H&{l&3ysq zDbf=>IrA+={o9nzFDBLXr1|VAYEoSfzDnrlb=J@8(9i$T?ye5)C;sCTtG$FP2U)~} z8%BuhX}@9U5lr1!+uT4Zo~5@dUVWZE#koOkUVPT59f+$D9J zOw~ArGY>v3#&V#T&M5~xh*8`nt2SxgnRyGDFb~>hU_{3CHBa$U5BCg6WMi) zxM}?_?jBkAkh9w+*wQ_2jmO84u=#C+$f%|~-WQ_-E4q4?CYXek%xqe7F&g2Z)LC#!cWBzxD{Ay38!wkUB4 z9%G6YwNaWzk;xg#>U1s>ydz_#bb+HU_y*)co;@#u!Icc|`M$&fwagwi7}wt_n??n+ z9tVkmoZc)>!|7_&PT~V9?H#t0$87V2t)FyGAZh`eNi2r!(8eHYRw9{Eib~arj7IT8 z+H(cGj^K3^uOeQ@@j3-(XIPjlD}4zXK`oZy=y1;8s_T@n$jDwsoH#9jxRxW+lLh;U z64QY!MBjq26p0ImRuDlX6c?UrrYNf`1%*?oOE``8?A%A8OJotk-N7_#x2hs1j`S|!S&szW)K%yZf)PriW#X&3FuuE&cZ@#zIJ4J6~>&anO zVe836b~x6~d47obunvdUsl(y4%9NSFxaUWIz z`(?QvFHa~DjL!zK4U*#i1q*b5vsDE*i%^|DqivnO=UQXpoMd<+m^jx>Oq^p(NC97j zpjlN;hJGc!#Z{)l3g~kLke2>>=X`{m`w0+ot~EkH=a{u7dqoSJC>f{y&-WN-C@Ep-4-O%-2}vM>`?8B`X_J= zh3fnS?wO$s(#l2^xClW}VGe_B#PtQvbjIYY&^@q)H89kJrdy;|C@FzUHk|E4L%Bb_ zGjRFGs)o|_KNM1y1l(Y*K_@)I)g8~yhp>???C#cgcmKlf?!ULY zi{s`##I1ILjdld!U)-ufda152R=+0U-LL2k)aLH!4U{W*OctdzSA-3v3jtHn38*au zOXavTC{>++GB6CuEc{ zB>mI*kBd5e?!o7gqVdKx(^c(C*5`Nlo?SD_Rb_)xW(#dlYD;LIPC77s?mQtDbzVa9zahd0;X$eC(mD@Q zE@GO8MSf7Y-eT2?>KaDOaI0$!i3%IS7meeZHK?1eBgZ%VEXhnqDkvD_5Xo<5$O%o4 zSwF26?PXHPpux1hr@?~}mNslx6o3%dQiRU>C(t9Oq@p?t6|uv5>71y70Z%lcxfUvF zp|c*$&4YQ$eGS}w8WCD{Gb2sD2=jtYsaKkO;j|4PB72mv76GpxYn}hwUcpQ^R^3du=2#~CDa5K}<*9qNg=-YLolkl7@B^#`u zrpcIE`nM#h<=lCptKv{s$_)V>L=ujSZ1;6JD9XqlvHR|iqX!(R&{fo1l87N?2ZK93 zyw!Go{qe^Lbs?j#3I>Dyay>A>y}xb6ku+9Q&@0Hb0Dl86h_7w0ZORRDL?H;_F3%hc zjDyfs00t57QjT-I>5@!~BnVrQbyHNV{Gtu3MIC7jjpdbszPv3cnrj&_>WwWWWk~26 zgr*68_Kcx$E0MU+xlU*Tnd@&cOu|T7i+l3C?V8Y6087wa2smL2M#2$*%1i1Xprys* zxd-qh?-lI1O9I(zoNUK?M@^e?EBz1Mtyp-1qu843363mAWJM;|?+=kXDV;k^TCK;V z*ZNeH_sbv^ms8bOwVKJfxDF;@8m4-G+)X?EDQw3En0OeE;m`u(@q(E!*?NqG{urBL zkMw?Q-R1zRKgib{tbS1=noj+#g!L+jbbxy_~P`fnDUBmeY!(C@9d&0v71KuLJ3K;jq>a{ zm`N!($4`oAjSPyVyGbL?G`WAC&yC(Q1-6w81O1!aL}jHRcT9i{Rt$SkGW zMNP*_{7SS8_F;JQR5iRKg#_L?;~l5oAuk_<>LKtBF+cFHAgamXZ^+Lh!rx{j9k*h32G`2)wZPdJFdI{K z2MAgYh1~_oI;VQXZ|LS559Uaw#z2nb?0mYGo}xE0$C8n^9|c^zbAe(lHzJbV>nkY0 zwSGIKF3&1bd#FcuiY^8(f>oox_nzV`5p1Rfe5OI%EU&9jBdxFCsm@DTt&bQS8{R88 zLnNZkT<^CYBr*ok#m`DL5RfjBK68#^EWynFREv}}?dO9Vg;xJ0cMRA7XN-@iRLlj7 zvqc>Tx!h~i(pNOl3AF&-+yrjeMvQY0WQw|s@c_dT^uX1}umH#d7w$p$#B6m7{Na>W zKDM1Y@-IagZKUA*GTTu-tA9b+(v{ZkD53ld$Q_4bBRED=1R5du?~3HHwX2koKsZ`z zUvqT?6)*oNm2O{B)`34a;m>8g6(yF^P7w4DJHv051u}nx2fAsIm^7E?bQ$D<%L**w zQb6ia&#Rxpl&Go~V%y*gGh&-?ggN9KbU}&AV6hl-gc2x6wXp+uJqKr9PEVR*N)Eoz z(9%S>F~p}i;4-cBKZug-6GWvY<3dr?oS_u1nJ4ZLYt6?6crQQ(qn9L-I+9-Lk+Zi=2Z`ry!mJTM1^Pp3}3 zFa$oGui{KgzfU9L_jv>pnSJmM0%LxZxO-Fb+0e;V(%kuf2G*m?iSir5Gs(+u z`1na$@*2-i*?C9az}{R#-pm=kelPn8^ZM6N&fc z%;lhb?AuK4iu3woRu-qopZNc9fshULq->b*cNRUfYR_nJa|kh3TW7LA1M$RvC0Wh2 z4bIsoG1IH$X_Zag$a8TWH1i0FZ2zV0B25gEJO zJ@eK%g_J;nkwBGhJOM{2FI-DgdIyDzC^725;6DdH8CBd;_ETjeYoEm`>Mh7iBDjsI zaa?M1cdSmz74|_S!lXdlIicVfFLRbxlqr2uA$oQ~0|c+YlDIwvL4c6kD zta$}@2;R{^^p+G>5?Dqpv|28_;r5%O@!}7)jCh`9Le}gj?Z@|H8M@j+W>h$QS?+CF&zjB;RWh8 zB2|!^5wWv6Q^|!)qeD9gpHfPE<3end4t`Z8E7Y|UJ<(_9jOo&Jf`|$AmsDh$I9IMK zof=9dkT4*a-V0`IhqQ~JDX74bM+P8d=7#=*)F99|7{tAju%yQfH?`;>{-Q!PrYkRilD<)mSQP-u_I}3YuJ389mG#iTm|U>bx{{C z&K2Zz6d{WzY!IPjpbrY5B^H8R$U|P8hKkDtdSH)J+kY5ohrb2{MMP|wAJJd9X^_8H z--3lZ!Y4ZCu|K4!8-&}>kSGQnu0GOK|L363i5ssAKW3cPt?o} zowlag_e~25y%yVK=Ni1^dqGvW-KY$a_?z4XVT#;&{P4-ch}^XQ1PT$Q+gHdiT!;Ed zKJtPhrudEBvGI8G(*ws-L}e<$5Njo^tX+YR&dVHNQPp0yYiew>r*eCr9=xU~-V{BB zH#-5u)wwCQ8^4(#;vIEH$P6d^_6B&+2r1l&jMYz!%x(MKcWbyyetKSCG$pRxiApD0Nh6n1(u>nig4Sl331yM(K_BSo}S+~J0V zC;w114toTRoVm1}K2D41;|^j7XJ#G)>!^Kucb7u3sXVCErxjk+e?$9y?Z1aA?IZ1f z)&2>H-`-VDfhGTZz!1eH2+!L_(J?uWzi&Tz;Mh(ILey(V|y(G7d#A zM9XcHXj@7AaXm<;eFJOx04<7^Ba3q-Thu5nNqsjhLJ{~aR`D#SKol{un5NFf>6H9N z(Rpc!PB*A8i#aViw7#E?tM&YBzV%3V*>VNq=;iPW;d}DEusyY0Zaqt+AG1$l2)HAd zU(Xrk^OW$^N+364mJ~8%dNq(Ug;Iqf4+4Bjp^^uYKq~7D6$F4{9t8o6VP{A~M3>F1 zkO4ifF7}l62G=ndTiNJJm5TjriCWT0ATCqC6eBG?xC3~Ei0p~Fu(t-{P<4oXM|~m9 zCf*5eaoq-|L`ms>siqgL@6sM*>Q>?ux>}S$@e}w7BKc<%DMG&zJ8(%mUDeN2;s>u# zfdTYEq9(Y1(W(n@E99O48>KW?2BSx*k)uZ^-J+dQ7Zn&V{jC21b7eNd;J>lGwou)= ziVPXD3)J$G-r;qakTRqOl>8fOcl^75>MchSrY4`zQ^JS?^nS zTq^2@ZL_fH$YqLX+@bjiEw760ivB zjUyFL+BvzbMnG}n_BwJ1qTcD7Ub3IOqKi|TyQ3shu0VKr-+aB&SdMR1)|WQcTxN(< zLTlF)1(7m{p1z_WQd{WpE61ImzZxQ=4DBUN@I zlVMFmxI4_(4hn#MpGv}E%RP1c4u>8i^$*e;QV~pO5tG!~ORXnFYnHt8xV85<4Fpeq zYNwd}zG#K3F`SiY?BEF+C|U>H)*;V3ZyzC8?JO1lD1tcGUE+<6#uq9`Lb`HN2Z|6$c*XgBwfK&>53{hJYl zw@9@)sL)ikxjQsfxdJfE$%$69_goHjaf9+@b>3?S2{gf(inDHHt3ryE9wAb!wuI*D zh}^kztOHc0@R7=f;e-Pf8x(9I^%^|(h^I`5+IN;n`6ms-X|P`q;|RZQX~un)BGVDT zD6?xJTd_u4vrZu)Mv~3LPdPB;QwmtBLr;}@Qq;e5deN$XO1{h9hobgfNo3Ih1VZF=lx%F>D=cg*-7A!`pnfO_MTvD> zeaH|HytrIlDuh~6g80%&gkO2k8N4N7 znC5!&a+Hr>!9<9fDr(A#RI3bJcvRsGT>DB{0UcUKl3YI_T*vfptdpQz6-0SOf`I`~ zL7|;~Dt!Ja$6E^pg^o1x!l@{lD2`GW2n7Y1&qzCQ;1#2H5wy?Vnmvegw@m;pRf zjVVO~VYbbI@p=T$Z&6yQtv5HTTb0I!$Jh=k;zOuMcRVwL7a?|nbHtIgLx5bbzNlzK zg53#Rp#ydorOI#NhO<0NE$ISuW71$e7qDnNL#Y0k?oWI8f+?xM&7)wiu#}JnUs|-6^)0X)&FPX6V@mpee#; zCd=^+i9+%Q6_R%gW@w_2e85ts>z36|l`Oin6_+sDucL zqQW&gDUMMm!&swuO7eu~LN`<}!z{)JVE<^M3QjRWJy{{_RndSk%Y-HhQKuA}1k)bM zb;L~4TKQ2*CYLqytXWh~BU~$925|;xptNQSTPA1I^;EC}f_IZ$Sj8vO;nri%JZ?{3 zg=H-FDnP9MUP*tiY`%8$%{PRBP4bgjl0AQwpXU<|@qYbzI~kQh63NU-EVynoZ$kOx!0_LUG%4Y=rJv0Bj%X zIGMz9B9R_m(9RS4*`sB$c=eN2mjcs-RhKOsY|jl^ILOKU0_Y~J{8TFg)Y3vMvQlYz zUVlxG-Pch(a^Bbxx`27(F@NYt1LL8%VBg8`g$NCV_YGy2lES)L7G5@W$7Rf&9ndjQ zvx{nV2{4dLx^~s9-d$-Z0+!pG@Sr%5$+JX?+|QkGpkHv4)5#*-^zA*ubxzd={TOcr2~IEh_@l&1pfWgpE{`UCnnrgzo6gK%K;4w-ZAY~wwChv|%c zXPvdk_MMG|_o|Bxzb-QyS3)xt&zF5eQptFu@`ei;QQTm(0RRfZr4A&tD*31bO$1r> zL`U4pnvR^DRULUaJQcn{_Q^ zgEa@U`PLH+el6B-sd}cM7AZD|0UuSj_ zv2ojr@n)uQ-(0kjR3!f3lkr?LhyJ}qn|k&Y{|$!qyCfK61|~HcF<6Y#pZtQwBg6R_ zj3$dW{>=v?)u=HLsbS!x$jv{oVWs^XQw^U`urv{2$4 zL6<*uTp+XO*=w9Tdj#Fh)ZXLA-g^puu2&B8Btbb8dk@wVzc;}d8~cwJd5;oo$#3GZ zF^@?GL{o5BwIPQjQsPZ;A*9Wgd1Fvgt`hAhOKjB7juVFb${U?p_zIj%Df zjU}R4^0qnZi~_Tnc@zhtl=$)D*I(7XzI7J`2_X+zhy#VqKS5!>L2!UK`in+)C+;9QP?^KI!1?qAe*|wx4N?fqNMqWi$e~2@>_~X9n&C|ptDLo zb?esUo71;$oxM|CBycJ`uRC9e=apv(wC?B5u$^LV*X`~T$0U3>$oQQYN+ht8k81g( z<-nZ?j(&E+LG?%!K1n-q%IIf1@q?&4VJ6TRxTE3G3qFwLuTP zL$(rJ@XLZ`61|jGaw3`h(rfxn?WT4mcHhFrJ|D+vK2x-`#q5 z9n~n`eRuwhwvu=UA1_~-KcjfKiWvw(V+=^<3f+^0An~yyfC5=V#26n%A(;sR^S*57 z`;wU`elG$IU%x2Wy>Vwec||9tkKp1S0ReoJx}uT7(fdrCU_^-+Dyh>xBfr*TUlCKt!h^kWv1Vi@SxbSl?K9uf7lTh0rwhz zTo@Z70Vy^|{D%ZV+v48wdi%l#`BhMP0h#I@el_r@$bEyX%t+s@v0H`kf6$fBhVt1| zK7%3a!>)&tBWZ+n%B`}Qg@XpCa?a&Q^#^~AP-9uu&&5iB#rOU`aaeI9YDQbi;4ZOw16_rP;e(yi)L~X3wYjGt&?1)cBT6CCP ztgP}jW&vSEx2jXTQaJNsVdfAD>b!&Y)sv^@3ojPbqcer_^Ck^FNcd|pFD_i1-GAWo z>-T7$bmJ^Jbrw#)SSU@I^wHtt3EWJIE?=JK8_TJ;GKt1f<%D;~$7z=5;}B#Th<h$+PuS)sXcvEEAV(`DS}c|3Xt^4txzbRZDcogQY||`$ zW5cj*jo8+xZH;jalcTnI%+`-P$8;wH?vdCG;-E7J@Zk_M&#~A^{u_Tz zD;&n_2wp|JPT_SLuQPBRp(q=}zC>yTEygjx8VZ*nw9o2A-X4feq6wNU_9Nv=CMJ}& zTBx20sqraJg+sGM83+^N-XD^fo|X=y@mQMt#*4|~K=IJq2IcM{a{(I`sN_+CqlIBO zAU3;bJtQ*%RX!3aCn@`b_UO71lYeU_lA=~jN|iQmy=H+0LduC@^w07<#H<_is>O@R zk1KJg5cKh0ZaVPjQOzz|-(I#+1XmyL+na`)3YJSVO>=E<&S=5ksvW zgX+_ui)lO@u#!jyp_)#N<}5buwyw3*7$@Q@Tx-o1g;}QO`~6}q(69K4@uA4R{(5D7 zyRv$9WBpEb%d1x2r^I3eJ9H;!MBo}&pF&06FMMlHB7mrV>MXS9x8YtX&c(%%!t4d6 zAR44(dkD7CiVvLWy#1?L@dHD{9DvB73DywRScP7FUzz3h_Z4qvH)caG|vhbdm9t?o7OAx$si7*?}Ph9rZ+K#~ zfwh(kU%{zH)ckNOl7pAR1A@I3-qy+cup0{@)Nmcb`tUbTwKz?Iu`;!lS#52qqd#4;#S<<_=m zp9RGzY;e{o&nRrbD4dwLYxWeqN#(H6ganF#`exU~V#n8v-U8`Z5vk;jrEQ2Sid zs+Tf1)bE*dj(&>Y;FW+-=D-Atafcu#B$@#C0&JL?eGPwtM2Y-W?cWOo&l#&W+!ZFoqBAVbSRnsiSvciUJ zLYr%1C-v-H#QTl_n`13vw8^>^AYfdHZ;A@;5dpI?R1mOw1eUPeV<&AOExDI~SB+Ou zo4ey%tz3an>SnO95Kh>D+U-UDQ0Dh(em}?WGm0HSnSnrhjL8e@+SC?8p>o_2igRl4 ziZU>aMG?G$%@K0dGgQ4r!&ZtY=aAbX{YrAD=nSCvIb8Ul9)Y74YfMC)v@91yC%**S zO^MS-Nq(sldFP8NdxMlunrjaU=LLe?7+T#5SokDd6%yEEQ51r-E=Z2g7FMhhr5@uE z059ND+D_*ZtvGzGy0K8(u7ihz?}B9GMimx6*r7Wte&8AeKafQv-fkN*6$kmOFPFrh zvO?+t6A=m(MnBj_I1HTWj6{{u4-5@sG0$`nTck*E4wnH?L=x-~`e_PAjokWzw$%}L zpX}r`1qYh{skJXaAf$>2S(4}L|Z9{(msb`^0Z%V#JSI|$@cVIa2?N4`&+ z1b#y%GQtP0CehoQ_DK)i1HRD}&ESoiLMGjeFkh)+MEY^@ZZ$w^c|w1_NunaTH4s;V9J`A%fpyHUF?@;}IDHxl^CWMg;I zRCpK1lVoR(3)4}OlM>2K4%v_zPtTJhiAFc{LOe6!)S*yM?-~RLMK|i77f;#!rX9iI zW*GN|`{)pM_*PCHpg&MFJZmQp(4q8Sb_tOmiGiXDWMv{IOC;e9U-yADO+aYXpsq+Ke<&N$*o36wt?ke zH!eZJ4#}5g9NM@HSGoyEz6Ms*ZIEE;4&6)^?rW$J#_8|r6L#|0c)X%hL^PO0e8}t+ z_3;!wAlK&8od=)h;7sE@dh+;a#Xzb}b3F5?W;|s1C0jQ1-v14mIgxwVPdMe3lL+P8 zG(`>Z7Lv<{5fUyODkS|LRrWx)r8@$(n4I?DJ6a{`fr17US@?-OP+T>iP$in1+x2CA zc?C6gTt|IHA{X~SSXNk2_avcCeC$ZmXD_gfEqeQyY~h$<`i?0H>7o+$PO;-XV>;QF zWpM{*2o6ZB9rS%ub=N0#MBA5h3S5}1uPWSu@YLrBe&K}zw-giF!5vU!3(_(qqu6)` zmY5Wry5YXR^SGG!xOn2*<5`^RnYYngi(j|VGpgH(#4@!b(l14z26yGLy6yZlPZp*VS*`mAdh@e11Sa$*+ zNUCp&Cz0$+M&4Joc?y5~3j!R4580z%I4_ZhN@_elZXv^a;%$Q{7}c5M6vB%patK>F zF4sgkV_sFp=0|P#lxWn4x0!?<+)VZGJF3Bd`JssH<3^Hv2}*bxdiVT%JBdK2;0bz zZNiFv0I4b2KVP$uZV7s4OMhU)^%N8Yk(Z#2`mi=Kiq}CAUuRN$9X4!i)s`Dy7jVdj zx-x!-;_EVqjzdh!&UpMG5kg`3$Wf(3@?jU}b~v%0f$*tC^iB$Q)wGtZ#tNuCR*kXK zsvS!#SF?*+u#+ zcZG!xUxs*!1;k>#cc?*PICHV#J_Py6J(>yg;W3>-@3PRi(5AE_ChJ|bpC+;xyrktsWOomqd@skXK{!pON!BOTo znsbkly+LY(9*e9HoS28QI^01A+S!A2I#R`~T~(QvR5~rgAX%aE7VQ6TZa3;HOVz6s zJIO!-++qi`%I34ii@Y*Z=J1t0(j0TkkB!lDY|#s;f9E#46ISp&2NL4v8nhtx?$+wAJ4TjD^YGS2QL_|6wNfU)&3X8;Ho~=#*nL3AH>&Oh7LD;haB6;F7 zG-Q6H!`$r#U-v#b{gl%XfBN`IMJF-rRFjh6BdM&+l83uCtvm)HHWIEI2mp8lU1}U1 z$!|mT0umw|o0^V+^y)1Fs39EA_gsp>y+?O>oqt7=Cl&@jL|!}K6a!AXy-Io%udO@j zQRMVQY+YMZ9MD|dxTtuL$WDYk#pdaqCalSW&eT=SULr?HEOozX!exc9l9MisNJm^F zl5nj}=SGP6h0#Zr>rPM+1v2`43ZoC%lY+!EWCU;Tuf3rXPk!*y)Gvr7jI@W8C+{_O z=gG_I>B*xWqY_fuPtQ|nh5$e7RdOWC)0t?-*Q$->jU@#`a=s9TywmD6_kp3b+TTUb zA@v--7Tq@!U*3>P+KS-VkL}%UQrtSx%2OSBQnQ$w9Egna9DAOYOS4oCl44n$At!;f z6YxA87#;|Co{|PDE^0w~(JQurbnU1CNogsZKHZ5Mw$K;&!7N%LF?1iwB|sG1vgLXe zjpFYZUI*|x2=d2aE+Xb%i<4KW?g&~*sg6zLgrGRrxXxZ52InX>;jrY6Ay_6d0fm6kl8-HvqM=+KW1xERF%M)qx|_zGIES!{yZfd7>woN zLuy0qOnQhBgn5CP4Omrac)*!5g|M6W6upr-pByLqkhsD-7sylkYY~bx&9tgL`8D|{vypB)g$Qr zzbFsE&JWRjq=;g7V>u{09{HuGQCGTosA#^bjeX@Eh+cx|JwW8Jy9hW)5wP0q z%?+SSKaO4Z5quKK*7L+A{Fi{$5Kam25sG;Z@(U5`S35K9`3O)rswwQBr22seJ9NiM zBybJFjmtOM%r_QFf`3%KK>{NPKZ-X~k*=$wAFn~I?LTrm{t3(}Gu!Do{Zb*zBqD$m%Xu7*$AO7~^HRL*D8afP? zkQIf!5=tY42|;#reKHY|;`3DOuUiHV;jb%bS(f&=Q`qWImplI5-y{bjO7K93Iu3hL z6jf+~$kVqUBm1$h4Z>KNWJ4ueA_Ht#sPc{7);9SEtpr>Nx?Z7KV7?sEU+kS{ts7#U z5N1{=6Z|HXkbJZe#DWGODTjBYH!?-7O=!YY5(3?qTY*ZHC=czCDz-5~c-=Zs}T|c10Cj4#2073Wc$dRcGW=OIe3S4i8%&lW9C+u>sJAU=oi5!iu7k6-DZs zMV7*Vz8UJ~%>UfVgNOnJ*(L$kZG2F(yWR{3(h+;)XLrp_yX{_1SMs(^aj2b}J(Kc+ z_0Wmy@fh1{f-XmUC3~d;Hd*4%JeMQ#*3B`$hP1Co&y;k$eaSQq|DyIQM2sNa!fXb}%8R*k6 zfe?@11{)OOw;?(I`D(anpjjh6RDw0!B9EOm!hjn>JDxch(6%UYfKIO6+r&13jYF)X z8|$#b*RV;*{V)@2JZmOK+IHUcug!docWpr6>-;!nProFo$hPP86z0*6-7eB>ud~*+ z%-r|6eNIpC@h%oLV70xclyb4XSaALPjK~?%;`Ui7X!IOgcHl@*_*!gP?h5~fDqYFD3nPVf!xAO= zpj9yZ+lanhvy_H`#Fqnz1Y_lFzJI&S;`^CBpE{3XKwX8k(v_jk?sJF=uJL`0c?-be z3kIKbTR^Z2EZx^$h=Ogiq@vF#m&%-~kFO+2*o-UBp}MLFtYbLoj+4@)JQvVzQqoBS zdlBd0^|hNM&keFHr0$W z^pEX=-u_=+1+M*3f$p7(m&x9F=E`q*o#)r?;W`97{vad?*%<3+pq{>9!waLyI3X8$_y^*0*J)h(=BCM4?> zS-LD1f98SmxA;={{_;}z5n>F*x@b!JO_R%w#^%Mz$qzpG;A~}SW1)I>abs<=JT)~t zSy|-dwu@UUn~llp-OAeLYPF6ZB>_?fy#sy>P$v2T*wHFMAMh*j?;yVaZ^N{XUc&q= ze|evBm6%uL)!;F>MWJz#oqf`!R`82`v-_K1i8n!UbNKn%k%E%HqT6*Tw`-WzxQ2qU zRjqpj#UW}%l%tG0~j{ixvPYZI|j=HHoSD1=wr3-CnVqlbVecrM8u72W? z(^`3AKUbCCuiTE-2k!ALNw~{1=2THR;ybK`5IWTW&Wuq z*X8eS%%U>(9CUK$%few>;K8Nc(AG^;zF;#SN9uGvagazj1q)arx{hjN2k<(C*K>Fk z@H&cw>#(|7rm(uEnaKB$?;>S+K)PbAxww`gU$2m<6;8V!lI)FW0}3-JAkBK=z5(~$ z1SMj3v@}u)>zU8Al#x?H5PH0n?8waeni0c@W^U)Y8GDS^!zc9i=(-hqNJi27_Iv^b ze#FOGVgWalupWMhSnS?;XTiMg!0g($V9FiFEq*;d&>X@kgUlrb+}|iRodfQ4snegh zv!!-0nTCGskVr$Hdo(pZ)I5w+K_l)lY)@>&6?L=Y^SSwKEjvYTWW>#2sGv`$K%DlZ zPs$RIyj6Vb^PoM-g^6~zqaY=fNc?07Z%NLXbB&PmSN3K^1v&TFWch<-KM#>bP;2kn z_|4jhEP{M^J==*ap>B%EQrc5w360|&&b!z?xyyEvO=xa~w=C^V{mxIf1rS*ttUO9T zBog@^kPyv`V{7N!rzre@k`5H_M9V}GYLZ$ijaLR*7}TN#*LvAg`I$s^gyp~tNj28I zMN*Bd^6~qs+E;G(EqMb8q=W6G8u7a@X^wpkQjNkH0B62bQ`%FiQEoD_AA=2O`+$O& zQJ?ufVbX49MHbn|R?GJ+#451>e!MZ|eefx~R`@A;+)xKtmr#(oto$TpW2QVM1*;3^ zsicXXPbPXqqH0QABV_dymo!OXTc(VhBxoUQ0Gh=SPH!{jWJTlvdB4YO1o_#N-5&-J z?9}FcjB_l0cz{A{~LJMD`b66aEZ zAff|czi|}^BK#W)aS(7kEy6MaI_R_R67U>w$hz_f0T0-0BwPb|=2S(27g8E2-rOz* ztAp}Wz{lG*C4@c~<)^@hckMkm3Gslvp6xh^P&b8>nBJ3<2#wA6ZQ7)Sw+L=;%j)UpIc=Mj zM_?PoP*4HX??U=|;@q(QDa?V^KH14q8kE(VjBf7j5XNczKWslSCz~Zg_g! zfM*dl2XK3GbFk+PihrA;H`*LXvJ_&~-`(Sxm4gp$wADi^i>LO?L%-xN?>@D%d~Cvs xDO=sgCT@c7R=973+ke~#*H%NJpT9s>tbgkd4i2 CONFIG::timeStamp - '02.12.2021' + '04.12.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index cd9e4b9a6..d0152fc44 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -15,6 +15,7 @@ package */ public class Main extends Sprite { + TestActivationArguments; TestArguments; TestCatchFinally; TestChain2; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestActivationArguments.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestActivationArguments.as new file mode 100644 index 000000000..80843dbad --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestActivationArguments.as @@ -0,0 +1,16 @@ +package tests +{ + + public class TestActivationArguments + { + public function run():* + { + var func:Function = function(a:int, b:int):int { + return a + b; + } + if (arguments.length > 0){ + trace(arguments[0]); + } + } + } +} From 7599ba5dd07313dc7ddebb8030a808fe0d84f910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 4 Dec 2021 15:15:47 +0100 Subject: [PATCH 11/33] Fixed AS3 - direct editation - bit not --- CHANGELOG.md | 1 + .../parser/script/ActionScript3Parser.java | 3 ++- .../ActionScript3ClassicAirDecompileTest.java | 20 ++++++++++++++++++ .../ActionScript3ClassicDecompileTest.java | 20 ++++++++++++++++++ .../testdata/as3_new/bin/as3_new.air.swf | Bin 20597 -> 20699 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 26428 -> 26545 bytes .../testdata/as3_new/obj/as3_newConfig.old | 2 +- libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 1 + .../testdata/as3_new/src/tests/TestNegate.as | 12 +++++++++++ 9 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNegate.as diff --git a/CHANGELOG.md b/CHANGELOG.md index fdb87a23f..6d015f599 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - [#1762] AS - switch detection (mostcommon pathpart) - [#1763] AS3 - initialization of activation object in some cases - AS3 - direct editation - arguments object on method with activation +- AS3 - direct editation - bit not ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java index 5acf22ea4..84c3da297 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java @@ -58,6 +58,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.clauses.TryAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.AddAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.AsTypeAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.BitAndAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.operations.BitNotAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.BitOrAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.BitXorAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.DeletePropertyAVM2Item; @@ -2252,7 +2253,7 @@ public class ActionScript3Parser { break; case NEGATE: ret = expressionPrimary(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, false, registerVars, inFunction, inMethod, false, variables); - ret = new NegAVM2Item(null, null, ret); + ret = new BitNotAVM2Item(null, null, ret); break; case MINUS: diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 4cd5aa870..903e5f465 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -16,6 +16,19 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile addSwf("classic_air", "testdata/as3_new/bin/as3_new.air.swf"); } + @Test + public void testActivationArguments() { + decompileMethod("classic_air", "testActivationArguments", "var func:Function = function(a:int, b:int):int\r\n" + + "{\r\n" + + "return a + b;\r\n" + + "};\r\n" + + "if(arguments.length > 0)\r\n" + + "{\r\n" + + "trace(arguments[0]);\r\n" + + "}\r\n", + false); + } + @Test public void testArguments() { decompileMethod("classic_air", "testArguments", "return arguments[0];\r\n", @@ -1211,6 +1224,13 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testNegate() { + decompileMethod("classic_air", "testNegate", "var a:int = 5;\r\n" + + "var b:int = ~a;\r\n", + false); + } + @Test public void testNumberCall() { decompileMethod("classic_air", "testNumberCall", "var a:String = (5).toString();\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index 76057df37..bc8f6a150 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -16,6 +16,19 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes addSwf("classic", "testdata/as3_new/bin/as3_new.flex.swf"); } + @Test + public void testActivationArguments() { + decompileMethod("classic", "testActivationArguments", "var func:Function = function(a:int, b:int):int\r\n" + + "{\r\n" + + "return a + b;\r\n" + + "};\r\n" + + "if(arguments.length > 0)\r\n" + + "{\r\n" + + "trace(arguments[0]);\r\n" + + "}\r\n", + false); + } + @Test public void testArguments() { decompileMethod("classic", "testArguments", "return arguments[0];\r\n", @@ -1204,6 +1217,13 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testNegate() { + decompileMethod("classic", "testNegate", "var a:int = 5;\r\n" + + "var b:int = ~a;\r\n", + false); + } + @Test public void testNumberCall() { decompileMethod("classic", "testNumberCall", "var a:String = (5).toString();\r\n" diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 3756fe40b034794db05f31c476d4546e8c94af5e..af8abec9b94234050734026ac7a599195641339f 100644 GIT binary patch literal 20699 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 U3;}#;8UE=xX)YrF4>wBqMpY!f)&Kwi diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 8870e2c2b42c1b088861889edc7ad41b23945d2a..999321e542a16e85d14fe63c0141cbbef7b31592 100644 GIT binary patch delta 25248 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 delta 25087 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 CONFIG::timeStamp - '02.12.2021' + '04.12.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index d0152fc44..9b67fd771 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -77,6 +77,7 @@ package TestMultipleCondition; TestNamedAnonFunctions; TestNames; + TestNegate; TestNumberCall; TestOptionalParameters; TestParamNames; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNegate.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNegate.as new file mode 100644 index 000000000..d37887a56 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestNegate.as @@ -0,0 +1,12 @@ +package tests +{ + + public class TestNegate + { + public function run():void + { + var a:int = 5; + var b:int = ~a; + } + } +} From dc773af1e2fcf858be1df5f662c94d40ad0d0b42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 4 Dec 2021 16:32:02 +0100 Subject: [PATCH 12/33] Fixed AS3 - direct editation - call on local register --- CHANGELOG.md | 1 + .../abc/avm2/parser/script/CallAVM2Item.java | 51 +++++++++--------- .../ActionScript3ClassicAirDecompileTest.java | 7 +++ .../ActionScript3ClassicDecompileTest.java | 7 +++ .../testdata/as3_new/bin/as3_new.air.swf | Bin 20699 -> 20817 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 26545 -> 26816 bytes libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 1 + .../as3_new/src/tests/TestCallLocal.as | 19 +++++++ 8 files changed, 60 insertions(+), 26 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestCallLocal.as diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d015f599..976fbae27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. - [#1763] AS3 - initialization of activation object in some cases - AS3 - direct editation - arguments object on method with activation - AS3 - direct editation - bit not +- AS3 - direct editation - call on local register ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java index dac380048..16a0fcce8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java @@ -78,34 +78,33 @@ public class CallAVM2Item extends AVM2Item { } if (callable instanceof NameAVM2Item) { NameAVM2Item n = (NameAVM2Item) callable; - /*List allAbcs = new ArrayList<>(); - allAbcs.add(g.abc); - allAbcs.addAll(g.allABCs);*/ - String cname = localData.currentClass; - DottedChain pkgName = localData.pkg; - GraphTargetItem obj = null; - Reference outName = new Reference<>(""); - Reference outNs = new Reference<>(DottedChain.EMPTY); - Reference outPropNs = new Reference<>(DottedChain.EMPTY); - Reference outPropNsKind = new Reference<>(1); - Reference outPropNsIndex = new Reference<>(0); - Reference outPropType = new Reference<>(null); - Reference outPropValue = new Reference<>(null); - Reference outPropValueABC = new Reference<>(null); - List otherNs = new ArrayList<>(); - for (NamespaceItem on : openedNamespaces) { - if (on.isResolved()) { - otherNs.add(on.getCpoolIndex(g.abcIndex)); + if (!localData.registerVars.containsKey(n.getVariableName())) { + String cname = localData.currentClass; + DottedChain pkgName = localData.pkg; + GraphTargetItem obj = null; + Reference outName = new Reference<>(""); + Reference outNs = new Reference<>(DottedChain.EMPTY); + Reference outPropNs = new Reference<>(DottedChain.EMPTY); + Reference outPropNsKind = new Reference<>(1); + Reference outPropNsIndex = new Reference<>(0); + Reference outPropType = new Reference<>(null); + Reference outPropValue = new Reference<>(null); + Reference outPropValueABC = new Reference<>(null); + List otherNs = new ArrayList<>(); + for (NamespaceItem on : openedNamespaces) { + if (on.isResolved()) { + otherNs.add(on.getCpoolIndex(g.abcIndex)); + } } + if (cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, g.abcIndex, pkgName, cname, n.getVariableName(), outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueABC)) { + NameAVM2Item nobj = new NameAVM2Item(new TypeItem(localData.getFullClass()), n.line, "this", null, false, n.openedNamespaces, abcIndex); + nobj.setRegNumber(0); + obj = nobj; + } + PropertyAVM2Item p = new PropertyAVM2Item(obj, n.getVariableName(), g.abcIndex, n.openedNamespaces, new ArrayList<>()); + p.setAssignedValue(n.getAssignedValue()); + callable = p; } - if (cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, g.abcIndex, pkgName, cname, n.getVariableName(), outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueABC)) { - NameAVM2Item nobj = new NameAVM2Item(new TypeItem(localData.getFullClass()), n.line, "this", null, false, n.openedNamespaces, abcIndex); - nobj.setRegNumber(0); - obj = nobj; - } - PropertyAVM2Item p = new PropertyAVM2Item(obj, n.getVariableName(), g.abcIndex, n.openedNamespaces, new ArrayList<>()); - p.setAssignedValue(n.getAssignedValue()); - callable = p; } int propIndex = -1; diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 903e5f465..2e1ae07f1 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -35,6 +35,13 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testCallLocal() { + decompileMethod("classic_air", "testCallLocal", "var f:Function = getF();\r\n" + + "var b:int = f(1,3);\r\n", + false); + } + @Test public void testCatchFinally() { decompileMethod("classic_air", "testCatchFinally", "var a:int = 5;\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index bc8f6a150..28c0350ea 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -35,6 +35,13 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testCallLocal() { + decompileMethod("classic", "testCallLocal", "var f:Function = this.getF();\r\n" + + "var b:int = f(1,3);\r\n", + false); + } + @Test public void testCatchFinally() { decompileMethod("classic", "testCatchFinally", "var a:* = 5;\r\n" diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index af8abec9b94234050734026ac7a599195641339f..2564af4efe757a030b6d9593c5cd57336ce4c635 100644 GIT binary patch literal 20817 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

!JK6ORAwh^;TU_Ft$Ud2 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 literal 20699 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 Mym{y42es}dv3-pEhX4Qo delta 25711 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 diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index 9b67fd771..07f038411 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -17,6 +17,7 @@ package { TestActivationArguments; TestArguments; + TestCallLocal; TestCatchFinally; TestChain2; TestChainedAssignments; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestCallLocal.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestCallLocal.as new file mode 100644 index 000000000..50f69eea6 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestCallLocal.as @@ -0,0 +1,19 @@ +package tests +{ + + public class TestCallLocal + { + public function getF(): Function + { + return function(a:int, b:int):int { + return a + b; + }; + } + + public function run():* + { + var f:Function = getF(); + var b:int = f(1, 3); + } + } +} From ee9fd933f19d46200db008a59fbc2ec73857dec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 5 Dec 2021 16:08:09 +0100 Subject: [PATCH 13/33] Fixed AS3 - direct editation - resolve properties and local regs before types --- CHANGELOG.md | 1 + .../parser/script/AVM2SourceGenerator.java | 10 +- .../parser/script/ActionScript3Parser.java | 7 +- .../parser/script/UnresolvedAVM2Item.java | 222 +++++++++--------- 4 files changed, 126 insertions(+), 114 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 976fbae27..1c4619e24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. - AS3 - direct editation - arguments object on method with activation - AS3 - direct editation - bit not - AS3 - direct editation - call on local register +- AS3 - direct editation - resolve properties and local regs before types ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index cdb4385bd..596d9d9fa 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -1621,7 +1621,7 @@ public class AVM2SourceGenerator implements SourceGenerator { UnresolvedAVM2Item n = (UnresolvedAVM2Item) an; if (n.resolved == null) { String fullClass = localData.getFullClass(); - GraphTargetItem res = n.resolve(localData.currentClass, new TypeItem(fullClass), paramTypes, paramNames, abcIndex, callStack, subvariables); + GraphTargetItem res = n.resolve(localData, localData.currentClass, new TypeItem(fullClass), paramTypes, paramNames, abcIndex, callStack, subvariables); if (res instanceof AssignableAVM2Item) { subvariables.set(i, (AssignableAVM2Item) res); } else { @@ -1638,7 +1638,7 @@ public class AVM2SourceGenerator implements SourceGenerator { UnresolvedAVM2Item n = (UnresolvedAVM2Item) an; if (n.resolved == null) { String fullClass = localData.getFullClass(); - GraphTargetItem res = n.resolve(localData.currentClass, new TypeItem(fullClass), paramTypes, paramNames, abcIndex, callStack, subvariables); + GraphTargetItem res = n.resolve(localData, localData.currentClass, new TypeItem(fullClass), paramTypes, paramNames, abcIndex, callStack, subvariables); paramTypes.set(t, res); } } @@ -2178,7 +2178,7 @@ public class AVM2SourceGenerator implements SourceGenerator { public int superIntName(SourceGeneratorLocalData localData, GraphTargetItem un) throws CompilationException { if (un instanceof UnresolvedAVM2Item) { - ((UnresolvedAVM2Item) un).resolve(localData.currentClass, null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>()); + ((UnresolvedAVM2Item) un).resolve(localData, localData.currentClass, null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>()); un = ((UnresolvedAVM2Item) un).resolved; } if (!(un instanceof TypeItem)) { //not applyType @@ -2718,7 +2718,7 @@ public class AVM2SourceGenerator implements SourceGenerator { if (item instanceof UnresolvedAVM2Item) { String fullClass = localData.getFullClass(); - item = ((UnresolvedAVM2Item) item).resolve(localData.currentClass, new TypeItem(fullClass), new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>()); + item = ((UnresolvedAVM2Item) item).resolve(localData, localData.currentClass, new TypeItem(fullClass), new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>()); } if (item instanceof TypeItem) { typeItem = item; @@ -2731,7 +2731,7 @@ public class AVM2SourceGenerator implements SourceGenerator { } if (typeItem instanceof UnresolvedAVM2Item) { String fullClass = localData.getFullClass(); - typeItem = ((UnresolvedAVM2Item) typeItem).resolve(localData.currentClass, new TypeItem(fullClass), new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>()); + typeItem = ((UnresolvedAVM2Item) typeItem).resolve(localData, localData.currentClass, new TypeItem(fullClass), new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>()); } if (!(typeItem instanceof TypeItem)) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java index 84c3da297..85ba4c53b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java @@ -1011,7 +1011,8 @@ public class ActionScript3Parser { List names = new ArrayList<>(); List namespaces = new ArrayList<>(); //FIXME for Private classes in script (?) - AVM2SourceGenerator.parentNamesAddNames(abcIndex, AVM2SourceGenerator.resolveType(new SourceGeneratorLocalData(new HashMap<>(), 0, false, 0), ((TypeItem) ((UnresolvedAVM2Item) extendsTypeStr).resolve(pkgName.addWithSuffix(subNameStr).toRawString(), null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>())), abcIndex), indices, names, namespaces); + AVM2SourceGenerator.parentNamesAddNames(abcIndex, AVM2SourceGenerator.resolveType(new SourceGeneratorLocalData(new HashMap<>(), 0, false, 0), ((TypeItem) ((UnresolvedAVM2Item) extendsTypeStr) + .resolve(null, pkgName.addWithSuffix(subNameStr).toRawString(), null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), new ArrayList<>())), abcIndex), indices, names, namespaces); for (int i = 0; i < names.size(); i++) { if (namespaces.get(i) == null || namespaces.get(i).isEmpty()) { continue; @@ -1750,7 +1751,7 @@ public class ActionScript3Parser { UnresolvedAVM2Item ui = (UnresolvedAVM2Item) a; if (ui.getVariableName().equals(DottedChain.parseWithSuffix(e.getVariableName()))) { try { - ui.resolve(null, null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), variables); + ui.resolve(null, null, null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), variables); } catch (CompilationException ex) { // ignore } @@ -1773,7 +1774,7 @@ public class ActionScript3Parser { for (NameAVM2Item e : catchExceptions) { if (ui.getVariableName().equals(DottedChain.parseWithSuffix(e.getVariableName()))) { try { - ui.resolve(null, null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), variables); + ui.resolve(null, null, null, new ArrayList<>(), new ArrayList<>(), abcIndex, new ArrayList<>(), variables); } catch (CompilationException ex) { // ignore } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java index d6037fb7a..34dd19027 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java @@ -17,6 +17,7 @@ package com.jpexs.decompiler.flash.abc.avm2.parser.script; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; +import com.jpexs.decompiler.flash.abc.ABC; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instructions; import com.jpexs.decompiler.flash.abc.avm2.model.BooleanAVM2Item; @@ -27,6 +28,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.NullAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.UndefinedAVM2Item; import com.jpexs.decompiler.flash.abc.types.MethodBody; import com.jpexs.decompiler.flash.abc.types.Namespace; +import com.jpexs.decompiler.flash.abc.types.ValueKind; import com.jpexs.decompiler.flash.abc.types.traits.TraitSlotConst; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.CompilationException; @@ -36,6 +38,7 @@ import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.SourceGenerator; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.LocalData; +import com.jpexs.helpers.Reference; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -284,7 +287,7 @@ public class UnresolvedAVM2Item extends AssignableAVM2Item { throw new RuntimeException("Cannot assign"); } - public GraphTargetItem resolve(String currentClass, GraphTargetItem thisType, List paramTypes, List paramNames, AbcIndexing abc, List callStack, List variables) throws CompilationException { + public GraphTargetItem resolve(SourceGeneratorLocalData localData /*can be null!!!*/, String currentClass, GraphTargetItem thisType, List paramTypes, List paramNames, AbcIndexing abc, List callStack, List variables) throws CompilationException { if (scopeStack.isEmpty()) { //Everything is multiname property in with command //search for variable @@ -313,7 +316,48 @@ public class UnresolvedAVM2Item extends AssignableAVM2Item { } } - if (currentClass != null) { + if ((paramNames.contains(name.get(0)) || name.get(0).equals("arguments"))) { + int ind = paramNames.indexOf(name.get(0)); + GraphTargetItem t = TypeItem.UNBOUNDED; + if (ind == -1) { + + } else if (ind < paramTypes.size()) { + t = paramTypes.get(ind); + } //else rest parameter + + GraphTargetItem ret = new NameAVM2Item(t, line, name.get(0), null, false, openedNamespaces, abcIndex); + resolved = ret; + for (int i = 1; i < name.size(); i++) { + resolved = new PropertyAVM2Item(resolved, name.get(i), abc, openedNamespaces, new ArrayList<>()); + if (i == name.size() - 1) { + ((PropertyAVM2Item) resolved).assignedValue = assignedValue; + } + } + if (name.size() == 1) { + ((NameAVM2Item) ret).setAssignedValue(assignedValue); + } + return resolvedRoot = ret; + } + + boolean isProperty = false; + if (localData != null) { //resolve can be called without localData + PropertyAVM2Item resolvedx = new PropertyAVM2Item(null, name.get(0), abc, openedNamespaces, callStack); + ((PropertyAVM2Item) resolvedx).scopeStack = scopeStack; + ((PropertyAVM2Item) resolvedx).setAssignedValue(assignedValue); + Reference objectType = new Reference<>(null); + Reference propertyType = new Reference<>(null); + Reference propertyIndex = new Reference<>(null); + Reference propertyValue = new Reference<>(null); + Reference propertyValueABC = new Reference<>(null); + + resolvedx.resolve(true, localData, objectType, propertyType, propertyIndex, propertyValue, propertyValueABC); + + if (objectType.getVal() != null && !((objectType.getVal() instanceof TypeItem) && ("".equals(((TypeItem) objectType.getVal()).fullTypeName.toRawString())))) { + isProperty = true; + } + } + + if (currentClass != null && !isProperty) { DottedChain classChain = DottedChain.parseWithSuffix(currentClass); DottedChain pkg = classChain.getWithoutLast(); @@ -334,87 +378,87 @@ public class UnresolvedAVM2Item extends AssignableAVM2Item { } //Search for types in imported classes - for (DottedChain imp : importedClasses) { - String impName = imp.getLast(); + if (!isProperty) { + for (DottedChain imp : importedClasses) { + String impName = imp.getLast(); - if (impName.equals(name.get(0))) { - TypeItem ret = new TypeItem(imp); - resolved = ret; - for (int i = 1; i < name.size(); i++) { - resolved = new PropertyAVM2Item(resolved, name.get(i), abc, openedNamespaces, new ArrayList<>()); - if (i == name.size() - 1) { - ((PropertyAVM2Item) resolved).assignedValue = assignedValue; - } - } - - if (name.size() == 1) { - AbcIndexing.TraitIndex ti = abc.findScriptProperty(imp); - if (ti != null && (ti.trait instanceof TraitSlotConst)) { - resolved = new ImportedSlotConstItem(ret); - if (assignedValue != null) { - ((ImportedSlotConstItem) resolved).assignedValue = assignedValue; + if (impName.equals(name.get(0))) { + TypeItem ret = new TypeItem(imp); + resolved = ret; + for (int i = 1; i < name.size(); i++) { + resolved = new PropertyAVM2Item(resolved, name.get(i), abc, openedNamespaces, new ArrayList<>()); + if (i == name.size() - 1) { + ((PropertyAVM2Item) resolved).assignedValue = assignedValue; } } - } - return resolvedRoot = ret; + if (name.size() == 1) { + AbcIndexing.TraitIndex ti = abc.findScriptProperty(imp); + if (ti != null && (ti.trait instanceof TraitSlotConst)) { + resolved = new ImportedSlotConstItem(ret); + if (assignedValue != null) { + ((ImportedSlotConstItem) resolved).assignedValue = assignedValue; + } + } + } + + return resolvedRoot = ret; + } } } //Search all fully qualitfied types - /*List allAbcs = new ArrayList<>(); - allAbcs.add(abc); - allAbcs.addAll(otherAbcs);*/ - for (int i = 0; i < name.size(); i++) { - DottedChain fname = name.subChain(i + 1); - AbcIndexing.ClassIndex ci = abc.findClass(new TypeItem(fname)); - if (ci != null) { - if (!subtypes.isEmpty() && name.size() > i + 1) { - continue; - } - TypeItem ret = new TypeItem(fname); - resolved = ret; - for (int j = i + 1; j < name.size(); j++) { - resolved = new PropertyAVM2Item(resolved, name.get(j), abc, openedNamespaces, new ArrayList<>()); - if (j == name.size() - 1) { - ((PropertyAVM2Item) resolved).assignedValue = assignedValue; + if (!isProperty) { + for (int i = 0; i < name.size(); i++) { + DottedChain fname = name.subChain(i + 1); + AbcIndexing.ClassIndex ci = abc.findClass(new TypeItem(fname)); + if (ci != null) { + if (!subtypes.isEmpty() && name.size() > i + 1) { + continue; + } + TypeItem ret = new TypeItem(fname); + resolved = ret; + for (int j = i + 1; j < name.size(); j++) { + resolved = new PropertyAVM2Item(resolved, name.get(j), abc, openedNamespaces, new ArrayList<>()); + if (j == name.size() - 1) { + ((PropertyAVM2Item) resolved).assignedValue = assignedValue; + } + } + if (name.size() == i + 1 && assignedValue != null) { + throw new CompilationException("Cannot assign type", line); } - } - if (name.size() == i + 1 && assignedValue != null) { - throw new CompilationException("Cannot assign type", line); - } - return resolvedRoot = ret; + return resolvedRoot = ret; + } + } + + //Search for types in opened namespaces + for (NamespaceItem n : openedNamespaces) { + Namespace ons = abc.getSelectedAbc().constants.getNamespace(n.getCpoolIndex(abc)); + TypeItem ti = new TypeItem(ons.getName(abc.getSelectedAbc().constants).addWithSuffix(name.get(0))); + AbcIndexing.ClassIndex ci = abc.findClass(ti); + if (ci != null) { + if (!subtypes.isEmpty() && name.size() > 1) { + continue; + } + TypeItem ret = ti; + resolved = ret; + for (int i = 1; i < name.size(); i++) { + resolved = new PropertyAVM2Item(resolved, name.get(i), abc, openedNamespaces, new ArrayList<>()); + if (i == name.size() - 1) { + ((PropertyAVM2Item) resolved).assignedValue = assignedValue; + } + } + if (name.size() == 1 && assignedValue != null) { + throw new CompilationException("Cannot assign type", line); + } + + return resolvedRoot = ret; + } } } - //Search for types in opened namespaces - for (NamespaceItem n : openedNamespaces) { - Namespace ons = abc.getSelectedAbc().constants.getNamespace(n.getCpoolIndex(abc)); - TypeItem ti = new TypeItem(ons.getName(abc.getSelectedAbc().constants).addWithSuffix(name.get(0))); - AbcIndexing.ClassIndex ci = abc.findClass(ti); - if (ci != null) { - if (!subtypes.isEmpty() && name.size() > 1) { - continue; - } - TypeItem ret = ti; - resolved = ret; - for (int i = 1; i < name.size(); i++) { - resolved = new PropertyAVM2Item(resolved, name.get(i), abc, openedNamespaces, new ArrayList<>()); - if (i == name.size() - 1) { - ((PropertyAVM2Item) resolved).assignedValue = assignedValue; - } - } - if (name.size() == 1 && assignedValue != null) { - throw new CompilationException("Cannot assign type", line); - } - - return resolvedRoot = ret; - } - } - - if (name.get( - 0).equals("this") || name.get(0).equals("super")) { + if (!isProperty && (name.get(0).equals("this") || name.get(0).equals("super"))) { if (thisType == null) { throw new CompilationException("Cannot use this in that context", line); } @@ -448,41 +492,9 @@ public class UnresolvedAVM2Item extends AssignableAVM2Item { return resolvedRoot = ret; } - if (paramNames.contains(name.get(0)) || name.get(0).equals("arguments")) { - int ind = paramNames.indexOf(name.get(0)); - GraphTargetItem t = TypeItem.UNBOUNDED; - if (ind == -1) { - } else if (ind < paramTypes.size()) { - t = paramTypes.get(ind); - } //else rest parameter - - GraphTargetItem ret = new NameAVM2Item(t, line, name.get(0), null, false, openedNamespaces, abcIndex); - resolved = ret; - for (int i = 1; i < name.size(); i++) { - resolved = new PropertyAVM2Item(resolved, name.get(i), abc, openedNamespaces, new ArrayList<>()); - if (i == name.size() - 1) { - ((PropertyAVM2Item) resolved).assignedValue = assignedValue; - } - } - if (name.size() == 1) { - ((NameAVM2Item) ret).setAssignedValue(assignedValue); - } - return resolvedRoot = ret; - } - - if (/*!subtypes.isEmpty() && */name.size() - == 1 && name.get(0).equals("Vector")) { + if (!isProperty && (name.size() == 1 && name.get(0).equals("Vector"))) { TypeItem ret = new TypeItem(InitVectorAVM2Item.VECTOR_FQN); - /*for (String s : subtypes) { - UnresolvedAVM2Item su = new UnresolvedAVM2Item(new ArrayList<>(), importedClasses, true, null, line, s, null, openedNamespaces); - su.resolve(thisType, paramTypes, paramNames, abc, otherAbcs, callStack, variables); - if (!(su.resolved instanceof TypeItem)) { - throw new CompilationException("Not a type", line); - } - TypeItem st = (TypeItem) su.resolved; - ret.subtypes.add(st.fullTypeName); - }*/ resolved = ret; return resolvedRoot = ret; } @@ -492,9 +504,7 @@ public class UnresolvedAVM2Item extends AssignableAVM2Item { } resolved = null; GraphTargetItem ret = null; - for (int i = 0; - i < name.size(); - i++) { + for (int i = 0; i < name.size(); i++) { resolved = new PropertyAVM2Item(resolved, name.get(i), abc, openedNamespaces, callStack); if (ret == null) { ((PropertyAVM2Item) resolved).scopeStack = scopeStack; From e9cc551c37662c48bbd35bf67349c46de5de1105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 5 Dec 2021 17:29:24 +0100 Subject: [PATCH 14/33] Fixed AS3 - direct editation - call on index --- CHANGELOG.md | 1 + .../flash/abc/avm2/parser/script/IndexAVM2Item.java | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c4619e24..cf192352a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. - AS3 - direct editation - bit not - AS3 - direct editation - call on local register - AS3 - direct editation - resolve properties and local regs before types +- AS3 - direct editation - call on index ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/IndexAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/IndexAVM2Item.java index 5a01cd2fe..e6db3a758 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/IndexAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/IndexAVM2Item.java @@ -154,13 +154,16 @@ public class IndexAVM2Item extends AssignableAVM2Item { } else { return toSourceMerge(localData, generator, object, - call ? ins(AVM2Instructions.Dup) : null, + call ? dupSetTemp(localData, generator, ret_temp) : null, index, + construct ? getTemp(localData, generator, ret_temp) : null, construct ? callargs : null, ins(construct ? AVM2Instructions.ConstructProp : delete ? AVM2Instructions.DeleteProperty : AVM2Instructions.GetProperty, indexPropIndex, construct ? callargs.size() : null), + call ? getTemp(localData, generator, ret_temp) : null, call ? callargs : null, call ? ins(AVM2Instructions.Call, callargs.size()) : null, - needsReturn ? null : ins(AVM2Instructions.Pop)); + needsReturn ? null : ins(AVM2Instructions.Pop), + (call || construct) ? killTemp(localData, generator, Arrays.asList(ret_temp)) : null); } } From 05e8f68ea96ba0f5df020a43d1af6e45432e1c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 5 Dec 2021 18:30:17 +0100 Subject: [PATCH 15/33] Added Show imported files on script import, able to cancel import --- CHANGELOG.md | 1 + .../src/com/jpexs/decompiler/flash/SWF.java | 2 +- .../parser/script/ActionScript3Parser.java | 59 ++++++++++--------- .../parser/script/ActionScript2Parser.java | 39 ++++++------ .../flash/exporters/PreviewExporter.java | 6 ++ .../flash/importers/AS2ScriptImporter.java | 26 +++++++- .../flash/importers/AS3ScriptImporter.java | 15 ++++- .../ScriptImporterProgressListener.java | 9 +++ .../flash/ActionScript2ParserTest.java | 5 +- src/com/jpexs/decompiler/flash/gui/Main.java | 5 ++ .../jpexs/decompiler/flash/gui/MainPanel.java | 57 +++++++++++++++--- .../flash/gui/locales/MainFrame.properties | 5 +- 12 files changed, 168 insertions(+), 61 deletions(-) create mode 100644 libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ScriptImporterProgressListener.java diff --git a/CHANGELOG.md b/CHANGELOG.md index cf192352a..5ef47edaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ All notable changes to this project will be documented in this file. ## [Unreleased] ### Added - Display object depth in flash panel +- Show imported files on script import, able to cancel import ### Fixed - [#1761] AS3 - try..finally inside another structure like if diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index c6fc16021..5b678d2fb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -1949,7 +1949,7 @@ public final class SWF implements SWFContainerItem, Timelined { } } - protected void informListeners(String event, Object data) { + public void informListeners(String event, Object data) { for (EventListener listener : listeners) { listener.handleEvent(event, data); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java index 85ba4c53b..8299153f0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java @@ -156,7 +156,7 @@ public class ActionScript3Parser { return uniqLast; } - private List commands(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, Stack loops, Map loopLabels, HashMap registerVars, boolean inFunction, boolean inMethod, int forinlevel, List variables) throws IOException, AVM2ParseException { + private List commands(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, Stack loops, Map loopLabels, HashMap registerVars, boolean inFunction, boolean inMethod, int forinlevel, List variables) throws IOException, AVM2ParseException, InterruptedException { List ret = new ArrayList<>(); if (debugMode) { System.out.println("commands:"); @@ -171,7 +171,7 @@ public class ActionScript3Parser { return ret; } - private GraphTargetItem type(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem type(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, List variables) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol s = lex(); if (s.type == SymbolType.MULTIPLY) { return new UnboundedTypeItem(); @@ -186,7 +186,7 @@ public class ActionScript3Parser { return t; } - private GraphTargetItem memberOrCall(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, GraphTargetItem newcmds, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem memberOrCall(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, GraphTargetItem newcmds, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { if (debugMode) { System.out.println("memberOrCall:"); } @@ -240,7 +240,7 @@ public class ActionScript3Parser { return ret; } - private GraphTargetItem applyType(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, GraphTargetItem obj, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem applyType(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, GraphTargetItem obj, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { GraphTargetItem ret = obj; ParsedSymbol s = lex(); if (s.type == SymbolType.TYPENAME) { @@ -272,7 +272,7 @@ public class ActionScript3Parser { return ret; } - private GraphTargetItem member(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, GraphTargetItem obj, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem member(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, GraphTargetItem obj, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { if (debugMode) { System.out.println("member:"); } @@ -339,7 +339,7 @@ public class ActionScript3Parser { return ret; } - private GraphTargetItem name(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, boolean typeOnly, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables, List importedClasses) throws IOException, AVM2ParseException { + private GraphTargetItem name(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, boolean typeOnly, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables, List importedClasses) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol s = lex(); DottedChain name = new DottedChain(new String[]{}, ""); String name2 = ""; @@ -447,13 +447,16 @@ public class ActionScript3Parser { } } - private ParsedSymbol expectedType(Object... type) throws IOException, AVM2ParseException { + private ParsedSymbol expectedType(Object... type) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol symb = lex(); expected(symb, lexer.yyline(), type); return symb; } - private ParsedSymbol lex() throws IOException, AVM2ParseException { + private ParsedSymbol lex() throws IOException, AVM2ParseException, InterruptedException { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } ParsedSymbol ret = lexer.lex(); if (debugMode) { System.out.println(ret); @@ -461,7 +464,7 @@ public class ActionScript3Parser { return ret; } - private List call(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException { + private List call(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { List ret = new ArrayList<>(); //expected(SymbolType.PARENT_OPEN); //MUST BE HANDLED BY CALLER ParsedSymbol s = lex(); @@ -476,12 +479,12 @@ public class ActionScript3Parser { return ret; } - private MethodAVM2Item method(List> allOpenedNamespaces, boolean outsidePackage, boolean isPrivate, List>> metadata, NamespaceItem pkg, boolean isInterface, String customAccess, Reference needsActivation, List importedClasses, boolean override, boolean isFinal, TypeItem thisType, List openedNamespaces, boolean isStatic, String functionName, boolean isMethod, List variables) throws IOException, AVM2ParseException { + private MethodAVM2Item method(List> allOpenedNamespaces, boolean outsidePackage, boolean isPrivate, List>> metadata, NamespaceItem pkg, boolean isInterface, String customAccess, Reference needsActivation, List importedClasses, boolean override, boolean isFinal, TypeItem thisType, List openedNamespaces, boolean isStatic, String functionName, boolean isMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { FunctionAVM2Item f = function(allOpenedNamespaces, metadata, pkg, isInterface, needsActivation, importedClasses, thisType, openedNamespaces, functionName, isMethod, variables); return new MethodAVM2Item(allOpenedNamespaces, outsidePackage, isPrivate, f.metadata, f.pkg, f.isInterface, customAccess, f.needsActivation, f.hasRest, f.line, override, isFinal, isStatic, functionName, f.paramTypes, f.paramNames, f.paramValues, f.body, f.subvariables, f.retType); } - private FunctionAVM2Item function(List> allOpenedNamespaces, List>> metadata, NamespaceItem pkg, boolean isInterface, Reference needsActivation, List importedClasses, TypeItem thisType, List openedNamespaces, String functionName, boolean isMethod, List variables) throws IOException, AVM2ParseException { + private FunctionAVM2Item function(List> allOpenedNamespaces, List>> metadata, NamespaceItem pkg, boolean isInterface, Reference needsActivation, List importedClasses, TypeItem thisType, List openedNamespaces, String functionName, boolean isMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { openedNamespaces = new ArrayList<>(openedNamespaces); //local copy allOpenedNamespaces.add(openedNamespaces); @@ -562,7 +565,7 @@ public class ActionScript3Parser { return new FunctionAVM2Item(metadata, pkg, isInterface, needsActivation2.getVal(), hasRest, line, functionName, paramTypes, paramNames, paramValues, body, subvariables, retType); } - private List>> parseMetadata() throws IOException, AVM2ParseException { + private List>> parseMetadata() throws IOException, AVM2ParseException, InterruptedException { List>> metadata = new ArrayList<>(); ParsedSymbol s = lex(); while (s.isType(SymbolType.BRACKET_OPEN)) { @@ -601,7 +604,7 @@ public class ActionScript3Parser { return metadata; } - private void classTraits(List> allOpenedNamespaces, boolean outsidePackage, List cinitVariables, Reference cinitNeedsActivation, List cinit, List importedClasses, List openedNamespaces, NamespaceItem pkg, String classNameStr, boolean isInterface, List traits, List iinitVariables, Reference iinitNeedsActivation, Reference iinit) throws AVM2ParseException, IOException, CompilationException { + private void classTraits(List> allOpenedNamespaces, boolean outsidePackage, List cinitVariables, Reference cinitNeedsActivation, List cinit, List importedClasses, List openedNamespaces, NamespaceItem pkg, String classNameStr, boolean isInterface, List traits, List iinitVariables, Reference iinitNeedsActivation, Reference iinit) throws AVM2ParseException, IOException, CompilationException, InterruptedException { NamespaceItem publicNs = new NamespaceItem("", Namespace.KIND_PACKAGE); NamespaceItem privateNs = new NamespaceItem(pkg.name.toRawString() + ":" + classNameStr, Namespace.KIND_PRIVATE); @@ -869,14 +872,14 @@ public class ActionScript3Parser { } } - private void scriptTraits(List> allOpenedNamespaces, int scriptIndex, String scriptName, List traits) throws AVM2ParseException, IOException, CompilationException { + private void scriptTraits(List> allOpenedNamespaces, int scriptIndex, String scriptName, List traits) throws AVM2ParseException, IOException, CompilationException, InterruptedException { while (scriptTraitsBlock(allOpenedNamespaces, scriptIndex, scriptName, traits)) { //empty } } - private boolean scriptTraitsBlock(List> allOpenedNamespaces, int scriptIndex, String scriptName, List traits) throws AVM2ParseException, IOException, CompilationException { + private boolean scriptTraitsBlock(List> allOpenedNamespaces, int scriptIndex, String scriptName, List traits) throws AVM2ParseException, IOException, CompilationException, InterruptedException { ParsedSymbol s; boolean inPackage = false; s = lex(); @@ -1220,7 +1223,7 @@ public class ActionScript3Parser { } } - private List xmltag(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference usesVars, List openedTags, Reference closedVarTags, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException { + private List xmltag(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference usesVars, List openedTags, Reference closedVarTags, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol s; List rets = new ArrayList<>(); //GraphTargetItem ret = null; @@ -1349,7 +1352,7 @@ public class ActionScript3Parser { return rets; } - private GraphTargetItem xml(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem xml(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { List openedTags = new ArrayList<>(); int closedVarTags = 0; @@ -1360,7 +1363,7 @@ public class ActionScript3Parser { return ret; } - private GraphTargetItem command(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, Stack loops, Map loopLabels, HashMap registerVars, boolean inFunction, boolean inMethod, int forinlevel, boolean mustBeCommand, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem command(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, Stack loops, Map loopLabels, HashMap registerVars, boolean inFunction, boolean inMethod, int forinlevel, boolean mustBeCommand, List variables) throws IOException, AVM2ParseException, InterruptedException { LexBufferer buf = new LexBufferer(); lexer.addListener(buf); GraphTargetItem ret = null; @@ -1837,7 +1840,7 @@ public class ActionScript3Parser { } - private GraphTargetItem expression(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables, boolean allowComma) throws IOException, AVM2ParseException { + private GraphTargetItem expression(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables, boolean allowComma) throws IOException, AVM2ParseException, InterruptedException { return expression(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, false, registerVars, inFunction, inMethod, allowRemainder, variables, allowComma); } @@ -1871,7 +1874,7 @@ public class ActionScript3Parser { return (item instanceof NameAVM2Item); } - private int brackets(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, List ret, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException { + private int brackets(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, List ret, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol s = lex(); int arrCnt = 0; if (s.type == SymbolType.BRACKET_OPEN) { @@ -1895,7 +1898,7 @@ public class ActionScript3Parser { return arrCnt; } - private GraphTargetItem expression(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, boolean allowEmpty, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables, boolean allowComma) throws IOException, AVM2ParseException { + private GraphTargetItem expression(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, boolean allowEmpty, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables, boolean allowComma) throws IOException, AVM2ParseException, InterruptedException { List commaItems = new ArrayList<>(); ParsedSymbol symb; @@ -1955,7 +1958,7 @@ public class ActionScript3Parser { } } - private ParsedSymbol peekExprToken() throws IOException, AVM2ParseException { + private ParsedSymbol peekExprToken() throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol lookahead = lex(); xmlToLowerThanFix(lookahead); regexpToDivideFix(lookahead); @@ -1964,7 +1967,7 @@ public class ActionScript3Parser { return lookahead; } - private GraphTargetItem expression1(List> allOpenedNamespaces, GraphTargetItem lhs, int min_precedence, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, boolean allowEmpty, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem expression1(List> allOpenedNamespaces, GraphTargetItem lhs, int min_precedence, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, boolean allowEmpty, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables) throws IOException, AVM2ParseException, InterruptedException { if (debugMode) { System.out.println("expression1:"); } @@ -2177,7 +2180,7 @@ public class ActionScript3Parser { return lhs; } - private GraphTargetItem expressionPrimary(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, boolean allowEmpty, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables) throws IOException, AVM2ParseException { + private GraphTargetItem expressionPrimary(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, boolean allowEmpty, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder, List variables) throws IOException, AVM2ParseException, InterruptedException { if (debugMode) { System.out.println("primary:"); } @@ -2472,7 +2475,7 @@ public class ActionScript3Parser { private List constantPool; - private List parseImportsUsages(List openedNamespaces) throws IOException, AVM2ParseException { + private List parseImportsUsages(List openedNamespaces) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol s; List importedClasses = new ArrayList<>(); @@ -2519,7 +2522,7 @@ public class ActionScript3Parser { return importedClasses; } - private List parseScript(List> allOpenedNamespaces, int scriptIndex, String fileName) throws IOException, AVM2ParseException, CompilationException { + private List parseScript(List> allOpenedNamespaces, int scriptIndex, String fileName) throws IOException, AVM2ParseException, CompilationException, InterruptedException { //int scriptPrivateNs; if (fileName.contains("/")) { @@ -2533,7 +2536,7 @@ public class ActionScript3Parser { return items; } - public List scriptTraitsFromString(List> allOpenedNamespaces, String str, String fileName, int scriptIndex) throws AVM2ParseException, IOException, CompilationException { + public List scriptTraitsFromString(List> allOpenedNamespaces, String str, String fileName, int scriptIndex) throws AVM2ParseException, IOException, CompilationException, InterruptedException { lexer = new ActionScriptLexer(str); List ret = parseScript(allOpenedNamespaces, scriptIndex, fileName); @@ -2550,7 +2553,7 @@ public class ActionScript3Parser { abcIndex.getSelectedAbc().script_info.add(gen.generateScriptInfo(allOpenedNamespaces, localData, items, classPos)); } - public void addScript(String s, String fileName, int classPos, int scriptIndex) throws AVM2ParseException, IOException, CompilationException { + public void addScript(String s, String fileName, int classPos, int scriptIndex) throws AVM2ParseException, IOException, CompilationException, InterruptedException { List> allOpenedNamespaces = new ArrayList<>(); List traits = scriptTraitsFromString(allOpenedNamespaces, s, fileName, scriptIndex); addScriptFromTree(allOpenedNamespaces, traits, classPos); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java index dfe7b1577..b83249bcf 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java @@ -263,7 +263,7 @@ public class ActionScript2Parser { return "" + uniqLast; } - private List commands(boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, List variables, List functions, Reference hasEval) throws IOException, ActionParseException { + private List commands(boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, List variables, List functions, Reference hasEval) throws IOException, ActionParseException, InterruptedException { List ret = new ArrayList<>(); if (debugMode) { System.out.println("commands:"); @@ -278,7 +278,7 @@ public class ActionScript2Parser { return ret; } - private GraphTargetItem type(List variables) throws IOException, ActionParseException { + private GraphTargetItem type(List variables) throws IOException, ActionParseException, InterruptedException { GraphTargetItem ret; ParsedSymbol s = lex(); @@ -329,13 +329,16 @@ public class ActionScript2Parser { } } - private ParsedSymbol expectedType(Object... type) throws IOException, ActionParseException { + private ParsedSymbol expectedType(Object... type) throws IOException, ActionParseException, InterruptedException { ParsedSymbol symb = lex(); expected(symb, lexer.yyline(), type); return symb; } - private ParsedSymbol lex() throws IOException, ActionParseException { + private ParsedSymbol lex() throws IOException, ActionParseException, InterruptedException { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } ParsedSymbol ret = lexer.lex(); if (debugMode) { System.out.println(ret); @@ -343,7 +346,7 @@ public class ActionScript2Parser { return ret; } - private List call(boolean inFunction, boolean inMethod, boolean inTellTarget, List variables, List functions, Reference hasEval) throws IOException, ActionParseException { + private List call(boolean inFunction, boolean inMethod, boolean inTellTarget, List variables, List functions, Reference hasEval) throws IOException, ActionParseException, InterruptedException { List ret = new ArrayList<>(); //expected(SymbolType.PARENT_OPEN); //MUST BE HANDLED BY CALLER ParsedSymbol s = lex(); @@ -358,7 +361,7 @@ public class ActionScript2Parser { return ret; } - private FunctionActionItem function(boolean withBody, String functionName, boolean isMethod, List variables, List functions, boolean inTellTarget, Reference hasEval) throws IOException, ActionParseException { + private FunctionActionItem function(boolean withBody, String functionName, boolean isMethod, List variables, List functions, boolean inTellTarget, Reference hasEval) throws IOException, ActionParseException, InterruptedException { GraphTargetItem ret = null; ParsedSymbol s; expectedType(SymbolType.PARENT_OPEN); @@ -401,7 +404,7 @@ public class ActionScript2Parser { return retf; } - private GraphTargetItem traits(boolean isInterface, GraphTargetItem nameStr, GraphTargetItem extendsStr, List implementsStr, List variables, List functions, boolean inTellTarget, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem traits(boolean isInterface, GraphTargetItem nameStr, GraphTargetItem extendsStr, List implementsStr, List variables, List functions, boolean inTellTarget, Reference hasEval) throws IOException, ActionParseException, InterruptedException { GraphTargetItem ret = null; /*for (int i = 0; i < nameStr.size() - 1; i++) { @@ -543,7 +546,7 @@ public class ActionScript2Parser { } } - private GraphTargetItem expressionCommands(ParsedSymbol s, boolean inFunction, boolean inMethod, boolean inTellTarget, int forinlevel, List variables, List functions, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem expressionCommands(ParsedSymbol s, boolean inFunction, boolean inMethod, boolean inTellTarget, int forinlevel, List variables, List functions, Reference hasEval) throws IOException, ActionParseException, InterruptedException { if (debugMode) { System.out.println("expressionCommands:"); } @@ -950,7 +953,7 @@ public class ActionScript2Parser { } } - private GraphTargetItem command(boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, boolean mustBeCommand, List variables, List functions, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem command(boolean inFunction, boolean inMethod, int forinlevel, boolean inTellTarget, boolean mustBeCommand, List variables, List functions, Reference hasEval) throws IOException, ActionParseException, InterruptedException { LexBufferer buf = new LexBufferer(); lexer.addListener(buf); GraphTargetItem ret = null; @@ -1375,7 +1378,7 @@ public class ActionScript2Parser { } - private GraphTargetItem expression(boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List variables, List functions, boolean allowComma, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem expression(boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List variables, List functions, boolean allowComma, Reference hasEval) throws IOException, ActionParseException, InterruptedException { if (debugMode) { System.out.println("expression:"); } @@ -1402,7 +1405,7 @@ public class ActionScript2Parser { return new CommaExpressionItem(null, null, commaItems); } - private ParsedSymbol peekLex() throws IOException, ActionParseException { + private ParsedSymbol peekLex() throws IOException, ActionParseException, InterruptedException { ParsedSymbol lookahead = lex(); lexer.pushback(lookahead); return lookahead; @@ -1435,7 +1438,7 @@ public class ActionScript2Parser { return s.type.getPrecedence(); } - private GraphTargetItem expression1(GraphTargetItem lhs, int min_precedence, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List variables, List functions, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem expression1(GraphTargetItem lhs, int min_precedence, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List variables, List functions, Reference hasEval) throws IOException, ActionParseException, InterruptedException { ParsedSymbol op; GraphTargetItem rhs; GraphTargetItem mhs = null; @@ -1663,7 +1666,7 @@ public class ActionScript2Parser { return (item instanceof VariableActionItem); } - private int brackets(List ret, boolean inFunction, boolean inMethod, boolean inTellTarget, List variables, List functions, Reference hasEval) throws IOException, ActionParseException { + private int brackets(List ret, boolean inFunction, boolean inMethod, boolean inTellTarget, List variables, List functions, Reference hasEval) throws IOException, ActionParseException, InterruptedException { ParsedSymbol s = lex(); int arrCnt = 0; if (s.type == SymbolType.BRACKET_OPEN) { @@ -1687,7 +1690,7 @@ public class ActionScript2Parser { return arrCnt; } - private GraphTargetItem handleVariable(ParsedSymbol s, GraphTargetItem ret, List variables, Reference allowMemberOrCall, boolean inFunction, boolean inMethod, boolean inTellTarget, List functions, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem handleVariable(ParsedSymbol s, GraphTargetItem ret, List variables, Reference allowMemberOrCall, boolean inFunction, boolean inMethod, boolean inTellTarget, List functions, Reference hasEval) throws IOException, ActionParseException, InterruptedException { if (s.value.equals("not")) { ret = new NotItem(null, null, expressionPrimary(false, inFunction, inMethod, inTellTarget, false, variables, functions, true, hasEval)); } else { @@ -1710,7 +1713,7 @@ public class ActionScript2Parser { return ret; } - private GraphTargetItem expressionPrimary(boolean allowEmpty, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List variables, List functions, boolean allowCall, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem expressionPrimary(boolean allowEmpty, boolean inFunction, boolean inMethod, boolean inTellTarget, boolean allowRemainder, List variables, List functions, boolean allowCall, Reference hasEval) throws IOException, ActionParseException, InterruptedException { if (debugMode) { System.out.println("primary:"); } @@ -2008,7 +2011,7 @@ public class ActionScript2Parser { return false; } - private GraphTargetItem memberOrCall(GraphTargetItem ret, boolean inFunction, boolean inMethod, boolean inTellTarget, List variables, List functions, boolean allowCall, Reference hasEval) throws IOException, ActionParseException { + private GraphTargetItem memberOrCall(GraphTargetItem ret, boolean inFunction, boolean inMethod, boolean inTellTarget, List variables, List functions, boolean allowCall, Reference hasEval) throws IOException, ActionParseException, InterruptedException { ParsedSymbol op = lex(); while (op.isType(SymbolType.PARENT_OPEN, SymbolType.BRACKET_OPEN, SymbolType.DOT)) { if (op.type == SymbolType.PARENT_OPEN) { @@ -2100,7 +2103,7 @@ public class ActionScript2Parser { private List constantPool; - public List treeFromString(String str, List constantPool) throws ActionParseException, IOException { + public List treeFromString(String str, List constantPool) throws ActionParseException, IOException, InterruptedException { List retTree = new ArrayList<>(); this.constantPool = constantPool; lexer = new ActionScriptLexer(new StringReader(str)); @@ -2391,7 +2394,7 @@ public class ActionScript2Parser { return ret; } - public List actionsFromString(String s) throws ActionParseException, IOException, CompilationException { + public List actionsFromString(String s) throws ActionParseException, IOException, CompilationException, InterruptedException { try { List constantPool = new ArrayList<>(); List tree = treeFromString(s, constantPool); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java index 73eb8604c..5bf29bebb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java @@ -179,6 +179,8 @@ public class PreviewExporter { Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); } catch (ActionParseException ex) { Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); + } catch (InterruptedException ex) { + Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); } overVideoButton.actions.add(bca); @@ -205,6 +207,8 @@ public class PreviewExporter { Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); } catch (ActionParseException ex) { Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); + } catch (InterruptedException ex) { + Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); } progressBarButton.actions.add(bca); @@ -238,6 +242,8 @@ public class PreviewExporter { Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); } catch (ActionParseException ex) { Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); + } catch (InterruptedException ex) { + Logger.getLogger(PreviewExporter.class.getName()).log(Level.SEVERE, null, ex); } doAction.writeTag(sos2); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS2ScriptImporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS2ScriptImporter.java index da6974fc8..18f549a7d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS2ScriptImporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS2ScriptImporter.java @@ -41,7 +41,10 @@ public class AS2ScriptImporter { private static final Logger logger = Logger.getLogger(AS2ScriptImporter.class.getName()); - public int importScripts(String scriptsFolder, Map asms) { + public int importScripts(String scriptsFolder, Map asms) throws InterruptedException { + return importScripts(scriptsFolder, asms, null); + } + public int importScripts(String scriptsFolder, Map asms, ScriptImporterProgressListener listener) throws InterruptedException { if (!scriptsFolder.endsWith(File.separator)) { scriptsFolder += File.separator; } @@ -50,6 +53,9 @@ public class AS2ScriptImporter { int importCount = 0; for (String key : asms.keySet()) { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } ASMSource asm = asms.get(key); String currentOutDir = scriptsFolder + key + File.separator; currentOutDir = new File(currentOutDir).getParentFile().toString() + File.separator; @@ -71,6 +77,7 @@ public class AS2ScriptImporter { String fileName = Path.combine(currentOutDir, name) + ".as"; if (new File(fileName).exists()) { + asm.getSwf().informListeners("importing_as", fileName); String txt = Helper.readTextFile(fileName); ActionScript2Parser par = new ActionScript2Parser(asm.getSwf(), asm); @@ -82,16 +89,22 @@ public class AS2ScriptImporter { logger.log(Level.SEVERE, "%error% on line %line%, file: %file%".replace("%error%", ex.text).replace("%line%", Long.toString(ex.line)).replace("%file%", fileName), ex); } catch (IOException ex) { logger.log(Level.SEVERE, "error during script import, file: %file%".replace("%file%", fileName), ex); + } catch (InterruptedException ex) { + return importCount; } catch (Exception ex) { logger.log(Level.SEVERE, "error during script import, file: %file%".replace("%file%", fileName), ex); } asm.setModified(); importCount++; + if (listener != null) { + listener.scriptImported(); + } } fileName = Path.combine(currentOutDir, name) + ".pcode"; if (new File(fileName).exists()) { + asm.getSwf().informListeners("importing_as", fileName); String txt = Helper.readTextFile(fileName); try { @@ -104,19 +117,27 @@ public class AS2ScriptImporter { asm.setModified(); importCount++; + if (listener != null) { + listener.scriptImported(); + } } fileName = Path.combine(currentOutDir, name) + ".hex"; if (new File(fileName).exists()) { + asm.getSwf().informListeners("importing_as", fileName); String txt = Helper.readTextFile(fileName); asm.setActionBytes(Helper.getBytesFromHexaText(txt)); asm.setModified(); importCount++; + if (listener != null) { + listener.scriptImported(); + } } fileName = Path.combine(currentOutDir, name) + ".txt"; if (new File(fileName).exists()) { + asm.getSwf().informListeners("importing_as", fileName); String txt = Helper.readTextFile(fileName); try { @@ -126,6 +147,9 @@ public class AS2ScriptImporter { } asm.setModified(); importCount++; + if (listener != null) { + listener.scriptImported(); + } } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS3ScriptImporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS3ScriptImporter.java index 21afe4e50..512ccf581 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS3ScriptImporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/AS3ScriptImporter.java @@ -34,16 +34,24 @@ public class AS3ScriptImporter { private static final Logger logger = Logger.getLogger(AS3ScriptImporter.class.getName()); - public int importScripts(As3ScriptReplacerInterface scriptReplacer, String scriptsFolder, List packs) { + public int importScripts(As3ScriptReplacerInterface scriptReplacer, String scriptsFolder, List packs) throws InterruptedException { + return importScripts(scriptReplacer, scriptsFolder, packs, null); + } + + public int importScripts(As3ScriptReplacerInterface scriptReplacer, String scriptsFolder, List packs, ScriptImporterProgressListener listener) throws InterruptedException { if (!scriptsFolder.endsWith(File.separator)) { scriptsFolder += File.separator; } int importCount = 0; for (ScriptPack pack : packs) { + if (Thread.currentThread().isInterrupted()) { + return importCount; + } try { File file = pack.getExportFile(scriptsFolder, new ScriptExportSettings(ScriptExportMode.AS, false, false)); if (file.exists()) { + pack.getSwf().informListeners("importing_as", file.getAbsolutePath()); String fileName = file.getAbsolutePath(); String txt = Helper.readTextFile(fileName); @@ -54,10 +62,13 @@ public class AS3ScriptImporter { logger.log(Level.SEVERE, "%error% on line %line%, column %col%, file: %file%".replace("%error%", item.getMessage()).replace("%line%", Long.toString(item.getLine())).replace("%file%", fileName).replace("%col%", "" + item.getCol())); } } catch (InterruptedException ex) { - logger.log(Level.SEVERE, "error during script import, file: %file%".replace("%file%", fileName), ex); + return importCount; } importCount++; + if (listener != null) { + listener.scriptImported(); + } } } catch (IOException ex) { logger.log(Level.SEVERE, null, ex); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ScriptImporterProgressListener.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ScriptImporterProgressListener.java new file mode 100644 index 000000000..efa722ad2 --- /dev/null +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/ScriptImporterProgressListener.java @@ -0,0 +1,9 @@ +package com.jpexs.decompiler.flash.importers; + +/** + * + * @author JPEXS + */ +public interface ScriptImporterProgressListener { + public void scriptImported(); +} diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2ParserTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2ParserTest.java index cf25cb45d..de9347606 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2ParserTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2ParserTest.java @@ -16,12 +16,15 @@ */ package com.jpexs.decompiler.flash; +import com.jpexs.decompiler.flash.action.parser.ActionParseException; import com.jpexs.decompiler.flash.action.parser.script.ActionScript2Parser; import com.jpexs.decompiler.flash.action.swf4.ActionPush; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.tags.DoActionTag; import com.jpexs.decompiler.graph.CompilationException; import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; import static org.testng.Assert.fail; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -44,7 +47,7 @@ public class ActionScript2ParserTest extends ActionScript2TestBase { swf.version = SWF.DEFAULT_VERSION; ActionScript2Parser par = new ActionScript2Parser(swf, new DoActionTag(swf)); par.actionsFromString(script); - } catch (IOException | CompilationException | ParseException ex) { + } catch (IOException | CompilationException | ParseException | InterruptedException ex) { fail("Unable to parse: " + script, ex); } } diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 419c13d3f..19a604dbb 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -196,6 +196,8 @@ public class Main { public static SearchResultsStorage searchResultsStorage = new SearchResultsStorage(); + public static CancellableWorker importWorker = null; + //This method makes file watcher to shut up during our own file saving public static void startSaving(File savedFile) { savedFiles.add(savedFile); @@ -1046,6 +1048,9 @@ public class Main { if (event.equals("rename")) { startWork(AppStrings.translate("work.renaming") + "..." + (String) data, null); } + if (event.equals("importing_as")) { + startWork(AppStrings.translate("work.importing_as") + "..." + (String) data, importWorker); + } } }); } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 21ed803ff..227357916 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -101,6 +101,7 @@ import com.jpexs.decompiler.flash.importers.As3ScriptReplacerInterface; import com.jpexs.decompiler.flash.importers.BinaryDataImporter; import com.jpexs.decompiler.flash.importers.FFDecAs3ScriptReplacer; import com.jpexs.decompiler.flash.importers.ImageImporter; +import com.jpexs.decompiler.flash.importers.ScriptImporterProgressListener; import com.jpexs.decompiler.flash.importers.ShapeImporter; import com.jpexs.decompiler.flash.importers.SwfXmlImporter; import com.jpexs.decompiler.flash.importers.SymbolClassImporter; @@ -2500,18 +2501,56 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { String selFile = Helper.fixDialogFile(chooser.getSelectedFile()).getAbsolutePath(); String scriptsFolder = Path.combine(selFile, ScriptExportSettings.EXPORT_FOLDER_NAME); + final long timeBefore = System.currentTimeMillis(); + new CancellableWorker() { + private int countAs2 = 0; + private int countAs3 = 0; + @Override + public Void doInBackground() throws Exception { + new AS2ScriptImporter().importScripts(scriptsFolder, swf.getASMs(true), new ScriptImporterProgressListener() { + @Override + public void scriptImported() { + countAs2++; + } + }); + new AS3ScriptImporter().importScripts(as3ScriptReplacer, scriptsFolder, swf.getAS3Packs(), new ScriptImporterProgressListener() { + @Override + public void scriptImported() { + countAs3++; + } + } + ); - int countAs2 = new AS2ScriptImporter().importScripts(scriptsFolder, swf.getASMs(true)); - int countAs3 = new AS3ScriptImporter().importScripts(as3ScriptReplacer, scriptsFolder, swf.getAS3Packs()); + if (countAs3 > 0) { + updateClassesList(); + } + return null; + } - if (countAs3 > 0) { - updateClassesList(); - } + @Override + protected void onStart() { + Main.importWorker = this; + Main.startWork(translate("work.importing_as") + "...", this); + } + + @Override + protected void done() { + Main.stopWork(); + long timeAfter = System.currentTimeMillis(); + final long timeMs = timeAfter - timeBefore; + + Main.importWorker = null; + View.execInEventDispatch(() -> { + setStatus(translate("importing_as.finishedin").replace("%time%", Helper.formatTimeSec(timeMs))); + + ViewMessages.showMessageDialog(MainPanel.this, translate("import.script.result").replace("%count%", Integer.toString(countAs2 + countAs3))); + if (countAs2 != 0 || countAs3 != 0) { + reload(true); + } + }); + } + }.execute(); - ViewMessages.showMessageDialog(this, translate("import.script.result").replace("%count%", Integer.toString(countAs2 + countAs3))); - if (countAs2 != 0 || countAs3 != 0) { - reload(true); - } } } diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index ca9b3de5d..81fd076b8 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -848,4 +848,7 @@ message.info.importXml = For XML importing, you need a XML file in special forma tagInfo.dependentFrames = Dependent Frames -imagePanel.depth = depth: \ No newline at end of file +imagePanel.depth = depth: + +work.importing_as = Importing script +importing_as.finishedin = Imported in %time% \ No newline at end of file From 97760b766d0852969280a469d6065425a67a94c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 5 Dec 2021 18:31:16 +0100 Subject: [PATCH 16/33] czech trans --- .../decompiler/flash/gui/locales/MainFrame_cs.properties | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties index f5e5ad262..eff01504e 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties @@ -824,4 +824,7 @@ message.info.importXml = Pro XML import je pot\u0159eba XML soubor ve speci\u00e tagInfo.dependentFrames = Z\u00e1visl\u00e9 sn\u00edmky -imagePanel.depth = hloubka: \ No newline at end of file +imagePanel.depth = hloubka: + +work.importing_as = Importuji skript +importing_as.finishedin = Importov\u00e1no za %time% \ No newline at end of file From 3dd2885358aa0adf5697457f7eb1eb5b1208653c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 5 Dec 2021 19:09:53 +0100 Subject: [PATCH 17/33] Added #270 AS3 show progress on deofuscating p-code --- CHANGELOG.md | 3 ++- .../flash/DeobfuscationListener.java | 9 +++++++++ .../src/com/jpexs/decompiler/flash/SWF.java | 18 +++++++++++++++--- .../com/jpexs/decompiler/flash/abc/ABC.java | 11 +++++++++++ src/com/jpexs/decompiler/flash/gui/Main.java | 4 ++++ .../jpexs/decompiler/flash/gui/MainPanel.java | 2 ++ .../flash/gui/locales/MainFrame.properties | 3 ++- .../flash/gui/locales/MainFrame_cs.properties | 3 ++- .../flash/gui/tagtree/TagTreeContextMenu.java | 2 +- 9 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/DeobfuscationListener.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ef47edaf..7c02f9e69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All notable changes to this project will be documented in this file. ### Added - Display object depth in flash panel - Show imported files on script import, able to cancel import +- [#270] AS3 show progress on deofuscating p-code ### Fixed - [#1761] AS3 - try..finally inside another structure like if @@ -2330,6 +2331,7 @@ All notable changes to this project will be documented in this file. [alpha 9]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha8...alpha9 [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 +[#270]: https://www.free-decompiler.com/flash/issues/270 [#1761]: https://www.free-decompiler.com/flash/issues/1761 [#1762]: https://www.free-decompiler.com/flash/issues/1762 [#1763]: https://www.free-decompiler.com/flash/issues/1763 @@ -2365,7 +2367,6 @@ All notable changes to this project will be documented in this file. [#1488]: https://www.free-decompiler.com/flash/issues/1488 [#1584]: https://www.free-decompiler.com/flash/issues/1584 [#1572]: https://www.free-decompiler.com/flash/issues/1572 -[#270]: https://www.free-decompiler.com/flash/issues/270 [#1645]: https://www.free-decompiler.com/flash/issues/1645 [#1639]: https://www.free-decompiler.com/flash/issues/1639 [#1371]: https://www.free-decompiler.com/flash/issues/1371 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/DeobfuscationListener.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/DeobfuscationListener.java new file mode 100644 index 000000000..3abed2bc1 --- /dev/null +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/DeobfuscationListener.java @@ -0,0 +1,9 @@ +package com.jpexs.decompiler.flash; + +/** + * + * @author JPEXS + */ +public interface DeobfuscationListener { + public void itemDeobfuscated(); +} diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index 5b678d2fb..2236c6e5f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -168,6 +168,7 @@ import com.jpexs.helpers.Helper; import com.jpexs.helpers.ImmediateFuture; import com.jpexs.helpers.NulStream; import com.jpexs.helpers.ProgressListener; +import com.jpexs.helpers.Reference; import com.jpexs.helpers.SerializableImage; import com.jpexs.helpers.utf8.Utf8Helper; import java.awt.AlphaComposite; @@ -3353,13 +3354,24 @@ public final class SWF implements SWFContainerItem, Timelined { public void deobfuscate(DeobfuscationLevel level) throws InterruptedException { List atags = getAbcList(); + int apos = 0; for (ABCContainerTag tag : atags) { + apos++; + final int fpos = apos; + Reference numDeoScripts = new Reference<>(0); + DeobfuscationListener deoListener = new DeobfuscationListener() { + @Override + public void itemDeobfuscated() { + numDeoScripts.setVal(numDeoScripts.getVal() + 1); + informListeners("deobfuscate_pcode", "abc " + fpos + "/" + atags.size() + " script " + numDeoScripts.getVal() + "/" + tag.getABC().script_info.size()); + } + }; if (level == DeobfuscationLevel.LEVEL_REMOVE_DEAD_CODE) { - tag.getABC().removeDeadCode(); + tag.getABC().removeDeadCode(deoListener); } else if (level == DeobfuscationLevel.LEVEL_REMOVE_TRAPS) { - tag.getABC().removeTraps(); + tag.getABC().removeTraps(deoListener); } else if (level == DeobfuscationLevel.LEVEL_RESTORE_CONTROL_FLOW) { - tag.getABC().removeTraps(); + tag.getABC().removeTraps(deoListener); } ((Tag) tag).setModified(true); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABC.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABC.java index 93fe40a57..e6b9b9f4e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABC.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ABC.java @@ -16,6 +16,7 @@ */ package com.jpexs.decompiler.flash.abc; +import com.jpexs.decompiler.flash.DeobfuscationListener; import com.jpexs.decompiler.flash.EndOfStreamException; import com.jpexs.decompiler.flash.EventListener; import com.jpexs.decompiler.flash.SWF; @@ -232,14 +233,24 @@ public class ABC { } public int removeTraps() throws InterruptedException { + return removeTraps(null); + } + public int removeTraps(DeobfuscationListener listener) throws InterruptedException { int rem = 0; for (int s = 0; s < script_info.size(); s++) { rem += script_info.get(s).removeTraps(s, this, ""); + if (listener != null) { + listener.itemDeobfuscated(); + } } return rem; } public int removeDeadCode() throws InterruptedException { + return removeDeadCode(null); + } + + public int removeDeadCode(DeobfuscationListener listener) throws InterruptedException { int rem = 0; for (MethodBody body : bodies) { rem += body.removeDeadCode(constants, null/*FIXME*/, method_info.get(body.method_info)); diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 19a604dbb..5c183e717 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -197,6 +197,7 @@ public class Main { public static SearchResultsStorage searchResultsStorage = new SearchResultsStorage(); public static CancellableWorker importWorker = null; + public static CancellableWorker deobfuscatePCodeWorker = null; //This method makes file watcher to shut up during our own file saving public static void startSaving(File savedFile) { @@ -1045,6 +1046,9 @@ public class Main { if (event.equals("deobfuscate")) { startWork(AppStrings.translate("work.deobfuscating") + "..." + (String) data, null); } + if (event.equals("deobfuscate_pcode")) { + startWork(AppStrings.translate("work.deobfuscating_pcode") + "..." + (String) data, deobfuscatePCodeWorker); + } if (event.equals("rename")) { startWork(AppStrings.translate("work.renaming") + "..." + (String) data, null); } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 227357916..c6038ae9a 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -2804,11 +2804,13 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se @Override protected void onStart() { + Main.deobfuscatePCodeWorker = this; Main.startWork(translate("work.deobfuscating") + "...", this); } @Override protected void done() { + Main.deobfuscatePCodeWorker = null; View.execInEventDispatch(() -> { Main.stopWork(); ViewMessages.showMessageDialog(MainPanel.this, translate("work.deobfuscating.complete")); diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 81fd076b8..fc83cbfea 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -851,4 +851,5 @@ tagInfo.dependentFrames = Dependent Frames imagePanel.depth = depth: work.importing_as = Importing script -importing_as.finishedin = Imported in %time% \ No newline at end of file +importing_as.finishedin = Imported in %time% +work.deobfuscating_pcode = Deobfuscating pcode \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties index eff01504e..0c8e86050 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties @@ -827,4 +827,5 @@ tagInfo.dependentFrames = Z\u00e1visl\u00e9 sn\u00edmky imagePanel.depth = hloubka: work.importing_as = Importuji skript -importing_as.finishedin = Importov\u00e1no za %time% \ No newline at end of file +importing_as.finishedin = Importov\u00e1no za %time% +work.deobfuscating_pcode = Deobfuskov\u00e1n\u00ed p-k\u00f3du \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java index 3a2807b95..c5c31be45 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java @@ -1241,7 +1241,7 @@ public class TagTreeContextMenu extends JPopupMenu { try { List actions = parser.actionsFromString("class " + dc.toPrintableString(false) + "{}"); doInit.setActions(actions); - } catch (ActionParseException | IOException | CompilationException ex) { + } catch (ActionParseException | IOException | CompilationException | InterruptedException ex) { //ignore } From 3a3cac1fe99bdcd2e4007f4009686dbd7b05b6e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 5 Dec 2021 19:54:41 +0100 Subject: [PATCH 18/33] Added #1718 Show progress on injecting debug info / SWD generation (before Debugging) --- CHANGELOG.md | 2 + .../src/com/jpexs/decompiler/flash/SWF.java | 34 +++++++++--- src/com/jpexs/decompiler/flash/gui/Main.java | 53 +++++++++++++++++-- .../flash/gui/locales/MainFrame.properties | 5 +- .../flash/gui/locales/MainFrame_cs.properties | 5 +- 5 files changed, 85 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c02f9e69..201b554d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. - Display object depth in flash panel - Show imported files on script import, able to cancel import - [#270] AS3 show progress on deofuscating p-code +- [#1718] Show progress on injecting debug info / SWD generation (before Debugging) ### Fixed - [#1761] AS3 - try..finally inside another structure like if @@ -2332,6 +2333,7 @@ All notable changes to this project will be documented in this file. [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 [#270]: https://www.free-decompiler.com/flash/issues/270 +[#1718]: https://www.free-decompiler.com/flash/issues/1718 [#1761]: https://www.free-decompiler.com/flash/issues/1761 [#1762]: https://www.free-decompiler.com/flash/issues/1762 [#1763]: https://www.free-decompiler.com/flash/issues/1763 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index 2236c6e5f..419b8b799 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -3386,14 +3386,14 @@ public final class SWF implements SWFContainerItem, Timelined { * @param decompileDir Directory to virtual decompile (will affect * debugfile) */ - public void enableDebugging(boolean injectAS3Code, File decompileDir) { + public void enableDebugging(boolean injectAS3Code, File decompileDir) throws InterruptedException { enableDebugging(injectAS3Code, decompileDir, false); } /** * Enables debugging. Adds tags to enable debugging. */ - public void enableDebugging() { + public void enableDebugging() throws InterruptedException { enableDebugging(false, null, false); } @@ -3406,7 +3406,7 @@ public final class SWF implements SWFContainerItem, Timelined { * debugfile) * @param telemetry Enable telemetry info? */ - public void enableDebugging(boolean injectAS3Code, File decompileDir, boolean telemetry) { + public void enableDebugging(boolean injectAS3Code, File decompileDir, boolean telemetry) throws InterruptedException { enableDebugging(injectAS3Code, decompileDir, telemetry, false); } @@ -3414,9 +3414,15 @@ public final class SWF implements SWFContainerItem, Timelined { * Injects debugline and debugfile instructions to AS3 P-code (lines of * P-code) */ - public void injectAS3PcodeDebugInfo() { + public void injectAS3PcodeDebugInfo() throws InterruptedException { List packs = getAS3Packs(); + int i = 0; for (ScriptPack s : packs) { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } + i++; + informListeners("inject_debuginfo", "" + i + "/" + packs.size() + ": " + s.getPath()); int abcIndex = s.allABCs.indexOf(s.abc); if (s.isSimple) { s.injectPCodeDebugInfo(abcIndex); @@ -3429,9 +3435,15 @@ public final class SWF implements SWFContainerItem, Timelined { * * @param decompileDir Directory to set file information paths */ - public void injectAS3DebugInfo(File decompileDir) { + public void injectAS3DebugInfo(File decompileDir) throws InterruptedException { List packs = getAS3Packs(); + int i = 0; for (ScriptPack s : packs) { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } + i++; + informListeners("inject_debuginfo", "" + i + "/" + packs.size() + ": " + s.getPath()); if (s.isSimple) { s.injectDebugInfo(decompileDir); } @@ -3448,7 +3460,7 @@ public final class SWF implements SWFContainerItem, Timelined { * @param telemetry Enable telemetry info? * @param pcodeLevel inject Pcode lines instead of decompiled lines */ - public void enableDebugging(boolean injectAS3Code, File decompileDir, boolean telemetry, boolean pcodeLevel) { + public void enableDebugging(boolean injectAS3Code, File decompileDir, boolean telemetry, boolean pcodeLevel) throws InterruptedException { if (injectAS3Code) { if (pcodeLevel) { @@ -3532,7 +3544,7 @@ public final class SWF implements SWFContainerItem, Timelined { return r; } - public boolean generatePCodeSwdFile(File file, Map> breakpoints) throws IOException { + public boolean generatePCodeSwdFile(File file, Map> breakpoints) throws IOException, InterruptedException { DebugIDTag dit = getDebugId(); if (dit == null) { return false; @@ -3552,6 +3564,10 @@ public final class SWF implements SWFContainerItem, Timelined { List names = new ArrayList<>(asms.keySet()); Collections.sort(names); for (String name : names) { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } + informListeners("generate_swd", name); moduleId++; String sname = "#PCODE " + name; int bitmap = SWD.bitmapAction; @@ -3623,6 +3639,10 @@ public final class SWF implements SWFContainerItem, Timelined { List names = new ArrayList<>(asms.keySet()); Collections.sort(names); for (String name : names) { + if (Thread.currentThread().isInterrupted()) { + throw new InterruptedException(); + } + informListeners("generate_swd", name); List regitems = new ArrayList<>(); moduleId++; HighlightedText cs; diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 5c183e717..c8b9ebaf9 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -198,6 +198,7 @@ public class Main { public static CancellableWorker importWorker = null; public static CancellableWorker deobfuscatePCodeWorker = null; + public static CancellableWorker swfPrepareWorker = null; //This method makes file watcher to shut up during our own file saving public static void startSaving(File savedFile) { @@ -375,13 +376,13 @@ public class Main { private static interface SwfPreparation { - public SWF prepare(SWF swf); + public SWF prepare(SWF swf) throws InterruptedException; } private static class SwfRunPrepare implements SwfPreparation { @Override - public SWF prepare(SWF swf) { + public SWF prepare(SWF swf) throws InterruptedException { if (Configuration.autoOpenLoadedSWFs.get()) { if (!DebuggerTools.hasDebugger(swf)) { DebuggerTools.switchDebugger(swf); @@ -401,8 +402,26 @@ public class Main { } @Override - public SWF prepare(SWF instrSWF) { + public SWF prepare(SWF instrSWF) throws InterruptedException { instrSWF = super.prepare(instrSWF); + + EventListener prepEventListner = new EventListener() { + @Override + public void handleExportingEvent(String type, int index, int count, Object data) { + } + + @Override + public void handleExportedEvent(String type, int index, int count, Object data) { + } + + @Override + public void handleEvent(String event, Object data) { + if (event.equals("inject_debuginfo")) { + startWork(AppStrings.translate("work.injecting_debuginfo") + "..." + (String) data, swfPrepareWorker); + } + } + }; + instrSWF.addEventListener(prepEventListner); try { File fTempFile = new File(instrSWF.getFile()); instrSWF.enableDebugging(true, new File("."), true, doPCode); @@ -426,6 +445,22 @@ public class Main { swfFileName = swfFileName + ".swd"; } File swdFile = new File(swfFileName); + instrSWF.addEventListener(new EventListener() { + @Override + public void handleExportingEvent(String type, int index, int count, Object data) { + } + + @Override + public void handleExportedEvent(String type, int index, int count, Object data) { + } + + @Override + public void handleEvent(String event, Object data) { + if (event.equals("generate_swd")) { + startWork(AppStrings.translate("work.generating_swd") + "..." + (String) data, swfPrepareWorker); + } + } + }); if (doPCode) { instrSWF.generatePCodeSwdFile(swdFile, getPackBreakPoints(true)); } else { @@ -436,11 +471,12 @@ public class Main { } catch (IOException ex) { //ignore, return instrSWF } + instrSWF.removeEventListener(prepEventListner); return instrSWF; } } - private static void prepareSwf(SwfPreparation prep, File toPrepareFile, File origFile, List tempFiles) throws IOException { + private static void prepareSwf(SwfPreparation prep, File toPrepareFile, File origFile, List tempFiles) throws IOException, InterruptedException { SWF instrSWF = null; try (FileInputStream fis = new FileInputStream(toPrepareFile)) { instrSWF = new SWF(fis, toPrepareFile.getAbsolutePath(), origFile == null ? "unknown.swf" : origFile.getName(), false); @@ -520,7 +556,8 @@ public class Main { } catch (IOException ex) { return; - + } catch (InterruptedException ex) { + return; } if (tempFile != null) { synchronized (Main.class) { @@ -570,6 +607,12 @@ public class Main { Main.stopWork(); } + @Override + protected void onStart() { + swfPrepareWorker = this; + } + + @Override protected void done() { synchronized (Main.class) { diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index fc83cbfea..0f0fda234 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -852,4 +852,7 @@ imagePanel.depth = depth: work.importing_as = Importing script importing_as.finishedin = Imported in %time% -work.deobfuscating_pcode = Deobfuscating pcode \ No newline at end of file +work.deobfuscating_pcode = Deobfuscating pcode + +work.injecting_debuginfo = Injecting debug info +work.generating_swd = Generating SWD file \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties index 0c8e86050..ef781ad1b 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties @@ -828,4 +828,7 @@ imagePanel.depth = hloubka: work.importing_as = Importuji skript importing_as.finishedin = Importov\u00e1no za %time% -work.deobfuscating_pcode = Deobfuskov\u00e1n\u00ed p-k\u00f3du \ No newline at end of file +work.deobfuscating_pcode = Deobfuskov\u00e1n\u00ed p-k\u00f3du + +work.injecting_debuginfo = Injektuji lad\u00edc\u00ed informace +work.generating_swd = Generaruji SWD soubor \ No newline at end of file From f125c311f9567d91c54130a5714eb9f851d869a3 Mon Sep 17 00:00:00 2001 From: bagdenisov Date: Mon, 6 Dec 2021 08:29:59 +0500 Subject: [PATCH 19/33] Fixed Incorrect position in Flash Player preview and SWF export --- CHANGELOG.md | 1 + .../com/jpexs/decompiler/flash/exporters/PreviewExporter.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 201b554d2..f2575d602 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. - AS3 - direct editation - call on local register - AS3 - direct editation - resolve properties and local regs before types - AS3 - direct editation - call on index +- Incorrect position in Flash Player preview and SWF export ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java index 5bf29bebb..ca5480541 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/PreviewExporter.java @@ -435,8 +435,8 @@ public class PreviewExporter { RECT r = ((BoundedTag) treeItem).getRect(); rxmin = r.Xmin; rymin = r.Ymin; - /*mat.translateX = -r.Xmin; - mat.translateY = -r.Ymin;*/ + mat.translateX = -r.Xmin; + mat.translateY = -r.Ymin; mat.translateX = mat.translateX + width / 2 - r.getWidth() / 2; mat.translateY = mat.translateY + (showControls ? height - progressBarHeight * 20 : height) / 2 - r.getHeight() / 2; } else { From 4f8cac556daa519f5babcdc7fdce35925091f5d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 6 Dec 2021 08:23:13 +0100 Subject: [PATCH 20/33] Fixed AS1/2 actioncontainers (like try) inside ifs --- CHANGELOG.md | 1 + libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2575d602..5baeb5f08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file. - AS3 - direct editation - resolve properties and local regs before types - AS3 - direct editation - call on index - Incorrect position in Flash Player preview and SWF export +- AS1/2 actioncontainers (like try) inside ifs ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java index ee1df2a6a..4c1b29281 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java @@ -2092,8 +2092,7 @@ public class Graph { output.addAll(ex.getOutput()); for (GraphPart p : allParts) { if (p.containsIP(ex.getIp())) { - if (ipStart == p.start) { - //can this happen? TODO: find some example in the wild + if (ex.getIp() == p.start) { currentRet.addAll(output); //to check for stopparts,etc. we need to call printGraph again part = p; From 383506c94cf9d78a8c369f0cf87581763e3ad953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 6 Dec 2021 18:12:33 +0100 Subject: [PATCH 21/33] Fixed AS1/2 switch detection --- CHANGELOG.md | 1 + .../src/com/jpexs/decompiler/flash/action/ActionGraph.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5baeb5f08..fa66c97fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ All notable changes to this project will be documented in this file. - AS3 - direct editation - call on index - Incorrect position in Flash Player preview and SWF export - AS1/2 actioncontainers (like try) inside ifs +- AS1/2 switch detection ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java index 68dbdc0c7..74e9c1f49 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java @@ -653,7 +653,7 @@ public class ActionGraph extends Graph { switchParts.add(ii2.decisionPart); switchOnFalseParts.add(ii2.onTruePart); switchExpressions.add(sneq.rightSide); - walkNext.add(isNeq ? ii2.onFalse : ii2.onTrue); + walkNext.add(isNeq ? ii2.onTrue : ii2.onFalse); } else { break; } @@ -665,7 +665,7 @@ public class ActionGraph extends Graph { switchParts.add(ii2.decisionPart); switchOnFalseParts.add(ii2.onTruePart); switchExpressions.add(sneq.rightSide); - walkNext.add(isNeq ? ii2.onFalse : ii2.onTrue); + walkNext.add(isNeq ? ii2.onTrue : ii2.onFalse); } else { break; } @@ -684,7 +684,7 @@ public class ActionGraph extends Graph { allSwitchParts.add(switchParts); allSwitchOnFalseParts.add(switchOnFalseParts); allSwitchExpressions.add(switchExpressions); - walkNext.add(ii2.onFalse); + walkNext.add(isNeq ? ii2.onFalse : ii2.onTrue); canUseBlock = false; } } From 9943542f94432a4b98083e15bce896a8f376d24c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 6 Dec 2021 19:12:39 +0100 Subject: [PATCH 22/33] Fixed AS1/2 switch detection --- .../decompiler/flash/action/ActionGraph.java | 133 +++++++++--------- 1 file changed, 69 insertions(+), 64 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java index 74e9c1f49..6519af1b0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java @@ -23,6 +23,7 @@ import static com.jpexs.decompiler.flash.action.Action.adr2ip; import com.jpexs.decompiler.flash.action.model.DirectValueActionItem; import com.jpexs.decompiler.flash.action.model.EnumerateActionItem; import com.jpexs.decompiler.flash.action.model.FunctionActionItem; +import com.jpexs.decompiler.flash.action.model.GetMemberActionItem; import com.jpexs.decompiler.flash.action.model.GetPropertyActionItem; import com.jpexs.decompiler.flash.action.model.GetVariableActionItem; import com.jpexs.decompiler.flash.action.model.SetTarget2ActionItem; @@ -492,8 +493,7 @@ public class ActionGraph extends Graph { caseValuesMap.add(set.rightSide); if (set.leftSide instanceof StoreRegisterActionItem) { switchedObject = ((StoreRegisterActionItem) set.leftSide).value; - } - if (set.leftSide instanceof GetVariableActionItem) { + } else { switchedObject = set.leftSide; } @@ -600,7 +600,8 @@ public class ActionGraph extends Graph { @Override public SecondPassData prepareSecondPass(List list) { ActionSecondPassData spd = new ActionSecondPassData(); - checkSecondPassSwitches(list, spd.switchParts, spd.switchOnFalseParts, spd.switchCaseExpressions); + Set processedIfs = new HashSet<>(); + checkSecondPassSwitches(processedIfs, list, spd.switchParts, spd.switchOnFalseParts, spd.switchCaseExpressions); if (spd.switchParts.isEmpty()) { return null; //no need to second pass @@ -608,64 +609,75 @@ public class ActionGraph extends Graph { return spd; } - private void checkSecondPassSwitches(List list, List> allSwitchParts, List> allSwitchOnFalseParts, List> allSwitchExpressions) { + private void checkSecondPassSwitches(Set processedIfs, List list, List> allSwitchParts, List> allSwitchOnFalseParts, List> allSwitchExpressions) { for (GraphTargetItem item : list) { - List> walkNext = new ArrayList<>(); - boolean canUseBlock = true; if (item instanceof IfItem) { IfItem ii = (IfItem) item; boolean isNeq = true; - if ((ii.expression instanceof StrictNeqActionItem) || (ii.expression instanceof StrictEqActionItem)) { - isNeq = (ii.expression instanceof StrictNeqActionItem); + if (!processedIfs.contains(ii.decisionPart)) { + if ((ii.expression instanceof StrictNeqActionItem) || (ii.expression instanceof StrictEqActionItem)) { + isNeq = (ii.expression instanceof StrictNeqActionItem); - List switchParts = new ArrayList<>(); - List switchExpressions = new ArrayList<>(); - List switchOnFalseParts = new ArrayList<>(); - BinaryOpItem sneq = (BinaryOpItem) ii.expression; - if ((sneq.leftSide instanceof StoreRegisterActionItem) || (sneq.leftSide instanceof GetVariableActionItem)) { + List switchParts = new ArrayList<>(); + List switchExpressions = new ArrayList<>(); + List switchOnFalseParts = new ArrayList<>(); + BinaryOpItem sneq = (BinaryOpItem) ii.expression; + if (true) { + /*(sneq.leftSide instanceof StoreRegisterActionItem) + || (sneq.leftSide instanceof GetVariableActionItem) + || (sneq.leftSide instanceof GetMemberActionItem) + ) {*/ - int regId = -1; - GetVariableActionItem svar = null; - if (sneq.leftSide instanceof StoreRegisterActionItem) { - StoreRegisterActionItem sr = (StoreRegisterActionItem) sneq.leftSide; - regId = sr.register.number; - } else { - svar = (GetVariableActionItem) sneq.leftSide; - } + int regId = -1; + GraphTargetItem svar = null; + if (sneq.leftSide instanceof StoreRegisterActionItem) { + StoreRegisterActionItem sr = (StoreRegisterActionItem) sneq.leftSide; + regId = sr.register.number; + } else { + svar = sneq.leftSide; + } - switchParts.add(ii.decisionPart); - switchExpressions.add(sneq.rightSide); - switchOnFalseParts.add(ii.onTruePart); + switchParts.add(ii.decisionPart); + switchExpressions.add(sneq.rightSide); + switchOnFalseParts.add(ii.onTruePart); - IfItem ii2 = ii; - while (true) { - if ((isNeq && (!ii2.onTrue.isEmpty() && (ii2.onTrue.get(0) instanceof IfItem))) - || (!isNeq && (!ii2.onFalse.isEmpty() && (ii2.onFalse.get(0) instanceof IfItem)))) { - ii2 = (IfItem) (isNeq ? ii2.onTrue.get(0) : ii2.onFalse.get(0)); - if ((ii2.expression instanceof StrictNeqActionItem) || (ii2.expression instanceof StrictEqActionItem)) { - isNeq = (ii2.expression instanceof StrictNeqActionItem); - sneq = ((BinaryOpItem) ii2.expression); - if (sneq.leftSide instanceof DirectValueActionItem) { - DirectValueActionItem dv = (DirectValueActionItem) sneq.leftSide; - if (dv.value instanceof RegisterNumber) { - RegisterNumber rn = (RegisterNumber) dv.value; - if (rn.number == regId) { - switchParts.add(ii2.decisionPart); - switchOnFalseParts.add(ii2.onTruePart); - switchExpressions.add(sneq.rightSide); - walkNext.add(isNeq ? ii2.onTrue : ii2.onFalse); + IfItem ii2 = ii; + IfItem lastOkayIi = ii; + while (true) { + if ((isNeq && (!ii2.onTrue.isEmpty() && (ii2.onTrue.get(0) instanceof IfItem))) + || (!isNeq && (!ii2.onFalse.isEmpty() && (ii2.onFalse.get(0) instanceof IfItem)))) { + ii2 = (IfItem) (isNeq ? ii2.onTrue.get(0) : ii2.onFalse.get(0)); + if ((ii2.expression instanceof StrictNeqActionItem) || (ii2.expression instanceof StrictEqActionItem)) { + isNeq = (ii2.expression instanceof StrictNeqActionItem); + sneq = ((BinaryOpItem) ii2.expression); + if (sneq.leftSide instanceof DirectValueActionItem) { + DirectValueActionItem dv = (DirectValueActionItem) sneq.leftSide; + if (dv.value instanceof RegisterNumber) { + RegisterNumber rn = (RegisterNumber) dv.value; + if (rn.number == regId) { + processedIfs.add(ii.decisionPart); + processedIfs.add(ii2.decisionPart); + switchParts.add(ii2.decisionPart); + switchOnFalseParts.add(ii2.onTruePart); + switchExpressions.add(sneq.rightSide); + lastOkayIi = ii2; + } else { + break; + } + } else { + break; + } + } else if (svar != null) { + if (sneq.leftSide.valueEquals(svar)) { + processedIfs.add(ii.decisionPart); + processedIfs.add(ii2.decisionPart); + switchParts.add(ii2.decisionPart); + switchOnFalseParts.add(ii2.onTruePart); + switchExpressions.add(sneq.rightSide); + lastOkayIi = ii2; } else { break; } - } else { - break; - } - } else if (svar != null && sneq.leftSide instanceof GetVariableActionItem) { - if (sneq.leftSide.valueEquals(svar)) { - switchParts.add(ii2.decisionPart); - switchOnFalseParts.add(ii2.onTruePart); - switchExpressions.add(sneq.rightSide); - walkNext.add(isNeq ? ii2.onTrue : ii2.onFalse); } else { break; } @@ -675,29 +687,22 @@ public class ActionGraph extends Graph { } else { break; } - } else { - break; } - } - if (switchParts.size() > 1) { - allSwitchParts.add(switchParts); - allSwitchOnFalseParts.add(switchOnFalseParts); - allSwitchExpressions.add(switchExpressions); - walkNext.add(isNeq ? ii2.onFalse : ii2.onTrue); - canUseBlock = false; + if (switchParts.size() > 1) { + allSwitchParts.add(switchParts); + allSwitchOnFalseParts.add(switchOnFalseParts); + allSwitchExpressions.add(switchExpressions); + } } } } } - if ((item instanceof Block) && (canUseBlock)) { + if ((item instanceof Block)) { for (List sub : ((Block) item).getSubs()) { - checkSecondPassSwitches(sub, allSwitchParts, allSwitchOnFalseParts, allSwitchExpressions); + checkSecondPassSwitches(processedIfs, sub, allSwitchParts, allSwitchOnFalseParts, allSwitchExpressions); } } - for (List next : walkNext) { - checkSecondPassSwitches(next, allSwitchParts, allSwitchOnFalseParts, allSwitchExpressions); - } } } } From d943588fbd069a1e46f681f27fef52a1dc3be4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Tue, 7 Dec 2021 09:31:14 +0100 Subject: [PATCH 23/33] Fixed Type resolving --- .../parser/script/AVM2SourceGenerator.java | 17 +++++++----- .../abc/avm2/parser/script/CallAVM2Item.java | 6 +++-- .../abc/avm2/parser/script/NamespaceItem.java | 3 ++- .../avm2/parser/script/PropertyAVM2Item.java | 26 ++++++++++++------- .../parser/script/UnresolvedAVM2Item.java | 5 ++-- .../decompiler/flash/gui/abc/ABCPanel.java | 3 +-- 6 files changed, 37 insertions(+), 23 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index 596d9d9fa..bc1b84fbe 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -2612,31 +2612,34 @@ public class AVM2SourceGenerator implements SourceGenerator { return TypeItem.UNBOUNDED; } - public static boolean searchPrototypeChain(List otherNs, int privateNs, int protectedNs, boolean instanceOnly, AbcIndexing abc, DottedChain pkg, String obj, String propertyName, Reference outName, Reference outNs, Reference outPropNs, Reference outPropNsKind, Reference outPropNsIndex, Reference outPropType, Reference outPropValue, Reference outPropValueAbc) { + public static boolean searchPrototypeChain(List otherNs, int privateNs, int protectedNs, boolean instanceOnly, AbcIndexing abc, DottedChain pkg, String obj, String propertyName, Reference outName, Reference outNs, Reference outPropNs, Reference outPropNsKind, Reference outPropNsIndex, Reference outPropType, Reference outPropValue, Reference outPropValueAbc, Reference isType) { // private and protected namespaces first so we find overriding functions before overridden functions - if (searchPrototypeChain(privateNs, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc)) { + if (searchPrototypeChain(privateNs, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType)) { return true; } - if (searchPrototypeChain(protectedNs, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc)) { + if (searchPrototypeChain(protectedNs, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType)) { return true; } for (int ns : otherNs) { - if (searchPrototypeChain(ns, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc)) { + if (searchPrototypeChain(ns, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType)) { return true; } } - return searchPrototypeChain(0, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc); + return searchPrototypeChain(0, instanceOnly, abc, pkg, obj, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType); } - private static boolean searchPrototypeChain(int selectedNs, boolean instanceOnly, AbcIndexing abc, DottedChain pkg, String obj, String propertyName, Reference outName, Reference outNs, Reference outPropNs, Reference outPropNsKind, Reference outPropNsIndex, Reference outPropType, Reference outPropValue, Reference outPropValueAbc) { - + private static boolean searchPrototypeChain(int selectedNs, boolean instanceOnly, AbcIndexing abc, DottedChain pkg, String obj, String propertyName, Reference outName, Reference outNs, Reference outPropNs, Reference outPropNsKind, Reference outPropNsIndex, Reference outPropType, Reference outPropValue, Reference outPropValueAbc, Reference isType) { + isType.setVal(false); AbcIndexing.TraitIndex sp = abc.findScriptProperty(pkg.addWithSuffix(propertyName)); if (sp == null) { sp = abc.findProperty(new AbcIndexing.PropertyDef(propertyName, new TypeItem(pkg.addWithSuffix(obj)), abc.getSelectedAbc(), selectedNs), !instanceOnly, true); } if (sp != null) { + if (sp.trait instanceof TraitClass) { + isType.setVal(true); + } if (sp.objType instanceof TypeItem) { outName.setVal(((TypeItem) sp.objType).fullTypeName.getLast()); outNs.setVal(((TypeItem) sp.objType).fullTypeName.getWithoutLast()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java index 16a0fcce8..1e29309cb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/CallAVM2Item.java @@ -91,12 +91,13 @@ public class CallAVM2Item extends AVM2Item { Reference outPropValue = new Reference<>(null); Reference outPropValueABC = new Reference<>(null); List otherNs = new ArrayList<>(); + Reference isType = new Reference<>(false); for (NamespaceItem on : openedNamespaces) { if (on.isResolved()) { otherNs.add(on.getCpoolIndex(g.abcIndex)); } } - if (cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, g.abcIndex, pkgName, cname, n.getVariableName(), outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueABC)) { + if (cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, g.abcIndex, pkgName, cname, n.getVariableName(), outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueABC, isType)) { NameAVM2Item nobj = new NameAVM2Item(new TypeItem(localData.getFullClass()), n.line, "this", null, false, n.openedNamespaces, abcIndex); nobj.setRegNumber(0); obj = nobj; @@ -132,6 +133,7 @@ public class CallAVM2Item extends AVM2Item { Reference outPropType = new Reference<>(null); Reference outPropValue = new Reference<>(null); Reference outPropValueAbc = new Reference<>(null); + Reference isType = new Reference<>(false); List otherNs = new ArrayList<>(); for (NamespaceItem n : openedNamespaces) { @@ -140,7 +142,7 @@ public class CallAVM2Item extends AVM2Item { } } - if (cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, g.abcIndex, pkgName, cname, prop.propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc) && (localData.getFullClass().equals(outNs.getVal().addWithSuffix(outName.getVal()).toRawString()))) { + if (cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, g.abcIndex, pkgName, cname, prop.propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType) && (localData.getFullClass().equals(outNs.getVal().addWithSuffix(outName.getVal()).toRawString()))) { NameAVM2Item nobj = new NameAVM2Item(new TypeItem(localData.getFullClass()), 0, "this", null, false, new ArrayList<>(), abcIndex); nobj.setRegNumber(0); obj = nobj; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java index f546b9c09..4a2c93a97 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/NamespaceItem.java @@ -89,8 +89,9 @@ public class NamespaceItem { PropertyAVM2Item prop = new PropertyAVM2Item(null, custom, abcIndex, openedNamespaces, new ArrayList<>()); Reference value = new Reference<>(null); Reference outAbc = new Reference<>(null); + Reference isType = new Reference<>(false); - prop.resolve(true, localData, new Reference<>(null), new Reference<>(null), new Reference<>(0), value, outAbc); + prop.resolve(true, localData, isType, new Reference<>(null), new Reference<>(null), new Reference<>(0), value, outAbc); boolean resolved = true; if (value.getVal() == null) { resolved = false; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java index 2655afc99..02b231b57 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/PropertyAVM2Item.java @@ -31,6 +31,7 @@ import com.jpexs.decompiler.flash.abc.types.Namespace; import com.jpexs.decompiler.flash.abc.types.ScriptInfo; import com.jpexs.decompiler.flash.abc.types.ValueKind; import com.jpexs.decompiler.flash.abc.types.traits.Trait; +import com.jpexs.decompiler.flash.abc.types.traits.TraitClass; import com.jpexs.decompiler.flash.abc.types.traits.TraitSlotConst; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.CompilationException; @@ -132,7 +133,8 @@ public class PropertyAVM2Item extends AssignableAVM2Item { return multinameToType(new HashSet<>(), m_index, constants); } - public void resolve(boolean mustExist, SourceGeneratorLocalData localData, Reference objectType, Reference propertyType, Reference propertyIndex, Reference propertyValue, Reference propertyValueABC) throws CompilationException { + public void resolve(boolean mustExist, SourceGeneratorLocalData localData, Reference isType, Reference objectType, Reference propertyType, Reference propertyIndex, Reference propertyValue, Reference propertyValueABC) throws CompilationException { + isType.setVal(false); GraphTargetItem thisType = new TypeItem(localData.getFullClass()); GraphTargetItem objType = null; GraphTargetItem objSubType = null; @@ -269,7 +271,7 @@ public class PropertyAVM2Item extends AssignableAVM2Item { propValueAbc = sp.abc; } } - if (propType == null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, false, abcIndex, ftn.getWithoutLast(), ftn.getLast(), propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc)) { + if (propType == null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, false, abcIndex, ftn.getWithoutLast(), ftn.getLast(), propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType)) { objType = new TypeItem(outNs.getVal().addWithSuffix(outName.getVal())); propType = outPropType.getVal(); propIndex = constants.getMultinameId(Multiname.createQName(false, @@ -356,6 +358,7 @@ public class PropertyAVM2Item extends AssignableAVM2Item { } for (Trait t : si.traits.traits) { if (t.name_index == name_index) { + isType.setVal(t instanceof TraitClass); objType = new TypeItem(DottedChain.OBJECT); propType = AVM2SourceGenerator.getTraitReturnType(abcIndex, t); propIndex = t.name_index; @@ -387,7 +390,7 @@ public class PropertyAVM2Item extends AssignableAVM2Item { otherns.add(n.getCpoolIndex(abcIndex)); } } - if (AVM2SourceGenerator.searchPrototypeChain(otherns, localData.privateNs, localData.protectedNs, false, abcIndex, nsname, (((TypeItem) p.objType).fullTypeName.getLast()), propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc)) { + if (AVM2SourceGenerator.searchPrototypeChain(otherns, localData.privateNs, localData.protectedNs, false, abcIndex, nsname, (((TypeItem) p.objType).fullTypeName.getLast()), propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType)) { objType = new TypeItem(outNs.getVal().addWithSuffix(outName.getVal())); propType = p.returnType; propIndex = constants.getMultinameId(Multiname.createQName(false, @@ -446,7 +449,8 @@ public class PropertyAVM2Item extends AssignableAVM2Item { Reference propIndex = new Reference<>(0); Reference outPropValue = new Reference<>(null); Reference outPropValueAbc = new Reference<>(null); - resolve(false, localData, objType, propType, propIndex, outPropValue, outPropValueAbc); + Reference isType = new Reference<>(false); + resolve(false, localData, isType, objType, propType, propIndex, outPropValue, outPropValueAbc); return propIndex.getVal(); } @@ -458,8 +462,9 @@ public class PropertyAVM2Item extends AssignableAVM2Item { Reference propIndex = new Reference<>(0); Reference outPropValue = new Reference<>(null); Reference outPropValueAbc = new Reference<>(null); + Reference isType = new Reference<>(false); try { - resolve(false, new SourceGeneratorLocalData(new HashMap<>(), 0, false, 0)/*???*/, objType, propType, propIndex, outPropValue, outPropValueAbc); + resolve(false, new SourceGeneratorLocalData(new HashMap<>(), 0, false, 0)/*???*/, isType, objType, propType, propIndex, outPropValue, outPropValueAbc); return propType.getVal(); } catch (CompilationException ex) { @@ -475,8 +480,9 @@ public class PropertyAVM2Item extends AssignableAVM2Item { Reference propIndex = new Reference<>(0); Reference outPropValue = new Reference<>(null); Reference outPropValueAbc = new Reference<>(null); + Reference isType = new Reference<>(false); - resolve(false, localData, objType, propType, propIndex, outPropValue, outPropValueAbc); + resolve(false, localData, isType, objType, propType, propIndex, outPropValue, outPropValueAbc); int propertyId = propIndex.getVal(); Object obj = resolveObject(localData, generator); @@ -539,6 +545,7 @@ public class PropertyAVM2Item extends AssignableAVM2Item { Reference outPropType = new Reference<>(null); Reference outPropValue = new Reference<>(null); Reference outPropValueAbc = new Reference<>(null); + Reference isType = new Reference<>(false); /*List abcs = new ArrayList<>(); abcs.add(abc); @@ -549,7 +556,7 @@ public class PropertyAVM2Item extends AssignableAVM2Item { otherNs.add(n.getCpoolIndex(abcIndex)); } } - if (!localData.subMethod && cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, abcIndex, pkgName, cname, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc) && (localData.getFullClass().equals(outNs.getVal().addWithSuffix(outName.getVal()).toRawString()))) { + if (!localData.subMethod && cname != null && AVM2SourceGenerator.searchPrototypeChain(otherNs, localData.privateNs, localData.protectedNs, true, abcIndex, pkgName, cname, propertyName, outName, outNs, outPropNs, outPropNsKind, outPropNsIndex, outPropType, outPropValue, outPropValueAbc, isType) && (localData.getFullClass().equals(outNs.getVal().addWithSuffix(outName.getVal()).toRawString()))) { NameAVM2Item nobj = new NameAVM2Item(new TypeItem(localData.getFullClass()), 0, "this", null, false, openedNamespaces, abcIndex); nobj.setRegNumber(0); obj = nobj; @@ -560,7 +567,7 @@ public class PropertyAVM2Item extends AssignableAVM2Item { Reference propValue = new Reference<>(null); Reference propValueAbc = new Reference<>(null); - resolve(false, localData, objType, propType, propIndex, outPropValue, propValueAbc); + resolve(false, localData, isType, objType, propType, propIndex, outPropValue, propValueAbc); obj = ins(AVM2Instructions.FindPropertyStrict, propIndex.getVal()); } } @@ -575,8 +582,9 @@ public class PropertyAVM2Item extends AssignableAVM2Item { Reference propIndex = new Reference<>(0); Reference outPropValue = new Reference<>(null); Reference outPropValueAbc = new Reference<>(null); + Reference isType = new Reference<>(false); - resolve(false, localData, objType, propType, propIndex, outPropValue, outPropValueAbc); + resolve(false, localData, isType, objType, propType, propIndex, outPropValue, outPropValueAbc); int propertyId = propIndex.getVal(); Object obj = resolveObject(localData, generator); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java index 34dd19027..fd2e223d0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/UnresolvedAVM2Item.java @@ -349,10 +349,11 @@ public class UnresolvedAVM2Item extends AssignableAVM2Item { Reference propertyIndex = new Reference<>(null); Reference propertyValue = new Reference<>(null); Reference propertyValueABC = new Reference<>(null); + Reference isType = new Reference<>(false); - resolvedx.resolve(true, localData, objectType, propertyType, propertyIndex, propertyValue, propertyValueABC); + resolvedx.resolve(true, localData, isType, objectType, propertyType, propertyIndex, propertyValue, propertyValueABC); - if (objectType.getVal() != null && !((objectType.getVal() instanceof TypeItem) && ("".equals(((TypeItem) objectType.getVal()).fullTypeName.toRawString())))) { + if (objectType.getVal() != null && !isType.getVal()) { isProperty = true; } } diff --git a/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java b/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java index 226b035a9..fcab78552 100644 --- a/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java @@ -1516,8 +1516,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener Date: Tue, 7 Dec 2021 16:57:08 +0100 Subject: [PATCH 24/33] Fixed #1766 AS3 - direct editation - namespaces on global level without leading colon --- CHANGELOG.md | 2 ++ .../flash/abc/avm2/parser/script/AVM2SourceGenerator.java | 4 ++-- .../flash/abc/avm2/parser/script/ActionScript3Parser.java | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa66c97fb..b0a5087a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ All notable changes to this project will be documented in this file. - Incorrect position in Flash Player preview and SWF export - AS1/2 actioncontainers (like try) inside ifs - AS1/2 switch detection +- [#1766] AS3 - direct editation - namespaces on global level without leading colon ## [15.0.0] - 2021-11-29 ### Added @@ -2340,6 +2341,7 @@ All notable changes to this project will be documented in this file. [#1761]: https://www.free-decompiler.com/flash/issues/1761 [#1762]: https://www.free-decompiler.com/flash/issues/1762 [#1763]: https://www.free-decompiler.com/flash/issues/1763 +[#1766]: https://www.free-decompiler.com/flash/issues/1766 [#1750]: https://www.free-decompiler.com/flash/issues/1750 [#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1681]: https://www.free-decompiler.com/flash/issues/1681 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index bc1b84fbe..6294e8a96 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -1260,8 +1260,8 @@ public class AVM2SourceGenerator implements SourceGenerator { public void generateClass(List importedClasses, List cinitVariables, boolean cinitNeedsActivation, List cinit, List openedNamespaces, int namespace, int initScope, DottedChain pkg, ClassInfo classInfo, InstanceInfo instanceInfo, SourceGeneratorLocalData localData, boolean isInterface, String name, String superName, GraphTargetItem extendsVal, List implementsStr, GraphTargetItem iinit, List iinitVariables, boolean iinitNeedsActivation, List traitItems, Reference class_index) throws AVM2ParseException, CompilationException { localData.currentClass = name; localData.pkg = pkg; - localData.privateNs = abcIndex.getSelectedAbc().constants.getNamespaceId(Namespace.KIND_PRIVATE, pkg.toRawString() + ":" + name, 0, true); - localData.protectedNs = abcIndex.getSelectedAbc().constants.getNamespaceId(Namespace.KIND_PROTECTED, pkg.toRawString() + ":" + name, 0, true); + localData.privateNs = abcIndex.getSelectedAbc().constants.getNamespaceId(Namespace.KIND_PRIVATE, pkg.toRawString().isEmpty() ? name : pkg.toRawString() + ":" + name, 0, true); + localData.protectedNs = abcIndex.getSelectedAbc().constants.getNamespaceId(Namespace.KIND_PROTECTED, pkg.toRawString().isEmpty() ? name : pkg.toRawString() + ":" + name, 0, true); if (extendsVal == null && !isInterface) { extendsVal = new TypeItem(DottedChain.OBJECT); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java index 8299153f0..61d39c82c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java @@ -607,9 +607,9 @@ public class ActionScript3Parser { private void classTraits(List> allOpenedNamespaces, boolean outsidePackage, List cinitVariables, Reference cinitNeedsActivation, List cinit, List importedClasses, List openedNamespaces, NamespaceItem pkg, String classNameStr, boolean isInterface, List traits, List iinitVariables, Reference iinitNeedsActivation, Reference iinit) throws AVM2ParseException, IOException, CompilationException, InterruptedException { NamespaceItem publicNs = new NamespaceItem("", Namespace.KIND_PACKAGE); - NamespaceItem privateNs = new NamespaceItem(pkg.name.toRawString() + ":" + classNameStr, Namespace.KIND_PRIVATE); - NamespaceItem protectedNs = new NamespaceItem(pkg.name.toRawString() + ":" + classNameStr, Namespace.KIND_PROTECTED); - NamespaceItem staticProtectedNs = new NamespaceItem(pkg.name.toRawString() + ":" + classNameStr, Namespace.KIND_STATIC_PROTECTED); + NamespaceItem privateNs = new NamespaceItem(pkg.name.toRawString().isEmpty() ? classNameStr : pkg.name.toRawString() + ":" + classNameStr, Namespace.KIND_PRIVATE); + NamespaceItem protectedNs = new NamespaceItem(pkg.name.toRawString().isEmpty() ? classNameStr : pkg.name.toRawString() + ":" + classNameStr, Namespace.KIND_PROTECTED); + NamespaceItem staticProtectedNs = new NamespaceItem(pkg.name.toRawString().isEmpty() ? classNameStr : pkg.name.toRawString() + ":" + classNameStr, Namespace.KIND_STATIC_PROTECTED); NamespaceItem packageInternalNs = new NamespaceItem(pkg.name, Namespace.KIND_PACKAGE_INTERNAL); openedNamespaces = new ArrayList<>(openedNamespaces); From 2cee8a73860e7cfe5f24494a951299e5bec34f25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 8 Dec 2021 08:12:38 +0100 Subject: [PATCH 25/33] Fixed #1763 AS3 - function with activation - param assignment is not a declaration --- CHANGELOG.md | 1 + .../decompiler/flash/abc/avm2/AVM2Code.java | 95 +++++++++++-------- 2 files changed, 54 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0a5087a6..a36c9a169 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ All notable changes to this project will be documented in this file. - AS1/2 actioncontainers (like try) inside ifs - AS1/2 switch detection - [#1766] AS3 - direct editation - namespaces on global level without leading colon +- [#1763] AS3 - function with activation - param assignment is not a declaration ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java index 699cb8955..d3e26f2c7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/AVM2Code.java @@ -248,6 +248,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.xml.DXNSIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.xml.DXNSLateIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.xml.EscXAttrIns; import com.jpexs.decompiler.flash.abc.avm2.instructions.xml.EscXElemIns; +import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.CoerceAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.ConvertAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FindPropertyAVM2Item; @@ -1862,7 +1863,7 @@ public class AVM2Code implements Cloneable { return assignment; } - private void injectDeclarations(List items, int minreg, DeclarationAVM2Item[] declaredRegisters, List declaredSlots, List declaredSlotsDec, List declaredProperties, List declaredPropsDec, ABC abc, MethodBody body) { + private void injectDeclarations(List paramNames, List items, int minreg, DeclarationAVM2Item[] declaredRegisters, List declaredSlots, List declaredSlotsDec, List declaredProperties, List declaredPropsDec, ABC abc, MethodBody body) { for (int i = 0; i < items.size(); i++) { GraphTargetItem currentItem = items.get(i); List itemsOnLine = new ArrayList<>(); @@ -1911,29 +1912,31 @@ public class AVM2Code implements Cloneable { if (sp.object instanceof FindPropertyAVM2Item) { if (sp.propertyName instanceof FullMultinameAVM2Item) { FullMultinameAVM2Item propName = (FullMultinameAVM2Item) sp.propertyName; - if (!declaredProperties.contains(propName.resolvedMultinameName)) { - for (int t = 0; t < body.traits.traits.size(); t++) { - if (body.traits.traits.get(t).getName(abc).getName(abc.constants, new ArrayList(), true, false) - .equals(propName.resolvedMultinameName)) { - if (body.traits.traits.get(t) instanceof TraitSlotConst) { - GraphTargetItem type = PropertyAVM2Item.multinameToType(((TraitSlotConst) body.traits.traits.get(t)).type_index, abc.constants); - DeclarationAVM2Item d = new DeclarationAVM2Item(subItem, type); - sp.setDeclaration(d); - declaredPropsDec.add(d); - declaredProperties.add(propName.resolvedMultinameName); - if (subItem == currentItem) { - items.set(i, d); - } else { - d.showValue = false; - items.add(i, d); - i++; + if (!paramNames.contains(propName.resolvedMultinameName)) { + if (!declaredProperties.contains(propName.resolvedMultinameName)) { + for (int t = 0; t < body.traits.traits.size(); t++) { + if (body.traits.traits.get(t).getName(abc).getName(abc.constants, new ArrayList(), true, false) + .equals(propName.resolvedMultinameName)) { + if (body.traits.traits.get(t) instanceof TraitSlotConst) { + GraphTargetItem type = PropertyAVM2Item.multinameToType(((TraitSlotConst) body.traits.traits.get(t)).type_index, abc.constants); + DeclarationAVM2Item d = new DeclarationAVM2Item(subItem, type); + sp.setDeclaration(d); + declaredPropsDec.add(d); + declaredProperties.add(propName.resolvedMultinameName); + if (subItem == currentItem) { + items.set(i, d); + } else { + d.showValue = false; + items.add(i, d); + i++; + } } } } + } else { + int idx = declaredProperties.indexOf(propName.resolvedMultinameName); + sp.setDeclaration(declaredPropsDec.get(idx)); } - } else { - int idx = declaredProperties.indexOf(propName.resolvedMultinameName); - sp.setDeclaration(declaredPropsDec.get(idx)); } } } @@ -1942,31 +1945,34 @@ public class AVM2Code implements Cloneable { SetSlotAVM2Item ssti = (SetSlotAVM2Item) subItem; if (ssti.scope instanceof NewActivationAVM2Item) { Slot sl = new Slot(ssti.scope, ssti.slotName); - if (!declaredSlots.contains(sl)) { - GraphTargetItem type = TypeItem.UNBOUNDED; - for (int t = 0; t < body.traits.traits.size(); t++) { - if (body.traits.traits.get(t).getName(abc) == sl.multiname) { - if (body.traits.traits.get(t) instanceof TraitSlotConst) { - type = PropertyAVM2Item.multinameToType(((TraitSlotConst) body.traits.traits.get(t)).type_index, abc.constants); + if (!paramNames.contains(sl.multiname.getName(abc.constants, new ArrayList<>(), true, false))) { + + if (!declaredSlots.contains(sl)) { + GraphTargetItem type = TypeItem.UNBOUNDED; + for (int t = 0; t < body.traits.traits.size(); t++) { + if (body.traits.traits.get(t).getName(abc) == sl.multiname) { + if (body.traits.traits.get(t) instanceof TraitSlotConst) { + type = PropertyAVM2Item.multinameToType(((TraitSlotConst) body.traits.traits.get(t)).type_index, abc.constants); + } } } - } - DeclarationAVM2Item d = new DeclarationAVM2Item(subItem, type); - ssti.setDeclaration(d); - declaredSlotsDec.add(d); - declaredSlots.add(sl); + DeclarationAVM2Item d = new DeclarationAVM2Item(subItem, type); + ssti.setDeclaration(d); + declaredSlotsDec.add(d); + declaredSlots.add(sl); + + if (subItem == currentItem) { + items.set(i, d); + } else { + d.showValue = false; + items.add(i, d); + i++; + } - if (subItem == currentItem) { - items.set(i, d); } else { - d.showValue = false; - items.add(i, d); - i++; + int idx = declaredSlots.indexOf(sl); + ssti.setDeclaration(declaredSlotsDec.get(idx)); } - - } else { - int idx = declaredSlots.indexOf(sl); - ssti.setDeclaration(declaredSlotsDec.get(idx)); } } } @@ -1975,7 +1981,7 @@ public class AVM2Code implements Cloneable { if (currentItem instanceof Block) { Block blk = (Block) currentItem; for (List sub : blk.getSubs()) { - injectDeclarations(sub, minreg, declaredRegisters, declaredSlots, declaredSlotsDec, declaredProperties, declaredPropsDec, abc, body); + injectDeclarations(paramNames, sub, minreg, declaredRegisters, declaredSlots, declaredSlotsDec, declaredProperties, declaredPropsDec, abc, body); } } } @@ -2121,7 +2127,12 @@ public class AVM2Code implements Cloneable { // //int minreg = abc.method_info.get(body.method_info).getMaxReservedReg() + 1; - injectDeclarations(list, 1, d, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), abc, body); + HashMap registerNames = body.getLocalRegNames(abc); + List paramNamesList = new ArrayList<>(); + for (int ir = 0; ir < r; ir++) { + paramNamesList.add(AVM2Item.localRegName(localRegNames, ir)); + } + injectDeclarations(paramNamesList, list, 1, d, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), abc, body); int lastPos = list.size() - 1; if (lastPos < 0) { From 142093c87cea3769005b56f7139bdd3b5d9ab7d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 8 Dec 2021 08:29:05 +0100 Subject: [PATCH 26/33] Fixed AS3 - insert debug instruction to mark register names even with activation --- CHANGELOG.md | 1 + .../flash/abc/avm2/parser/script/AVM2SourceGenerator.java | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a36c9a169..afb6e6dfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ All notable changes to this project will be documented in this file. - AS1/2 switch detection - [#1766] AS3 - direct editation - namespaces on global level without leading colon - [#1763] AS3 - function with activation - param assignment is not a declaration +- AS3 - insert debug instruction to mark register names even with activation ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java index 6294e8a96..5b94c9e12 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/AVM2SourceGenerator.java @@ -2001,9 +2001,7 @@ public class AVM2SourceGenerator implements SourceGenerator { } } for (int i = 1; i < registerNames.size(); i++) { - if (!needsActivation) { - mbodyCode.add(i - 1, ins(AVM2Instructions.Debug, 1, str(registerNames.get(i)), i - 1, (int) registerLines.get(i))); - } + mbodyCode.add(i - 1, ins(AVM2Instructions.Debug, 1, str(registerNames.get(i)), i - 1, (int) registerLines.get(i))); } if (!subMethod) { mbodyCode.add(0, new AVM2Instruction(0, AVM2Instructions.GetLocal0, null)); From 985311c87f141788967b671b69dfcf949a383c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 8 Dec 2021 12:31:31 +0100 Subject: [PATCH 27/33] Fixed AS3 - debugging in inner functions --- CHANGELOG.md | 1 + .../src/com/jpexs/decompiler/flash/abc/ScriptPack.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index afb6e6dfb..3b3b536b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ All notable changes to this project will be documented in this file. - [#1766] AS3 - direct editation - namespaces on global level without leading colon - [#1763] AS3 - function with activation - param assignment is not a declaration - AS3 - insert debug instruction to mark register names even with activation +- AS3 - debugging in inner functions ## [15.0.0] - 2021-11-29 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java index 79b09b09b..950c7998e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/ScriptPack.java @@ -423,7 +423,7 @@ public class ScriptPack extends AS3ClassTreeItem { Trait trait = abc.findTraitByTraitId(classIndex, traitIndex); if (((trait instanceof TraitMethodGetterSetter) && (((TraitMethodGetterSetter) trait).method_info != methodIndex)) || ((trait instanceof TraitFunction) && (((TraitFunction) trait).method_info != methodIndex))) { - continue; //inner anonymous function - ignore. TODO: make work + //continue; //inner anonymous function - ignore. TODO: make work } } From 61561c6e729412863f993eaa0283cb20ae64299b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 8 Dec 2021 19:04:53 +0100 Subject: [PATCH 28/33] Fixed AS1/2 - debugger - rewinding playback to apply breakpoints --- CHANGELOG.md | 1 + .../decompiler/flash/gui/DebuggerHandler.java | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b3b536b1..21cf3f171 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ All notable changes to this project will be documented in this file. - [#1763] AS3 - function with activation - param assignment is not a declaration - AS3 - insert debug instruction to mark register names even with activation - AS3 - debugging in inner functions +- AS1/2 - debugger - rewinding playback to apply breakpoints ## [15.0.0] - 2021-11-29 ### Added diff --git a/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java b/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java index df11ee308..0e8d24223 100644 --- a/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java +++ b/src/com/jpexs/decompiler/flash/gui/DebuggerHandler.java @@ -518,6 +518,8 @@ public class DebuggerHandler implements DebugConnectionListener { } Main.getMainFrame().getPanel().updateMenu(); + boolean isAS3 = (Main.getMainFrame().getPanel().getCurrentSwf().isAS3()); + //enlog(DebuggerConnection.class); //enlog(DebuggerCommands.class); @@ -611,9 +613,9 @@ public class DebuggerHandler implements DebugConnectionListener { commands.setGetterTimeout(1500); commands.setSetterTimeout(5000); - boolean isAS3 = (Main.getMainFrame().getPanel().getCurrentSwf().isAS3()); con.isAS3 = isAS3; + //Widelines - only AS3, it hangs in AS1/2 and SWD does not support UI32 lines if (isAS3) { con.wideLines = commands.getOption("wide_line_player", "false").equals("true"); @@ -663,9 +665,6 @@ public class DebuggerHandler implements DebugConnectionListener { } } - synchronized (this) { - connected = true; - } con.addMessageListener(new DebugMessageListener() { @Override public void message(InAskBreakpoints message) { @@ -697,17 +696,19 @@ public class DebuggerHandler implements DebugConnectionListener { breakInfo = con.getMessage(InBreakAtExt.class, DebuggerConnection.PREF_RESPONSE_TIMEOUT); breakReason = con.sendMessageWithTimeout(new OutGetBreakReason(con), InBreakReason.class); + int reasonInt = breakReason == null ? 0 : breakReason.reason; + String newBreakScriptName = "unknown"; if (modulePaths.containsKey(message.file)) { newBreakScriptName = modulePaths.get(message.file); - } else if (breakReason.reason != InBreakReason.REASON_SCRIPT_LOADED) { + } else if (reasonInt != InBreakReason.REASON_SCRIPT_LOADED) { Logger.getLogger(DebuggerCommands.class.getName()).log(Level.SEVERE, "Invalid file: {0}", message.file); return; } final String[] reasonNames = new String[]{"unknown", "breakpoint", "watch", "fault", "stopRequest", "step", "halt", "scriptLoaded"}; - String reason = breakReason.reason < reasonNames.length ? reasonNames[breakReason.reason] : reasonNames[0]; + String reason = reasonInt < reasonNames.length ? reasonNames[reasonInt] : reasonNames[0]; Logger.getLogger(DebuggerHandler.class.getName()).log(Level.FINE, "break at {0}:{1}, reason: {2}", new Object[]{newBreakScriptName, message.line, reason}); @@ -717,7 +718,7 @@ public class DebuggerHandler implements DebugConnectionListener { breakIp = message.line; } - if (breakReason.reason == InBreakReason.REASON_SCRIPT_LOADED) { + if (reasonInt == InBreakReason.REASON_SCRIPT_LOADED) { if (!Configuration.debugHalt.get()) { commands.sendContinue(); return; @@ -744,6 +745,17 @@ public class DebuggerHandler implements DebugConnectionListener { } }); + synchronized (this) { + connected = true; + } + if (!isAS3) { + try { + commands.getConnection().writeMessage(new OutRewind(commands.getConnection())); + } catch (IOException ex) { + Logger.getLogger(DebuggerHandler.class.getName()).log(Level.SEVERE, null, ex); + } + } + for (ConnectionListener l : clisteners) { l.connected(); } From 4812ad204e7b63bf9e392a741e5ed0cf4fee1057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 18 Dec 2021 16:53:10 +0100 Subject: [PATCH 29/33] Fixed #1773 - auto set flagWideCodes on FontInfo wide character add --- CHANGELOG.md | 2 ++ .../com/jpexs/decompiler/flash/tags/DefineFontInfo2Tag.java | 6 +++++- .../com/jpexs/decompiler/flash/tags/DefineFontInfoTag.java | 6 +++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21cf3f171..fdfa662d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ All notable changes to this project will be documented in this file. - AS3 - insert debug instruction to mark register names even with activation - AS3 - debugging in inner functions - AS1/2 - debugger - rewinding playback to apply breakpoints +- [#1773] - auto set flagWideCodes on FontInfo wide character add ## [15.0.0] - 2021-11-29 ### Added @@ -2346,6 +2347,7 @@ All notable changes to this project will be documented in this file. [#1762]: https://www.free-decompiler.com/flash/issues/1762 [#1763]: https://www.free-decompiler.com/flash/issues/1763 [#1766]: https://www.free-decompiler.com/flash/issues/1766 +[#1773]: https://www.free-decompiler.com/flash/issues/1773 [#1750]: https://www.free-decompiler.com/flash/issues/1750 [#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1681]: https://www.free-decompiler.com/flash/issues/1681 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfo2Tag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfo2Tag.java index 860a3c4e4..357495be9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfo2Tag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfo2Tag.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; @@ -145,6 +146,9 @@ public class DefineFontInfo2Tag extends FontInfoTag { @Override public void addFontCharacter(int index, int character) { + if (character > 255) { + fontFlagsWideCodes = true; + } codeTable.add(index, character); setModified(true); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfoTag.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfoTag.java index a97385b99..8966ed84f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfoTag.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/DefineFontInfoTag.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.tags; import com.jpexs.decompiler.flash.SWF; @@ -146,6 +147,9 @@ public class DefineFontInfoTag extends FontInfoTag { @Override public void addFontCharacter(int index, int character) { + if (character > 255) { + fontFlagsWideCodes = true; + } codeTable.add(index, character); setModified(true); } From 0da9cdc44af67b26ac02a99ab7aee297981e50fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 18 Dec 2021 17:02:40 +0100 Subject: [PATCH 30/33] small changelog change to trigger build --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fdfa662d7..6933c761d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,7 @@ All notable changes to this project will be documented in this file. - AS3 - insert debug instruction to mark register names even with activation - AS3 - debugging in inner functions - AS1/2 - debugger - rewinding playback to apply breakpoints -- [#1773] - auto set flagWideCodes on FontInfo wide character add +- [#1773] - auto set flagWideCodes on FontInfo wide character adding ## [15.0.0] - 2021-11-29 ### Added From 2219dfa01a57394379ad52977a3aebf757397bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 18 Dec 2021 17:10:29 +0100 Subject: [PATCH 31/33] travis - change to openjdk8 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5a833f01d..b7cc25a4f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: java -jdk: [oraclejdk9] +jdk: [openjdk8] #dist: trusty addons: apt: From 012ae459c6a0d2b4560f192cb04bebeb58ce85a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 19 Dec 2021 10:39:51 +0100 Subject: [PATCH 32/33] Fixed #1769 - Do not mark getter+setter as colliding (#xxx suffix) --- CHANGELOG.md | 4 +++- .../flash/abc/usages/MethodNameMultinameUsage.java | 11 ++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6933c761d..e74ecdef3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,8 @@ All notable changes to this project will be documented in this file. - AS3 - insert debug instruction to mark register names even with activation - AS3 - debugging in inner functions - AS1/2 - debugger - rewinding playback to apply breakpoints -- [#1773] - auto set flagWideCodes on FontInfo wide character adding +- [#1773] - Auto set flagWideCodes on FontInfo wide character adding +- [#1769] - Do not mark getter+setter as colliding (#xxx suffix) ## [15.0.0] - 2021-11-29 ### Added @@ -2348,6 +2349,7 @@ All notable changes to this project will be documented in this file. [#1763]: https://www.free-decompiler.com/flash/issues/1763 [#1766]: https://www.free-decompiler.com/flash/issues/1766 [#1773]: https://www.free-decompiler.com/flash/issues/1773 +[#1769]: https://www.free-decompiler.com/flash/issues/1769 [#1750]: https://www.free-decompiler.com/flash/issues/1750 [#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1681]: https://www.free-decompiler.com/flash/issues/1681 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/usages/MethodNameMultinameUsage.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/usages/MethodNameMultinameUsage.java index 123c1af7f..612b4af03 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/usages/MethodNameMultinameUsage.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/usages/MethodNameMultinameUsage.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.abc.usages; import com.jpexs.decompiler.flash.abc.ABC; @@ -39,6 +40,14 @@ public class MethodNameMultinameUsage extends MethodMultinameUsage implements De TraitMultinameUsage otherTrait = (TraitMultinameUsage) other; if (otherTrait.classIndex == classIndex && otherTrait.traitsType == traitsType && otherTrait.parentTraitIndex == parentTraitIndex) { if (other.sameMultinameName(this)) { + + if(other instanceof MethodNameMultinameUsage){ + MethodNameMultinameUsage otherM = (MethodNameMultinameUsage)other; + //getter/setter/method must match + if(otherM.traits.traits.get(otherM.traitIndex).kindType != traits.traits.get(traitIndex).kindType){ + return false; + } + } return true; } } From d4218e9136726855546ba37cd8dbff7992c03806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 20 Feb 2022 10:31:59 +0100 Subject: [PATCH 33/33] Changed Flex SDK links to Apache Flex Fixed Flex SDK not required on commandline when Flex compilation is disabled --- CHANGELOG.md | 5 +++++ .../decompiler/flash/console/CommandLineArgumentParser.java | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_ca.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_cs.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_es.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_fr.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_hu.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_it.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_ja.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_sv.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_tr.properties | 4 ++-- .../flash/gui/locales/AdvancedSettingsDialog_zh.properties | 4 ++-- 13 files changed, 29 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e74ecdef3..d71651050 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ All notable changes to this project will be documented in this file. - [#270] AS3 show progress on deofuscating p-code - [#1718] Show progress on injecting debug info / SWD generation (before Debugging) +### Changed +- [#1801] - Flex SDK links to Apache Flex + ### Fixed - [#1761] AS3 - try..finally inside another structure like if - [#1762] AS call on integer numbers parenthesis @@ -29,6 +32,7 @@ All notable changes to this project will be documented in this file. - AS1/2 - debugger - rewinding playback to apply breakpoints - [#1773] - Auto set flagWideCodes on FontInfo wide character adding - [#1769] - Do not mark getter+setter as colliding (#xxx suffix) +- [#1801] - Flex SDK not required on commandline when Flex compilation is disabled ## [15.0.0] - 2021-11-29 ### Added @@ -2350,6 +2354,7 @@ All notable changes to this project will be documented in this file. [#1766]: https://www.free-decompiler.com/flash/issues/1766 [#1773]: https://www.free-decompiler.com/flash/issues/1773 [#1769]: https://www.free-decompiler.com/flash/issues/1769 +[#1801]: https://www.free-decompiler.com/flash/issues/1801 [#1750]: https://www.free-decompiler.com/flash/issues/1750 [#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1681]: https://www.free-decompiler.com/flash/issues/1681 diff --git a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java index 60009b02a..95663220a 100644 --- a/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java +++ b/src/com/jpexs/decompiler/flash/console/CommandLineArgumentParser.java @@ -3498,8 +3498,8 @@ public class CommandLineArgumentParser { private static void parseImportScript(Stack args) { String flexLocation = Configuration.flexSdkLocation.get(); - if (flexLocation.isEmpty() || (!new File(flexLocation).exists())) { - System.err.println("Flex SDK path not set"); + if (Configuration.useFlexAs3Compiler.get() && (flexLocation.isEmpty() || (!new File(flexLocation).exists()))) { + System.err.println("Flex AS3 compiler enabled but Flex SDK path not set"); System.exit(1); } diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index 60e12e9a0..263e0f1ab 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -379,8 +379,8 @@ config.description.lastSessionFileTitles = Contains the opened file titles from config.group.name.paths = Paths config.group.description.paths = Location of needed files -config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on apache web. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Flash Player projector path config.description.playerLocation = Location of standalone flash player executable. Used for Run action. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ca.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ca.properties index 252f5ba85..94088851f 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ca.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ca.properties @@ -379,8 +379,8 @@ config.description.lastSessionFileTitles = Cont\u00e9 els t\u00edtols de fitxers config.group.name.paths = Camins config.group.description.paths = Ubicaci\u00f3 dels fitxers necessaris -config.group.tip.paths = Baixa el projector i Playerglobal de la p\u00e0gina web d'Adobe. El Flex SDK es pot baixar de Adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Baixa el projector i Playerglobal de la p\u00e0gina web d'Adobe. El Flex SDK es pot baixar de web apache. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Cam\u00ed del projector de Flash Player config.description.playerLocation = Ubicaci\u00f3 de l'executable independent del reproductor de flash. S'utilitza per a l'acci\u00f3 Executa. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties index 3fdd1c3ff..d7fc6dbe1 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties @@ -363,8 +363,8 @@ config.description.lastSessionFileTitles = Obsahuje titulky souboru z naposledy config.group.name.paths = Cesty config.group.description.paths = Um\u00edst\u011bn\u00ed pot\u0159ebn\u00fdch soubor\u016f -config.group.tip.paths = Stahn\u011bte si projector a Playerglobal na str\u00e1nk\u00e1ch adobe. Flex SDK lze stahnout na webu adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Stahn\u011bte si projector a Playerglobal na str\u00e1nk\u00e1ch adobe. Flex SDK lze stahnout na webu apache. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Cesta k Flash Player projectoru config.description.playerLocation = Um\u00edst\u011bn\u00ed spustiteln\u00e9ho flash playeru. Pou\u017e\u00edvan\u00e9 pro akci Spustit. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_es.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_es.properties index 5ea3bbb28..ca4c3d2dc 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_es.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_es.properties @@ -381,8 +381,8 @@ config.group.name.paths = Rutas config.group.description.paths = Ubicaci\u00f3n de los archivos necesarios #config.group.tip.paths = Usted puede bajar estos archivos desde la p\u00e1gina web de Adobe #TODO: translate again: -config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on apache web. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Ruta de Flash Player projector config.description.playerLocation = Ubicaci\u00f3n del ejecutable aut\u00f3nomo de Flash Player. Utilizado para la acci\u00f3n Correr. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_fr.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_fr.properties index 02ea745dd..0be208353 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_fr.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_fr.properties @@ -381,8 +381,8 @@ config.group.name.paths = Chemins config.group.description.paths = Location des fichiers demand\u00e9s #config.group.tip.paths = Vous pouvez t\u00e9l\u00e9charger ces fichiers depuis le site web d'Adobe #TODO: translate again: -config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on apache web. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Chemin du lecteur Flash config.description.playerLocation = Location du lecteur autonome de fichier ex\u00e9cutable Flash. Used for Run action. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties index c1106f911..cc6a89abd 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_hu.properties @@ -381,8 +381,8 @@ config.group.name.paths = \u00datvonalak config.group.description.paths = A sz\u00fcks\u00e9ges f\u00e1jlok el\u00e9rhet\u0151s\u00e9gei #config.group.tip.paths = Ezeket a f\u00e1jlokat az Adobe honlapj\u00e1r\u00f3l t\u00f6ltheti le #TODO: translate again: -config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on apache web. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Flash Player projector \u00fatvonal config.description.playerLocation = Standalone flash player helye. A Futtat\u00e1shoz sz\u00fcks\u00e9ges. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_it.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_it.properties index 174149b9d..0c9f7e435 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_it.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_it.properties @@ -381,8 +381,8 @@ config.group.name.paths = Percorsi config.group.description.paths = Ubicazione dei file richiesti #config.group.tip.paths = possibile ottenere questi file dal sito Adobe #TODO: translate again: -config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Download projector and Playerglobal on adobe webpage. Flex SDK can be downloaded on apache web. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Percorso Flash Player config.description.playerLocation = Posizione eseguibile Flash Player. Utilizzato per l'azione Esegui. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ja.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ja.properties index 41228d44a..6e8383343 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ja.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_ja.properties @@ -379,8 +379,8 @@ config.description.lastSessionFileTitles = \u524d\u56de\u306e\u30bb\u30c3\u30b7\ config.group.name.paths = \u30d1\u30b9 config.group.description.paths = \u5fc5\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240 -config.group.tip.paths = projector \u3068 PlayerGlobal \u306f\u3001Adobe \u306e\u30a6\u30a7\u30d6\u30da\u30fc\u30b8 \u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002Flex SDK \u306f adobe devnet \u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002 -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = projector \u3068 PlayerGlobal \u306f\u3001Adobe \u306e\u30a6\u30a7\u30d6\u30da\u30fc\u30b8 \u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002Flex SDK \u306f apache web \u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002 +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Flash Player projector \u306e\u30d1\u30b9 config.description.playerLocation = \u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30f3\u306e Flash Player \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u5834\u6240\u3002\u300c\u5b9f\u884c\u300d\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059 diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties index f6b5049b1..a9f17c408 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_sv.properties @@ -379,8 +379,8 @@ config.description.lastSessionFileTitles = Inneh\u00e5ller dom \u00f6ppna fil ti config.group.name.paths = S\u00f6kv\u00e4gar config.group.description.paths = Plats f\u00f6r n\u00f6dv\u00e4ndiga filer -config.group.tip.paths = Ladda ner projector and Playerglobal fr\u00e5n adobe webbsida. Flex SDK kan blir nerladdad fr\u00e5n adobe devnet. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Ladda ner projector and Playerglobal fr\u00e5n adobe webbsida. Flex SDK kan blir nerladdad fr\u00e5n apache web. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Flash Player projector s\u00f6kv\u00e4g config.description.playerLocation = Plats f\u00f6r standalone flash player program. Anv\u00e4nds f\u00f6r normalt anv\u00e4ndande. diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties index c79089539..4d8eaa29f 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_tr.properties @@ -621,8 +621,8 @@ config.description.lastSessionFileTitles = Son oturumdaki a\u00e7\u0131lm\u0131\ config.group.name.paths = Yollar config.group.description.paths = Gerekli dosyalar\u0131n yeri -config.group.tip.paths = Projekt\u00f6r\u00fc ve Playerglobal'\u0131 adobe web sayfas\u0131ndan indirin. Flex SDK, adobe devnet adresinden indirilebilir. -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = Projekt\u00f6r\u00fc ve Playerglobal'\u0131 adobe web sayfas\u0131ndan indirin. Flex SDK, apache web adresinden indirilebilir. +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties index 40cf56432..d80c2dcbf 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties @@ -379,8 +379,8 @@ config.description.lastSessionFileTitles = \u5305\u542b\u4e0a\u4e00\u4e2a\u4f1a\ config.group.name.paths = \u8def\u5f84 config.group.description.paths = \u6240\u9700\u6587\u4ef6\u4f4d\u7f6e -config.group.tip.paths = \u5728Adobe\u5b98\u7f51\u4e0a\u4e0b\u8f7dPlayer\u548cPlayerGlobal\u3002 Flex SDK\u53ef\u4ee5\u5728adobe devnet\u4e0a\u4e0b\u8f7d\u3002 -config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html http://www.adobe.com/devnet/flex/flex-sdk-download.html +config.group.tip.paths = \u5728Adobe\u5b98\u7f51\u4e0a\u4e0b\u8f7dPlayer\u548cPlayerGlobal\u3002 Flex SDK\u53ef\u4ee5\u5728apache web\u4e0a\u4e0b\u8f7d\u3002 +config.group.link.paths = https://www.adobe.com/support/flashplayer/debug_downloads.html https://flex.apache.org/download-binaries.html config.name.playerLocation = 1) Flash Player\u76ee\u5f55 config.description.playerLocation = \u72ec\u7acbFlash Player\u53ef\u6267\u884c\u6587\u4ef6\u7684\u4f4d\u7f6e\u3002 \u7528\u4e8e\u8fd0\u884c\u64cd\u4f5c\u3002