Hi Alex,

what do you mean with  "prevent renaming"? there's some process that
implies a renaming? and renaming of what? the nested properties?

thanks



El mié., 12 dic. 2018 a las 17:21, Alex Harui (<aha...@adobe.com.invalid>)
escribió:

> Using a plain object allows renaming.  Using a class definition prevents
> renaming.
>
> Using shortnames in plain objects prevents renaming but is, IMO, a bad
> practice.  Why make our code harder to read?  It isn't just in the data
> structure, but in the code that reads it.
>
> -Alex
>
> On 12/12/18, 2:34 AM, "Carlos Rovira" <carlos.rov...@codeoscopic.com>
> wrote:
>
>     Harb,
>
>     That seems ok, but moreover...why don't we have a class definition
> instead
>     a plain object, somethings like RoyaleClassInfo.as?
>     Since Royale tries to enforce typing, I think using a plain object for
>     royale class info, doesn't seems the most proper way to me
>
>     thanks
>
>
>
>     El mié., 12 dic. 2018 a las 11:23, Harbs (<harbs.li...@gmail.com>)
> escribió:
>
>     > Right, but I thought we already suggested single character names for
> the
>     > ROYALE_CLASS_INFO object.
>     >
>     > To take one example:
>     >
> org.apache.royale.html.supportClasses.Viewport.prototype.ROYALE_CLASS_INFO
>     > = { names: [{ name: 'Viewport', qName:
>     > 'org.apache.royale.html.supportClasses.Viewport', kind: 'class' }],
>     > interfaces: [org.apache.royale.core.IBead,
>     > org.apache.royale.core.IViewport] };
>     >
>     > That would become:
>     >
> org.apache.royale.html.supportClasses.Viewport.prototype.ROYALE_CLASS_INFO
>     > = { n: [{ n: 'Viewport', q:
>     > 'org.apache.royale.html.supportClasses.Viewport', k: 'class' }], i:
>     > [org.apache.royale.core.IBead, org.apache.royale.core.IViewport] };
>     >
>     > I’m pretty sure that’s enough to prevent renaming (because the
> closure
>     > compiler does not rename single character variable names). If I’m
> wrong, we
>     > could always output something like this:
>     >
>     >
> org.apache.royale.html.supportClasses.Viewport.prototype.ROYALE_CLASS_INFO
>     > = { 'n': [{ 'n': 'Viewport', 'q':
>     > 'org.apache.royale.html.supportClasses.Viewport', 'k': 'class' }],
> 'i':
>     > [org.apache.royale.core.IBead, org.apache.royale.core.IViewport] };
>     >
>     > Am I missing something?
>     > Harbs
>     >
>     > > On Dec 12, 2018, at 12:32 AM, Alex Harui <aha...@adobe.com.INVALID
> >
>     > wrote:
>     > >
>     > > ROYALE_CLASS_INFO is a dynamic object.  There is no class
> definition for
>     > it, which means that its field names can be renamed.
>     > >
>     > > The whole point of modules is to load classes that aren't in the
> main
>     > app so that the main app loads faster.  So, if you have
>     > >
>     > > MainApp.mxml
>     > > <mx:Application>
>     > >  <mx:ModuleLoader url="MyModule" />
>     > > </mx:Application>
>     > >
>     > > MyModule.mxml
>     > > <mx:Module>
>     > > </mx:Module>
>     > >
>     > > The Language.is <
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flanguage.is%2F&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925068534&amp;sdata=5VGfoczFg35bUnerVM144kIlrvfXuWd5m%2BpetEW%2FY74%3D&amp;reserved=0>
> function linked into Main app
>     > might be checking for ROYALE_CLASS_INFO.interfaces and Application
> class
>     > will have a ROYALE_CLASS_INFO.interfaces property.  But Module might
> have
>     > ROYALE_CLASS_INFO.i instead of interfaces.  And thus Language.is <
>     >
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flanguage.is%2F&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=zsy%2FoU9vn%2BoGUd5Ri57fHeqW5wbzhqvo1lXlgZWwkCY%3D&amp;reserved=0>
> will not work on classes in the module.   It depends
>     > on what other code is in the main app.  It appears that use of
>     > Reflection.SWC's TypeDefinition in the main app tells the minifier
> to not
>     > minify the "interfaces" property.  Which means that any code an app
>     > developer might add to the app could change the minification of
>     > ROYALE_CLASS_INFO, or any other dynamic object.
>     > >
>     > > I'm trying to figure out why the minifier thinks the use of
> "interfaces"
>     > in TypeDefinition matters but other attempts I've tried to force the
>     > minifier to not rename "interfaces" in the module have not worked.
>     > >
>     > > HTH,
>     > > -Alex
>     > >
>     > > On 12/11/18, 2:19 PM, "Harbs" <harbs.li...@gmail.com <mailto:
>     > harbs.li...@gmail.com>> wrote:
>     > >
>     > >    I’m still not getting the connection to ROYALE_CLASS_INFO.
>     > >
>     > >    Can you explain to me in pseudo-code the problem with that? Why
> does
>     > a dynamic object have ROYALE_CLASS_INFO at all?
>     > >
>     > >> On Dec 12, 2018, at 12:16 AM, Alex Harui <aha...@adobe.com.INVALID
> >
>     > wrote:
>     > >>
>     > >> I'm not sure why you think it is theoretical.  For sure, in TDF,
> the
>     > module is not loading because ROYALE_CLASS_INFO is minified
> differently in
>     > the main app than the module. Any dynamic objects shared across
>     > compilations are at risk of being renamed differently.  I'm chasing
> down a
>     > way to control it.
>     > >>
>     > >> We do have control over the names of classes and properties to
>     > guarantee they are the same in the app and module.  It is just these
>     > dynamic object keys that we don't yet have control over.
>     > >>
>     > >> We do have the option of defining a class for ROYALE_CLASS_INFO,
> but
>     > then it will never minify.  I like the fact that it can minify
> without us
>     > having to use shortnames.  It makes our debug code more readable and
>     > doesn't waste space in small apps.  Adding a class definition for
>     > ROYALE_CLASS_INFO would further add overhead to small apps.
>     > >>
>     > >> My 2 cents,
>     > >> -Alex
>     > >>
>     > >> On 12/11/18, 2:06 PM, "Harbs" <harbs.li...@gmail.com <mailto:
>     > harbs.li...@gmail.com> <mailto:harbs.li...@gmail.com <mailto:
>     > harbs.li...@gmail.com>>> wrote:
>     > >>
>     > >>   In fact, in looking through the framework code so far, the only
> place
>     > I’ve found variable names not quoted (in JS compatible code) so far
> was in
>     > CSSUtils where we have a colorMap. I’m pretty sure the colorMap will
> not
>     > work after minification because the color names will not match…
>     > >>
>     > >>> On Dec 12, 2018, at 12:01 AM, Harbs <harbs.li...@gmail.com
> <mailto:
>     > harbs.li...@gmail.com>> wrote:
>     > >>>
>     > >>> Hi Carlos,
>     > >>>
>     > >>> We’re only discussing dynamic objects. How many of those do you
> have
>     > in your applications? I doubt there’s much difference in performance
> due to
>     > minification of dynamic objects.
>     > >>>
>     > >>> In *all* our framework code we have dynamic object instantiation
> in
>     > 435 places including TLF, Spark and MX classes. Without those
> packages, I’m
>     > estimating it’s a small fraction of that and probably most of the
> dynamic
>     > objects are hash maps where they don’t benefit from minification
> anyway.
>     > >>>
>     > >>> The vast majority of the cases where you’re using dynamic
> objects in
>     > production code you don’t want the names minified either (i.e. API
> calls
>     > and uses of JSON).
>     > >>>
>     > >>> I think that most of this discussion is more theoretical than
>     > practical considerations.
>     > >>>
>     > >>> My $0.02,
>     > >>> Harbs
>     > >>>
>     > >>>> On Dec 11, 2018, at 11:26 PM, Carlos Rovira <
> carlosrov...@apache.org
>     > <mailto:carlosrov...@apache.org>> wrote:
>     > >>>>
>     > >>>> Hi,
>     > >>>>
>     > >>>> I'm still not using modules. I left that for now until we
> complete the
>     > >>>> first phase in our project, but will be using (hopefully) around
>     > February.
>     > >>>>
>     > >>>> So right now we're only using minification, that seems not only
> to
>     > reduce
>     > >>>> the size of the build, but release mode performs faster, and I
> think
>     > is
>     > >>>> due, in part, to minify.
>     > >>>>
>     > >>>> So, IMHO, as a user, I don't like A). Can't think of a solution,
>     > since is
>     > >>>> not my zone of expertise, and sure you guys found a good
> solution
>     > after
>     > >>>> all. Just want to say that as a user, is importante both
> things: have
>     > >>>> modules (and hope we could link as well with routing like
> people do in
>     > >>>> other current techs like React and Angular to get a powerful
> solution
>     > for
>     > >>>> SPAs) and have minification, since IMO, the resultant js-release
>     > build has
>     > >>>> many, many advantages, not only in performance and size but as
> well in
>     > >>>> obfuscation, and for me is like our "binary output code".
>     > >>>>
>     > >>>> Sorry to not be able to give any suggestion, but maybe as well
> an
>     > opinion
>     > >>>> of use is as well valuable.
>     > >>>>
>     > >>>> just my 2
>     > >>>>
>     > >>>>
>     > >>>> El mar., 11 dic. 2018 a las 21:24, Alex Harui
>     > (<aha...@adobe.com.invalid <mailto:aha...@adobe.com.invalid>>)
>     > >>>> escribió:
>     > >>>>
>     > >>>>> Thinking about it more, -js-dynamic-access probably won't
> help.   We
>     > don't
>     > >>>>> want to compile our SWCs with that option on and thus turn off
>     > minification
>     > >>>>> of these field names always if we can help it.
>     > >>>>>
>     > >>>>> Even a directive per occurrence won't help either.  Whether a
> field
>     > name
>     > >>>>> is renamed is still dependent on what other code is in the
>     > compilation.
>     > >>>>>
>     > >>>>> The problem is better described as trying to find a way to
> control
>     > what
>     > >>>>> field names get renamed in more than one compilation, given
> that
>     > there is
>     > >>>>> pre-transpiled code that allows renaming.  When building
> modules, we
>     > >>>>> already require using Closure Compiler options that output the
>     > renaming
>     > >>>>> maps of the main app so that UIBase is given the same short
> name in
>     > all
>     > >>>>> minifications.  But there is no way to dictate that for field
> names
>     > as far
>     > >>>>> as I can tell.
>     > >>>>>
>     > >>>>> -Alex
>     > >>>>>
>     > >>>>> On 12/11/18, 11:32 AM, "Harbs" <harbs.li...@gmail.com <mailto:
>     > harbs.li...@gmail.com>> wrote:
>     > >>>>>
>     > >>>>> I vote for A.
>     > >>>>>
>     > >>>>> We can also do B which would require manually changing all
> access to
>     > >>>>> brackets and quote all names in object literals.
>     > >>>>>
>     > >>>>> I might be nice to add some comment decorations to
> enable/disable
>     > >>>>> -js-dynamic-access on a case-by-case basis, but I think it’s
>     > reasonable to
>     > >>>>> have a global on/off requirement. I’m already doing this for a
>     > library I
>     > >>>>> wrote which has a lot of dynamic data structures which does not
>     > survive
>     > >>>>> minification and the results are fine.
>     > >>>>>
>     > >>>>> My $0.02,
>     > >>>>> Harbs
>     > >>>>>
>     > >>>>>> On Dec 11, 2018, at 8:47 PM, Alex Harui
> <aha...@adobe.com.INVALID
>     > <mailto:aha...@adobe.com.INVALID>>
>     > >>>>> wrote:
>     > >>>>>>
>     > >>>>>> IMO, some folks will want to rely on minification of object
> field
>     > >>>>> names so save space.  I think -js-dynamic-access blocks
> minification.
>     > >>>>>>
>     > >>>>>> So, to try to pose the problem another way, you can rely on
>     > >>>>> minification object field names if you are building a
> single-js-file
>     > app,
>     > >>>>> but as soon as you start using modules, things may break.  So
> what
>     > should
>     > >>>>> we tell folks?
>     > >>>>>>
>     > >>>>>> A) if you use modules you must turn off minification in
> objects with
>     > >>>>> -js-dynamic-access
>     > >>>>>> B) here are some ways to hack your code so you can still rely
> on
>     > >>>>> minification
>     > >>>>>> C) something else?
>     > >>>>>>
>     > >>>>>> We can manually rename fields in ROYALE_CLASS_INFO and other
>     > >>>>> structures to make our code less readable in debug mode but
> save
>     > space in
>     > >>>>> release mode, but that does not solve the general case problem.
>     > Folks may
>     > >>>>> have other objects in their apps and modules that work until
> you add
>     > some
>     > >>>>> code to one of the projects that changes which object fields
> get
>     > renamed.
>     > >>>>>>
>     > >>>>>> -Alex
>     > >>>>>>
>     > >>>>>> On 12/11/18, 9:31 AM, "Harbs" <harbs.li...@gmail.com <mailto:
>     > harbs.li...@gmail.com>> wrote:
>     > >>>>>>
>     > >>>>>> I’m not following why this is the same point.
>     > >>>>>>
>     > >>>>>> I’m using -js-dynamic-access-unknown-members=true to handle
> this
>     > >>>>> kind of problem. It works flawlessly…
>     > >>>>>>
>     > >>>>>> I’d personally argue that true should be the default, but
> whether
>     > >>>>> the default is true or not, we do have an option to deal with
> these
>     > kinds
>     > >>>>> of data structures.
>     > >>>>>>
>     > >>>>>>> On Dec 11, 2018, at 6:39 PM, Alex Harui
> <aha...@adobe.com.INVALID
>     > <mailto:aha...@adobe.com.INVALID>>
>     > >>>>> wrote:
>     > >>>>>>>
>     > >>>>>>> Yes, we can use our own short names in code we generate, but
> that's
>     > >>>>> not really the point.
>     > >>>>>>>
>     > >>>>>>> The point is that any plain object field can be renamed
> based on
>     > >>>>> other code in the compile.  So if you just have:
>     > >>>>>>>
>     > >>>>>>> Var obj:Object = { harbs: 1};
>     > >>>>>>> Public static function foo()
>     > >>>>>>> {
>     > >>>>>>> Trace(obj.harbs);
>     > >>>>>>> }
>     > >>>>>>>
>     > >>>>>>> Use of foo() in one compile may result in harbs being
> renamed, and
>     > >>>>> another wouldn't.  And that poses a problem when data
> structures are
>     > shared
>     > >>>>> between compiled outputs.
>     > >>>>>>>
>     > >>>>>>> This is a natural way to write AS, but the JS results when
> minified
>     > >>>>> and shared between app and modules can fail.  So what
> restrictions
>     > should
>     > >>>>> we place if any on how folks use plain objects?
>     > >>>>>>>
>     > >>>>>>> HTH,
>     > >>>>>>> -Alex
>     > >>>>>>>
>     > >>>>>>> On 12/11/18, 7:36 AM, "Harbs" <harbs.li...@gmail.com
> <mailto:
>     > harbs.li...@gmail.com>> wrote:
>     > >>>>>>>
>     > >>>>>>> I was about to make the same suggestion. We can use “I” for
>     > >>>>> interfaces, “c” for class, “k” for kind, “n” for names. etc.
>     > >>>>>>>
>     > >>>>>>>> On Dec 11, 2018, at 2:52 PM, Frost, Andrew
>     > <andrew.fr...@harman.com <mailto:andrew.fr...@harman.com>>
>     > >>>>> wrote:
>     > >>>>>>>>
>     > >>>>>>>> Hi
>     > >>>>>>>>
>     > >>>>>>>> Not sure that I fully understand this but would a valid
> compromise
>     > >>>>> be something where the field name isn't renamed at all
>     > automatically, but
>     > >>>>> we just change it in the JS generation code to be "i" rather
> than
>     > >>>>> "interfaces", and update the Language is/as functions to work
> with
>     > this
>     > >>>>> property name? Not sure whether it would work and I don't know
>     > whether the
>     > >>>>> Reflection stuff would then need to change too, but if this is
> all
>     > in the
>     > >>>>> generated outputs and/or the framework's own code then it
> shouldn't
>     > be
>     > >>>>> something that the end user would bother about..
>     > >>>>>>>>
>     > >>>>>>>> thanks
>     > >>>>>>>>
>     > >>>>>>>> Andrew
>     > >>>>>>>>
>     > >>>>>>>>
>     > >>>>>>>> -----Original Message-----
>     > >>>>>>>> From: Alex Harui [mailto:aha...@adobe.com.INVALID <mailto:
>     > aha...@adobe.com.INVALID>]
>     > >>>>>>>> Sent: 11 December 2018 08:32
>     > >>>>>>>> To: dev@royale.apache.org <mailto:dev@royale.apache.org>
>     > >>>>>>>> Subject: [EXTERNAL] ROYALE_CLASS_INFO, renaming, modules,
> Objects
>     > >>>>>>>>
>     > >>>>>>>> I spent some time today trying to get Tour De Flex to run in
>     > >>>>> production mode with the main app and modules being separately
>     > minified.
>     > >>>>>>>>
>     > >>>>>>>> I've fixed a few things here and there, but an interesting
> issue I
>     > >>>>> ran into has to do with the plain object we use in
> ROYALE_CLASS_INFO
>     > (and
>     > >>>>> will apply to other objects).
>     > >>>>>>>>
>     > >>>>>>>> The ROYALE_CLASS_INFO is generated on each class and has a
> "names"
>     > >>>>> property and an optional "interfaces" property.  An example is:
>     > >>>>>>>>
>     > >>>>>>>>
>     > >>>>>
>     >
> org.apache.royale.html.beads.models.PanelModel.prototype.ROYALE_CLASS_INFO
>     > >>>>> = { names: [{ name: 'PanelModel', qName:
>     > >>>>> 'org.apache.royale.html.beads.models.PanelModel', kind:
> 'class' }],
>     > >>>>> interfaces: [org.apache.royale.core.IBead,
>     > >>>>> org.apache.royale.core.IPanelModel] };
>     > >>>>>>>>
>     > >>>>>>>> Because the field names are not quoted, then in most
> output, the
>     > >>>>> field name "interfaces" is renamed and all code referencing
> this
>     > field is
>     > >>>>> renamed as well.  This is good because it means that you don't
> have
>     > to
>     > >>>>> download the word "interfaces" once per-class. Instead of 10
>     > characters, it
>     > >>>>> is usually one or two.  100 classes saves you about 900 bytes.
>     > >>>>>>>>
>     > >>>>>>>> However, it turns out that in Tour De Flex, the main app
> uses
>     > >>>>> Reflection and Reflection uses a quoted 'interfaces' string and
>     > thus, the
>     > >>>>> field name 'interfaces' in ROYALE_CLASS_INFO isn't renamed,
> but in
>     > most
>     > >>>>> modules "interfaces" is renamed since no other code in the
> module
>     > has a
>     > >>>>> quoted string for 'interfaces'.  But that means that when a
> module
>     > loads,
>     > >>>>> the Language.is/as <
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flanguage.is%2Fas&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=o%2FC8K1KRrYdkwLuQfkLG3tU2AlVRLGlaShPm37U5p8s%3D&amp;reserved=0>
> won't work since classes
>     > in the main app are using
>     > >>>>> "interfaces" but the classes in the module are using some
> short name.
>     > >>>>>>>>
>     > >>>>>>>> One solution is to always quote that field in the compiler
> output
>     > >>>>> and Language is/as so it doesn't get renamed, but that means
> that
>     > field
>     > >>>>> will never get renamed and you lose saving those bytes.
>     > >>>>>>>>
>     > >>>>>>>> Another is let folks figure out their own workarounds, by
> adding
>     > >>>>> some code that will prevent the renaming in the modules.
>     > >>>>>>>>
>     > >>>>>>>> Other ideas are welcome.  I'm done for tonight.
>     > >>>>>>>>
>     > >>>>>>>> Thoughts?
>     > >>>>>>>> -Alex
>     > >>>>>>>>
>     > >>>>>>>
>     > >>>>>>>
>     > >>>>>>>
>     > >>>>>>
>     > >>>>>>
>     > >>>>>>
>     > >>>>>
>     > >>>>>
>     > >>>>>
>     > >>>>>
>     > >>>>
>     > >>>> --
>     > >>>> Carlos Rovira
>     > >>>>
>     >
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=MnCmCfYt2uepmueMxwDcMFE0Ah60sJxFa7Kg2wBTa00%3D&amp;reserved=0
>     > <
>     >
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=MnCmCfYt2uepmueMxwDcMFE0Ah60sJxFa7Kg2wBTa00%3D&amp;reserved=0
>     > ><
>     >
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=MnCmCfYt2uepmueMxwDcMFE0Ah60sJxFa7Kg2wBTa00%3D&amp;reserved=0
>     > <
>     >
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=MnCmCfYt2uepmueMxwDcMFE0Ah60sJxFa7Kg2wBTa00%3D&amp;reserved=0
>     > >>
>     >
>     >
>
>     --
>
>     <
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.codeoscopic.com&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=eT5WhToYF5NCxjWsGbIWaLx86wBOUDg%2B%2BCjgct9XJr4%3D&amp;reserved=0
> >
>
>     Carlos Rovira
>
>     Presidente Ejecutivo
>
>     M: +34 607 22 60 05
>
>
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.codeoscopic.com&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=eT5WhToYF5NCxjWsGbIWaLx86wBOUDg%2B%2BCjgct9XJr4%3D&amp;reserved=0
>
>
>     Conócenos en 1 minuto! <
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Favant2.es%2F%23video&amp;data=02%7C01%7Caharui%40adobe.com%7C4b2c1a1de33f4e2e61fa08d6601d7271%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636802076925078539&amp;sdata=HCsi5N6f87s7jX04eVfmVGT0J1IlGJ823VaKDSxHCbo%3D&amp;reserved=0
> >
>
>
>     AVISO LEGAL: La información contenida en este correo electrónico, y en
> su
>     caso en los documentos adjuntos, es información privilegiada para uso
>     exclusivo de la persona y/o personas a las que va dirigido. No está
>     permitido el acceso a este mensaje a cualquier otra persona distinta a
> los
>     indicados. Si Usted no es uno de los destinatarios, cualquier
> duplicación,
>     reproducción, distribución, así como cualquier uso de la información
>     contenida en él o cualquiera otra acción u omisión tomada en relación
> con
>     el mismo, está prohibida y puede ser ilegal. En dicho caso, por favor,
>     notifíquelo al remitente y proceda a la eliminación de este correo
>     electrónico, así como de sus adjuntos si los hubiere. En cumplimiento
> de la
>     legislación española vigente en materia de protección de datos de
> carácter
>     personal y del RGPD 679/2016 le informamos que sus datos están siendo
>     objeto de tratamiento por parte de CODEOSCOPIC S.A. con CIFA85677342,
> con
>     la finalidad del mantenimiento y gestión de relaciones comerciales y
>     administrativas. La base jurídica del tratamiento es el interés
> legítimo de
>     la empresa. No se prevén cesiones de sus datos, salvo que exista una
>     obligación legal. Para ejercitar sus derechos puede dirigirse a
> CODEOSCOPIC
>     S.A., domiciliada enPaseo de la Habana, 9-11, 28036 de Madrid
> (MADRID), o
>     bien por email a...@codeoscopic.com, con el fin de ejercer sus
> derechos de
>     acceso, rectificación, supresión (derecho al olvido), limitación de
>     tratamiento, portabilidad de los datos, oposición, y a no ser objeto de
>     decisiones automatizadas, indicando como Asunto: “Derechos Ley
> Protección
>     de Datos”, y adjuntando fotocopia de su DNI. Delegado de protección de
>     datos:d...@codeoscopic.com
>
>
>

-- 

<http://www.codeoscopic.com>

Carlos Rovira

Presidente Ejecutivo

M: +34 607 22 60 05

http://www.codeoscopic.com


Conócenos en 1 minuto! <https://avant2.es/#video>


AVISO LEGAL: La información contenida en este correo electrónico, y en su
caso en los documentos adjuntos, es información privilegiada para uso
exclusivo de la persona y/o personas a las que va dirigido. No está
permitido el acceso a este mensaje a cualquier otra persona distinta a los
indicados. Si Usted no es uno de los destinatarios, cualquier duplicación,
reproducción, distribución, así como cualquier uso de la información
contenida en él o cualquiera otra acción u omisión tomada en relación con
el mismo, está prohibida y puede ser ilegal. En dicho caso, por favor,
notifíquelo al remitente y proceda a la eliminación de este correo
electrónico, así como de sus adjuntos si los hubiere. En cumplimiento de la
legislación española vigente en materia de protección de datos de carácter
personal y del RGPD 679/2016 le informamos que sus datos están siendo
objeto de tratamiento por parte de CODEOSCOPIC S.A. con CIFA85677342, con
la finalidad del mantenimiento y gestión de relaciones comerciales y
administrativas. La base jurídica del tratamiento es el interés legítimo de
la empresa. No se prevén cesiones de sus datos, salvo que exista una
obligación legal. Para ejercitar sus derechos puede dirigirse a CODEOSCOPIC
S.A., domiciliada enPaseo de la Habana, 9-11, 28036 de Madrid (MADRID), o
bien por email a...@codeoscopic.com, con el fin de ejercer sus derechos de
acceso, rectificación, supresión (derecho al olvido), limitación de
tratamiento, portabilidad de los datos, oposición, y a no ser objeto de
decisiones automatizadas, indicando como Asunto: “Derechos Ley Protección
de Datos”, y adjuntando fotocopia de su DNI. Delegado de protección de
datos:d...@codeoscopic.com

Reply via email to