Hi Harbs, thanks for taking the time to look into this and sorry for my delay in response, as Piotr exposed I'm as well on Christmas time here in Spain, so with few time, although hope to be around here from in some slices of time.
About the problem, I built all and check all Crux examples: - examples/crux/CruxQuickStart -> This is now working ok - examples/crux/CruxQuickStartBasic -> This is now working ok - examples/crux/CruxGitHubCommitLogViewer -> This is not working, not retrieve the GitHub data and even the DataGrid seems to be not laying the header right. Can you take a look at this one, maybe something was missing for make this working again. I saw 2 test failing, but just see you fixed right now so I'll try to rebuild again to check that part. Anyway good work! :) Carlos El mar., 24 dic. 2019 a las 9:10, Harbs (<[email protected]>) escribió: > I realized that the reason bubbling is not working is because > EventTarget.getParentEventTarget() is relying on parentEventTarget_ which > is generally not set in Royale. > > Royale already has a parent getter for objects which have hierarchy. I > changed the method to simply return the parent instead of > parentEventTarget_ which will be null if there is no parent or its not an > IChild. > > Ideally, the change should be in the EventTarget code, but I’m not trying > to touch that. I overrode the the method in EventDispatcher. If the event > does not have bubbling set to true, none of this should effect anything. If > there are any apps which have bubbling events and are relying on Royale > bubbling to be broken, they might break with this change… ;-) > > Royale should now support event bubbling out of the box. :-) > > Harbs > > > On Dec 24, 2019, at 9:01 AM, Alex Harui <[email protected]> > wrote: > > > > I took a peek at the commit and made some comments on the commit thread > that may help. > > > > HTH, > > -Alex > > > > On 12/23/19, 2:24 PM, "Harbs" <[email protected] <mailto: > [email protected]>> wrote: > > > > I read through what you did in JSStageEvents. That’s really quite > ingenious. Well done! :-) > > > > I think we could use a similar approach for an application bead to > support full event bubbling without modifying ElementWrapper and > HTMLElementWrapper. > > > > I still have no idea what broke though. > > > > Let me know if I should revert the changes until someone has the time > to look at this. > > > > Thanks, > > Harbs > >> On Dec 23, 2019, at 10:59 PM, Greg Dove <[email protected]> wrote: > >> > >> Iirc it was dispatching capture phase events that was 'difficult'. I > think > >> I had to override something and undo something in Royale that was > switching > >> off goog support for that. It was only needed in the JSStageEvents > >> emulation stuff iirc. I have no idea what the issue is, but that is > >> probably what I would look at first. Have to go now... I can look at > this > >> if needed but not for a few days. > >> > >> On Tue, 24 Dec 2019, 09:38 Harbs, <[email protected]> wrote: > >> > >>> AIUI, for bubbling to work automatically, setParentEventTarget needs > to be > >>> called to construct the hierarchy. > >>> > >>> Maybe we should have a bead that takes care of this (on addedToParent > or > >>> something) for applications which rely on bubbling for > non-browser-native > >>> events. > >>> > >>> There is a dispatchBubblingEvent in HTMLElementWrapper which forces the > >>> event to bubble up for all events, but it’s JS only. We could add a > method > >>> for SWF for compatibility. > >>> > >>> I just tested dispatchBubblingEvent and that makes the alert appear. > >>> > >>> None of this explains why it worked before my change, though... > >>> > >>>> On Dec 23, 2019, at 10:17 PM, Greg Dove <[email protected]> wrote: > >>>> > >>>> Harbs, I can only check Crux in 4-5 days time. > >>>> From memory I did set up something specific to make either capture or > >>>> bubbling work, maybe that was for the 'addedToStage' event emulation. > I > >>>> think one of them (either capture or bubbling) was not working by > >>> default, > >>>> or did was not easy to enable by default. > >>>> > >>>> > >>>> > >>>> On Tue, Dec 24, 2019 at 9:13 AM Harbs <[email protected]> wrote: > >>>> > >>>>> Nope. Didn’t figure it out. > >>>>> > >>>>> It looks like Crux listens on the ancestor and is relying on > bubbling. > >>>>> > >>>>> I’m guessing bubbling is not working, but I have no idea why that > would > >>>>> have changed with my commit. > >>>>> > >>>>>> On Dec 23, 2019, at 10:06 PM, Piotr Zarzycki < > >>> [email protected]> > >>>>> wrote: > >>>>>> > >>>>>> Harbs, > >>>>>> > >>>>>> I feel like Carlos has started his Christmas time ;) I'm glad that > you > >>>>>> figured it out! :) > >>>>>> > >>>>>> pon., 23 gru 2019 o 21:01 Harbs <[email protected] <mailto: > >>>>> [email protected]>> napisał(a): > >>>>>> > >>>>>>> The asconfig file did not include the necessary metadata. Fixed > that… > >>>>>>> > >>>>>>> OK. I’m not getting any errors, but UserForm is dispatching an > event > >>> not > >>>>>>> listened to by anyone. > >>>>>>> > >>>>>>> Where is the listener supposed to be attached? Maybe it’s > listening to > >>>>> the > >>>>>>> wrong object? > >>>>>>> > >>>>>>> > >>>>>>>> On Dec 23, 2019, at 9:35 PM, Harbs <[email protected]> wrote: > >>>>>>>> > >>>>>>>> I’m getting an error that UserForm.user is null. > >>>>>>>> > >>>>>>>> I have no idea where that should have been set, and I have no idea > >>> how > >>>>>>> my commit could have possibly effected that. I don’t see anything > that > >>>>>>> would initialize the user variable. > >>>>>>>> > >>>>>>>> If you want my help on this, I’m going to need some direction. > >>>>>>>> > >>>>>>>> Thanks, > >>>>>>>> Harbs > >>>>>>>> > >>>>>>>>> On Dec 23, 2019, at 9:28 PM, Harbs <[email protected] > <mailto: > >>>>> [email protected]> <mailto: > >>>>>>> [email protected] <mailto:[email protected]>>> wrote: > >>>>>>>>> > >>>>>>>>> I fixed this, but I have no idea what Crux is supposed to do. > >>>>>>>>> > >>>>>>>>> What am I looking for? > >>>>>>>>> > >>>>>>>>>> On Dec 23, 2019, at 8:30 PM, Harbs <[email protected] > <mailto: > >>>>> [email protected]> <mailto: > >>>>>>> [email protected] <mailto:[email protected]>>> wrote: > >>>>>>>>>> > >>>>>>>>>> I can’t compile Jewel right now. > >>>>>>>>>> > >>>>>>>>>> I’m getting an error: > >>>>>>>>>> > >>>>>>>>>> [java] > >>>>>>> > >>>>> > >>> > /Apache/royale-asjs/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/IconButton.as(104): > >>>>>>> col: 13 Access of possibly undefined property classSelectorList. > >>>>>>>>>> [java] > >>>>>>>>>> [java] classSelectorList.toggle("icon", (_icon != > >>>>>>> null)); > >>>>>>>>>> [java] ^ > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>> On Dec 23, 2019, at 7:17 PM, Carlos Rovira < > >>> [email protected] > >>>>> <mailto:[email protected]> > >>>>>>> <mailto:[email protected] <mailto:[email protected]>>> > >>>>> wrote: > >>>>>>>>>>> > >>>>>>>>>>> Compilation is ok. The problem is that example is not really > >>>>> working. > >>>>>>>>>>> In that example you should be able to fill the form and push > the > >>>>>>> button. > >>>>>>>>>>> After that a JS Alert should be show with the ID of the user > >>> record > >>>>>>> saved. > >>>>>>>>>>> That Alert is not show anymore. > >>>>>>>>>>> If you revert locally that commit and recompile Core and then > the > >>>>>>> example > >>>>>>>>>>> and run you'll be able to see it again. > >>>>>>>>>>> We have a client complaining about the app stopped to work > today > >>>>>>> since they > >>>>>>>>>>> are using Crux. > >>>>>>>>>>> After investigation I was able to trace the problem to that > >>> commit. > >>>>>>>>>>> > >>>>>>>>>>> Thanks > >>>>>>>>>>> > >>>>>>>>>>> Carlos > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> El lun., 23 dic. 2019 a las 17:59, Harbs (< > [email protected] > >>>>> <mailto:[email protected]> > >>>>>>> <mailto:[email protected] <mailto:[email protected]>>>) > >>>>> escribió: > >>>>>>>>>>> > >>>>>>>>>>>> I compiled CruxQuickStartBasic and I don’t see anything wrong. > >>>>>>>>>>>> > >>>>>>>>>>>> Can you give me more clues? > >>>>>>>>>>>> > >>>>>>>>>>>> FWIW, I used Ant, is the problem specific to Maven? > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>> On Dec 23, 2019, at 6:26 PM, Carlos Rovira < > >>>>> [email protected] <mailto:[email protected]> > >>>>>>> <mailto:[email protected] <mailto:[email protected]>>> > >>>>>>>>>>>> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>> Hi Harbs, > >>>>>>>>>>>>> > >>>>>>>>>>>>> seems recent changes break Crux library > >>>>>>>>>>>>> (commit: f50c9990a3190cf681364905525656984ab2e9c5 - Cleaned > up > >>>>>>>>>>>>> ElementWrapper and HTMLElementWrapper) > >>>>>>>>>>>>> I'm trying to see what could be the problem. I suppose that > is > >>> the > >>>>>>> change > >>>>>>>>>>>>> of HTMLElementWrapper now extending ElementWrapper. > >>>>>>>>>>>>> Tried to change one for the other in Crux library, but with > no > >>>>> luck > >>>>>>>>>>>>> I'm using /examples/crux/CruxQuickStartBasic to test > >>>>>>>>>>>>> Can you see what could be wrong? > >>>>>>>>>>>>> Thanks > >>>>>>>>>>>>> > >>>>>>>>>>>>> Carlos > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> El dom., 22 dic. 2019 a las 17:24, Harbs (< > >>> [email protected] > >>>>> <mailto:[email protected]> > >>>>>>> <mailto:[email protected] <mailto:[email protected]>>>) > >>>>>>>>>>>> escribió: > >>>>>>>>>>>>> > >>>>>>>>>>>>>>> There is lots of what looks like shared code, so could > >>>>>>>>>>>>>> HTMLElementWrapper extend ElementWrapper? > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Totally. Excellent idea. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> On Dec 22, 2019, at 5:46 PM, Alex Harui > >>>>> <[email protected] <mailto:[email protected]> > >>>>>>> <mailto:[email protected] <mailto:[email protected] > >>> > >>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> In a quick look at history, HTMLElementWrapper's override > >>> logic > >>>>>>> was the > >>>>>>>>>>>>>> same as ElementWrapper's. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Maybe as you upgraded HTMLElementWrapper's logic, > >>> ElementWrapper > >>>>>>> should > >>>>>>>>>>>>>> have changed as well but didn't? > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> There is lots of what looks like shared code, so could > >>>>>>>>>>>>>> HTMLElementWrapper extend ElementWrapper? > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> My 2 cents, > >>>>>>>>>>>>>>> -Alex > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> On 12/22/19, 1:00 AM, "Harbs" <[email protected] > >>> <mailto: > >>>>> [email protected]> <mailto: > >>>>>>> [email protected] <mailto:[email protected]>>> wrote: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> We found a weird bug with events and currentTarget. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> I traced the problem to the following: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> The app loads both HTMLElementWrapper and ElementWrapper. > The > >>>>>>> lstener > >>>>>>>>>>>>>> overrides in the two are stepping on each other. Here’s what > >>>>>>> happens: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> 1. HTMLElementWrapper is loaded first. It replaces > >>>>>>>>>>>>>> goog.events.fireListener with its fireListenerOverride > function > >>>>>>> (which > >>>>>>>>>>>>>> calls the existing one when it’s done). > >>>>>>>>>>>>>>> 2. ElementWrapper is loaded next and it replaces the > existing > >>>>>>>>>>>>>> goog.events.fireListener function — which was already > changed > >>> to > >>>>>>> point > >>>>>>>>>>>> to > >>>>>>>>>>>>>> HTMLElementWrapper.fireListenerOverride with the one from > >>>>>>>>>>>> ElementWrapper. > >>>>>>>>>>>>>>> 3. When an event is actually dispatched, > >>>>>>>>>>>>>> ElementWrapper.fireListenerOverride first changes the event > to > >>> a > >>>>>>> royale > >>>>>>>>>>>>>> BrowserEvent instead of a goog one. > >>>>>>>>>>>> HTMLElementWrapper.fireListenerOverride > >>>>>>>>>>>>>> is then called and where it expects a goog BrowserEvent, it > in > >>>>> fact > >>>>>>>>>>>> gets a > >>>>>>>>>>>>>> royale BrowserEvent. This causes the wrappedEvent to be the > >>> wrong > >>>>>>> type > >>>>>>>>>>>> and > >>>>>>>>>>>>>> messes things up down the line. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> I’m not sure of the best way to fix this. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> * We could check the event type in > >>>>>>> HTMLElementWrapper/ElementWrapper, > >>>>>>>>>>>>>> but that’s just-in-case code. > >>>>>>>>>>>>>>> * I’m not completely sure why we need this logic in both > >>>>>>>>>>>>>> ElementWrapper and HTMLElementWrapper. Is there something > that > >>>>> can > >>>>>>> be > >>>>>>>>>>>>>> changed there? > >>>>>>>>>>>>>>> * Maybe there’s some way for ElementWrapper to know that > some > >>>>>>> other > >>>>>>>>>>>>>> class is installing an override? > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Thoughts? > >>>>>>>>>>>>>>> Harbs > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> -- > >>>>>>>>>>>>> Carlos Rovira > >>>>>>>>>>>>> > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > >< > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>> > < > >>>>> > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0> > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > >>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> -- > >>>>>>>>>>> Carlos Rovira > >>>>>>>>>>> > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0> > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>> > < > >>>>> > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0> > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0 > >>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> -- > >>>>>> > >>>>>> Piotr Zarzycki > >>>>>> > >>>>>> Patreon: * > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=BPJwWOdHi1NDnDQ7vujOyeQNUInTpQDUQ%2FQ0isRcamc%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=BPJwWOdHi1NDnDQ7vujOyeQNUInTpQDUQ%2FQ0isRcamc%3D&reserved=0> > < > >>>>> > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 > >> > >>>>>> < > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0> > < > >>>>> > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 > < > https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0 > >>>* > > -- Carlos Rovira http://about.me/carlosrovira
