1/** 2 * Export mxFile as Vsdx file 3 */ 4function VsdxExport(editorUi) 5{ 6 var that = this; 7 8 var vsdxCanvas = new mxVsdxCanvas2D(); 9 10 var idsMap = {}; 11 var idsCounter = 1; 12 /** 13 * Fill the required files in vsdx format which are constants in our exporter 14 * @param zip JSZip of vsdx file 15 * @param pageCount The number of pages in the mxFile 16 */ 17 function createVsdxSkeleton(zip, pageCount) 18 { 19 var files = { 20 "[Content_Types].xml": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Types xmlns='http://schemas.openxmlformats.org/package/2006/content-types'><Default Extension='png' ContentType='image/png'/><Default Extension='jpg' ContentType='image/jpeg'/><Default Extension='jpeg' ContentType='image/jpeg'/><Default Extension='svg' ContentType='image/svg+xml'/><Default Extension='bmp' ContentType='image/bmp'/><Default Extension='gif' ContentType='image/gif'/><Default Extension='emf' ContentType='image/x-emf' /><Default Extension='rels' ContentType='application/vnd.openxmlformats-package.relationships+xml' /><Default Extension='xml' ContentType='application/xml' /><Override PartName='/docProps/app.xml' ContentType='application/vnd.openxmlformats-officedocument.extended-properties+xml' /><Override PartName='/docProps/core.xml' ContentType='application/vnd.openxmlformats-package.core-properties+xml' /><Override PartName='/docProps/custom.xml' ContentType='application/vnd.openxmlformats-officedocument.custom-properties+xml' /><Override PartName='/visio/document.xml' ContentType='application/vnd.ms-visio.drawing.main+xml' /><Override PartName='/visio/masters/masters.xml' ContentType='application/vnd.ms-visio.masters+xml' /><Override PartName='/visio/masters/master1.xml' ContentType='application/vnd.ms-visio.master+xml'/><Override PartName='/visio/pages/page1.xml' ContentType='application/vnd.ms-visio.page+xml' /><Override PartName='/visio/pages/pages.xml' ContentType='application/vnd.ms-visio.pages+xml' /><Override PartName='/visio/windows.xml' ContentType='application/vnd.ms-visio.windows+xml' /></Types>", 21 "_rels/.rels" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns='http://schemas.openxmlformats.org/package/2006/relationships'><Relationship Id='rId1' Type='http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties' Target='docProps/core.xml' /><Relationship Id='rId2' Type='http://schemas.microsoft.com/visio/2010/relationships/document' Target='visio/document.xml' /><Relationship Id='rId3' Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties' Target='docProps/custom.xml' /><Relationship Id='rId4' Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties' Target='docProps/app.xml' /></Relationships>", 22 "docProps/app.xml" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Properties xmlns='http://schemas.openxmlformats.org/officeDocument/2006/extended-properties' xmlns:vt='http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'><Application>Microsoft Visio</Application><AppVersion>15.0000</AppVersion><Template /><Manager /><Company /><HyperlinkBase /></Properties>", 23 "docProps/core.xml" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><cp:coreProperties xmlns:cp='http://schemas.openxmlformats.org/package/2006/metadata/core-properties' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:dcterms='http://purl.org/dc/terms/' xmlns:dcmitype='http://purl.org/dc/dcmitype/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><dc:title /><dc:subject /><dc:creator /><cp:keywords /><dc:description /><cp:category /><dc:language>en-US</dc:language></cp:coreProperties>", 24 "docProps/custom.xml" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Properties xmlns='http://schemas.openxmlformats.org/officeDocument/2006/custom-properties' xmlns:vt='http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes' />", 25 "visio/document.xml": "<?xml version='1.0' encoding='utf-8' ?><VisioDocument xmlns='http://schemas.microsoft.com/office/visio/2012/main' xmlns:r='http://schemas.openxmlformats.org/officeDocument/2006/relationships' xml:space='preserve'><DocumentSettings TopPage='0' DefaultTextStyle='3' DefaultLineStyle='3' DefaultFillStyle='3' DefaultGuideStyle='4'><GlueSettings>9</GlueSettings><SnapSettings>65847</SnapSettings><SnapExtensions>34</SnapExtensions><SnapAngles/><DynamicGridEnabled>1</DynamicGridEnabled><ProtectStyles>0</ProtectStyles><ProtectShapes>0</ProtectShapes><ProtectMasters>0</ProtectMasters><ProtectBkgnds>0</ProtectBkgnds></DocumentSettings><Colors><ColorEntry IX='24' RGB='#000000'/><ColorEntry IX='25' RGB='#FFFFFF'/><ColorEntry IX='26' RGB='#FF0000'/><ColorEntry IX='27' RGB='#00FF00'/><ColorEntry IX='28' RGB='#0000FF'/><ColorEntry IX='29' RGB='#FFFF00'/><ColorEntry IX='30' RGB='#FF00FF'/><ColorEntry IX='31' RGB='#00FFFF'/><ColorEntry IX='32' RGB='#800000'/><ColorEntry IX='33' RGB='#008000'/><ColorEntry IX='34' RGB='#000080'/><ColorEntry IX='35' RGB='#808000'/><ColorEntry IX='36' RGB='#800080'/><ColorEntry IX='37' RGB='#008080'/><ColorEntry IX='38' RGB='#C0C0C0'/><ColorEntry IX='39' RGB='#E6E6E6'/><ColorEntry IX='40' RGB='#CDCDCD'/><ColorEntry IX='41' RGB='#B3B3B3'/><ColorEntry IX='42' RGB='#9A9A9A'/><ColorEntry IX='43' RGB='#808080'/><ColorEntry IX='44' RGB='#666666'/><ColorEntry IX='45' RGB='#4D4D4D'/><ColorEntry IX='46' RGB='#333333'/><ColorEntry IX='47' RGB='#1A1A1A'/><ColorEntry IX='48' RGB='#7F7F7F'/><ColorEntry IX='49' RGB='#99004D'/><ColorEntry IX='50' RGB='#FF0080'/><ColorEntry IX='51' RGB='#CC0066'/></Colors><FaceNames><FaceName NameU='Calibri' UnicodeRanges='-536859905 -1073732485 9 0' CharSets='536871423 0' Panose='2 15 5 2 2 2 4 3 2 4' Flags='325'/></FaceNames><StyleSheets><StyleSheet ID='0' NameU='No Style' IsCustomNameU='1' Name='No Style' IsCustomName='1'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='0.01041666666666667'/><Cell N='LineColor' V='0'/><Cell N='LinePattern' V='1'/><Cell N='Rounding' V='0'/><Cell N='EndArrowSize' V='2'/><Cell N='BeginArrow' V='0'/><Cell N='EndArrow' V='0'/><Cell N='LineCap' V='0'/><Cell N='BeginArrowSize' V='2'/><Cell N='LineColorTrans' V='0'/><Cell N='CompoundType' V='0'/><Cell N='FillForegnd' V='1'/><Cell N='FillBkgnd' V='0'/><Cell N='FillPattern' V='1'/><Cell N='ShdwForegnd' V='0'/><Cell N='ShdwPattern' V='0'/><Cell N='FillForegndTrans' V='0'/><Cell N='FillBkgndTrans' V='0'/><Cell N='ShdwForegndTrans' V='0'/><Cell N='ShapeShdwType' V='0'/><Cell N='ShapeShdwOffsetX' V='0'/><Cell N='ShapeShdwOffsetY' V='0'/><Cell N='ShapeShdwObliqueAngle' V='0'/><Cell N='ShapeShdwScaleFactor' V='1'/><Cell N='ShapeShdwBlur' V='0'/><Cell N='ShapeShdwShow' V='0'/><Cell N='LeftMargin' V='0'/><Cell N='RightMargin' V='0'/><Cell N='TopMargin' V='0'/><Cell N='BottomMargin' V='0'/><Cell N='VerticalAlign' V='1'/><Cell N='TextBkgnd' V='0'/><Cell N='DefaultTabStop' V='0.5'/><Cell N='TextDirection' V='0'/><Cell N='TextBkgndTrans' V='0'/><Cell N='LockWidth' V='0'/><Cell N='LockHeight' V='0'/><Cell N='LockMoveX' V='0'/><Cell N='LockMoveY' V='0'/><Cell N='LockAspect' V='0'/><Cell N='LockDelete' V='0'/><Cell N='LockBegin' V='0'/><Cell N='LockEnd' V='0'/><Cell N='LockRotate' V='0'/><Cell N='LockCrop' V='0'/><Cell N='LockVtxEdit' V='0'/><Cell N='LockTextEdit' V='0'/><Cell N='LockFormat' V='0'/><Cell N='LockGroup' V='0'/><Cell N='LockCalcWH' V='0'/><Cell N='LockSelect' V='0'/><Cell N='LockCustProp' V='0'/><Cell N='LockFromGroupFormat' V='0'/><Cell N='LockThemeColors' V='0'/><Cell N='LockThemeEffects' V='0'/><Cell N='LockThemeConnectors' V='0'/><Cell N='LockThemeFonts' V='0'/><Cell N='LockThemeIndex' V='0'/><Cell N='LockReplace' V='0'/><Cell N='LockVariation' V='0'/><Cell N='NoObjHandles' V='0'/><Cell N='NonPrinting' V='0'/><Cell N='NoCtlHandles' V='0'/><Cell N='NoAlignBox' V='0'/><Cell N='UpdateAlignBox' V='0'/><Cell N='HideText' V='0'/><Cell N='DynFeedback' V='0'/><Cell N='GlueType' V='0'/><Cell N='WalkPreference' V='0'/><Cell N='BegTrigger' V='0' F='No Formula'/><Cell N='EndTrigger' V='0' F='No Formula'/><Cell N='ObjType' V='0'/><Cell N='Comment' V=''/><Cell N='IsDropSource' V='0'/><Cell N='NoLiveDynamics' V='0'/><Cell N='LocalizeMerge' V='0'/><Cell N='NoProofing' V='0'/><Cell N='Calendar' V='0'/><Cell N='LangID' V='en-US'/><Cell N='ShapeKeywords' V=''/><Cell N='DropOnPageScale' V='1'/><Cell N='TheData' V='0' F='No Formula'/><Cell N='TheText' V='0' F='No Formula'/><Cell N='EventDblClick' V='0' F='No Formula'/><Cell N='EventXFMod' V='0' F='No Formula'/><Cell N='EventDrop' V='0' F='No Formula'/><Cell N='EventMultiDrop' V='0' F='No Formula'/><Cell N='HelpTopic' V=''/><Cell N='Copyright' V=''/><Cell N='LayerMember' V=''/><Cell N='XRulerDensity' V='32'/><Cell N='YRulerDensity' V='32'/><Cell N='XRulerOrigin' V='0'/><Cell N='YRulerOrigin' V='0'/><Cell N='XGridDensity' V='8'/><Cell N='YGridDensity' V='8'/><Cell N='XGridSpacing' V='0'/><Cell N='YGridSpacing' V='0'/><Cell N='XGridOrigin' V='0'/><Cell N='YGridOrigin' V='0'/><Cell N='Gamma' V='1'/><Cell N='Contrast' V='0.5'/><Cell N='Brightness' V='0.5'/><Cell N='Sharpen' V='0'/><Cell N='Blur' V='0'/><Cell N='Denoise' V='0'/><Cell N='Transparency' V='0'/><Cell N='SelectMode' V='1'/><Cell N='DisplayMode' V='2'/><Cell N='IsDropTarget' V='0'/><Cell N='IsSnapTarget' V='1'/><Cell N='IsTextEditTarget' V='1'/><Cell N='DontMoveChildren' V='0'/><Cell N='ShapePermeableX' V='0'/><Cell N='ShapePermeableY' V='0'/><Cell N='ShapePermeablePlace' V='0'/><Cell N='Relationships' V='0'/><Cell N='ShapeFixedCode' V='0'/><Cell N='ShapePlowCode' V='0'/><Cell N='ShapeRouteStyle' V='0'/><Cell N='ShapePlaceStyle' V='0'/><Cell N='ConFixedCode' V='0'/><Cell N='ConLineJumpCode' V='0'/><Cell N='ConLineJumpStyle' V='0'/><Cell N='ConLineJumpDirX' V='0'/><Cell N='ConLineJumpDirY' V='0'/><Cell N='ShapePlaceFlip' V='0'/><Cell N='ConLineRouteExt' V='0'/><Cell N='ShapeSplit' V='0'/><Cell N='ShapeSplittable' V='0'/><Cell N='DisplayLevel' V='0'/><Cell N='ResizePage' V='0'/><Cell N='EnableGrid' V='0'/><Cell N='DynamicsOff' V='0'/><Cell N='CtrlAsInput' V='0'/><Cell N='AvoidPageBreaks' V='0'/><Cell N='PlaceStyle' V='0'/><Cell N='RouteStyle' V='0'/><Cell N='PlaceDepth' V='0'/><Cell N='PlowCode' V='0'/><Cell N='LineJumpCode' V='1'/><Cell N='LineJumpStyle' V='0'/><Cell N='PageLineJumpDirX' V='0'/><Cell N='PageLineJumpDirY' V='0'/><Cell N='LineToNodeX' V='0.125'/><Cell N='LineToNodeY' V='0.125'/><Cell N='BlockSizeX' V='0.25'/><Cell N='BlockSizeY' V='0.25'/><Cell N='AvenueSizeX' V='0.375'/><Cell N='AvenueSizeY' V='0.375'/><Cell N='LineToLineX' V='0.125'/><Cell N='LineToLineY' V='0.125'/><Cell N='LineJumpFactorX' V='0.66666666666667'/><Cell N='LineJumpFactorY' V='0.66666666666667'/><Cell N='LineAdjustFrom' V='0'/><Cell N='LineAdjustTo' V='0'/><Cell N='PlaceFlip' V='0'/><Cell N='LineRouteExt' V='0'/><Cell N='PageShapeSplit' V='0'/><Cell N='PageLeftMargin' V='0.25'/><Cell N='PageRightMargin' V='0.25'/><Cell N='PageTopMargin' V='0.25'/><Cell N='PageBottomMargin' V='0.25'/><Cell N='ScaleX' V='1'/><Cell N='ScaleY' V='1'/><Cell N='PagesX' V='1'/><Cell N='PagesY' V='1'/><Cell N='CenterX' V='0'/><Cell N='CenterY' V='0'/><Cell N='OnPage' V='0'/><Cell N='PrintGrid' V='0'/><Cell N='PrintPageOrientation' V='1'/><Cell N='PaperKind' V='1'/><Cell N='PaperSource' V='7'/><Cell N='QuickStyleLineColor' V='100'/><Cell N='QuickStyleFillColor' V='100'/><Cell N='QuickStyleShadowColor' V='100'/><Cell N='QuickStyleFontColor' V='100'/><Cell N='QuickStyleLineMatrix' V='100'/><Cell N='QuickStyleFillMatrix' V='100'/><Cell N='QuickStyleEffectsMatrix' V='100'/><Cell N='QuickStyleFontMatrix' V='100'/><Cell N='QuickStyleType' V='0'/><Cell N='QuickStyleVariation' V='0'/><Cell N='LineGradientDir' V='0'/><Cell N='LineGradientAngle' V='1.5707963267949'/><Cell N='FillGradientDir' V='0'/><Cell N='FillGradientAngle' V='1.5707963267949'/><Cell N='LineGradientEnabled' V='0'/><Cell N='FillGradientEnabled' V='0'/><Cell N='RotateGradientWithShape' V='1'/><Cell N='UseGroupGradient' V='0'/><Cell N='BevelTopType' V='0'/><Cell N='BevelTopWidth' V='0'/><Cell N='BevelTopHeight' V='0'/><Cell N='BevelBottomType' V='0'/><Cell N='BevelBottomWidth' V='0'/><Cell N='BevelBottomHeight' V='0'/><Cell N='BevelDepthColor' V='1'/><Cell N='BevelDepthSize' V='0'/><Cell N='BevelContourColor' V='0'/><Cell N='BevelContourSize' V='0'/><Cell N='BevelMaterialType' V='0'/><Cell N='BevelLightingType' V='0'/><Cell N='BevelLightingAngle' V='0'/><Cell N='RotationXAngle' V='0'/><Cell N='RotationYAngle' V='0'/><Cell N='RotationZAngle' V='0'/><Cell N='RotationType' V='0'/><Cell N='Perspective' V='0'/><Cell N='DistanceFromGround' V='0'/><Cell N='KeepTextFlat' V='0'/><Cell N='ReflectionTrans' V='0'/><Cell N='ReflectionSize' V='0'/><Cell N='ReflectionDist' V='0'/><Cell N='ReflectionBlur' V='0'/><Cell N='GlowColor' V='1'/><Cell N='GlowColorTrans' V='0'/><Cell N='GlowSize' V='0'/><Cell N='SoftEdgesSize' V='0'/><Cell N='SketchSeed' V='0'/><Cell N='SketchEnabled' V='0'/><Cell N='SketchAmount' V='5'/><Cell N='SketchLineWeight' V='0.04166666666666666' U='PT'/><Cell N='SketchLineChange' V='0.14'/><Cell N='SketchFillChange' V='0.1'/><Cell N='ColorSchemeIndex' V='0'/><Cell N='EffectSchemeIndex' V='0'/><Cell N='ConnectorSchemeIndex' V='0'/><Cell N='FontSchemeIndex' V='0'/><Cell N='ThemeIndex' V='0'/><Cell N='VariationColorIndex' V='0'/><Cell N='VariationStyleIndex' V='0'/><Cell N='EmbellishmentIndex' V='0'/><Cell N='ReplaceLockShapeData' V='0'/><Cell N='ReplaceLockText' V='0'/><Cell N='ReplaceLockFormat' V='0'/><Cell N='ReplaceCopyCells' V='0' U='BOOL' F='No Formula'/><Cell N='PageWidth' V='0' F='No Formula'/><Cell N='PageHeight' V='0' F='No Formula'/><Cell N='ShdwOffsetX' V='0' F='No Formula'/><Cell N='ShdwOffsetY' V='0' F='No Formula'/><Cell N='PageScale' V='0' U='IN_F' F='No Formula'/><Cell N='DrawingScale' V='0' U='IN_F' F='No Formula'/><Cell N='DrawingSizeType' V='0' F='No Formula'/><Cell N='DrawingScaleType' V='0' F='No Formula'/><Cell N='InhibitSnap' V='0' F='No Formula'/><Cell N='PageLockReplace' V='0' U='BOOL' F='No Formula'/><Cell N='PageLockDuplicate' V='0' U='BOOL' F='No Formula'/><Cell N='UIVisibility' V='0' F='No Formula'/><Cell N='ShdwType' V='0' F='No Formula'/><Cell N='ShdwObliqueAngle' V='0' F='No Formula'/><Cell N='ShdwScaleFactor' V='0' F='No Formula'/><Cell N='DrawingResizeType' V='0' F='No Formula'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Calibri'/><Cell N='Color' V='0'/><Cell N='Style' V='0'/><Cell N='Case' V='0'/><Cell N='Pos' V='0'/><Cell N='FontScale' V='1'/><Cell N='Size' V='0.1666666666666667'/><Cell N='DblUnderline' V='0'/><Cell N='Overline' V='0'/><Cell N='Strikethru' V='0'/><Cell N='DoubleStrikethrough' V='0'/><Cell N='Letterspace' V='0'/><Cell N='ColorTrans' V='0'/><Cell N='AsianFont' V='0'/><Cell N='ComplexScriptFont' V='0'/><Cell N='ComplexScriptSize' V='-1'/><Cell N='LangID' V='en-US'/></Row></Section><Section N='Paragraph'><Row IX='0'><Cell N='IndFirst' V='0'/><Cell N='IndLeft' V='0'/><Cell N='IndRight' V='0'/><Cell N='SpLine' V='-1.2'/><Cell N='SpBefore' V='0'/><Cell N='SpAfter' V='0'/><Cell N='HorzAlign' V='1'/><Cell N='Bullet' V='0'/><Cell N='BulletStr' V=''/><Cell N='BulletFont' V='0'/><Cell N='BulletFontSize' V='-1'/><Cell N='TextPosAfterBullet' V='0'/><Cell N='Flags' V='0'/></Row></Section><Section N='Tabs'><Row IX='0'/></Section><Section N='LineGradient'><Row IX='0'><Cell N='GradientStopColor' V='1'/><Cell N='GradientStopColorTrans' V='0'/><Cell N='GradientStopPosition' V='0'/></Row></Section><Section N='FillGradient'><Row IX='0'><Cell N='GradientStopColor' V='1'/><Cell N='GradientStopColorTrans' V='0'/><Cell N='GradientStopPosition' V='0'/></Row></Section></StyleSheet><StyleSheet ID='1' NameU='Text Only' IsCustomNameU='1' Name='Text Only' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='Themed' F='Inh'/><Cell N='LineColor' V='Themed' F='Inh'/><Cell N='LinePattern' V='Themed' F='Inh'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Cell N='FillForegnd' V='Themed' F='Inh'/><Cell N='FillBkgnd' V='Themed' F='Inh'/><Cell N='FillPattern' V='Themed' F='Inh'/><Cell N='ShdwForegnd' V='Themed' F='Inh'/><Cell N='ShdwPattern' V='Themed' F='Inh'/><Cell N='FillForegndTrans' V='Themed' F='Inh'/><Cell N='FillBkgndTrans' V='Themed' F='Inh'/><Cell N='ShdwForegndTrans' V='Themed' F='Inh'/><Cell N='ShapeShdwType' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetX' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetY' V='Themed' F='Inh'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='Inh'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='Inh'/><Cell N='ShapeShdwBlur' V='Themed' F='Inh'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LeftMargin' V='0'/><Cell N='RightMargin' V='0'/><Cell N='TopMargin' V='0'/><Cell N='BottomMargin' V='0'/><Cell N='VerticalAlign' V='0'/><Cell N='TextBkgnd' V='0'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='Inh'/><Cell N='LineGradientAngle' V='Themed' F='Inh'/><Cell N='FillGradientDir' V='Themed' F='Inh'/><Cell N='FillGradientAngle' V='Themed' F='Inh'/><Cell N='LineGradientEnabled' V='Themed' F='Inh'/><Cell N='FillGradientEnabled' V='Themed' F='Inh'/><Cell N='RotateGradientWithShape' V='Themed' F='Inh'/><Cell N='UseGroupGradient' V='Themed' F='Inh'/><Section N='Paragraph'><Row IX='0'><Cell N='IndFirst' V='0' F='Inh'/><Cell N='IndLeft' V='0' F='Inh'/><Cell N='IndRight' V='0' F='Inh'/><Cell N='SpLine' V='-1.2' F='Inh'/><Cell N='SpBefore' V='0' F='Inh'/><Cell N='SpAfter' V='0' F='Inh'/><Cell N='HorzAlign' V='0'/><Cell N='Bullet' V='0' F='Inh'/><Cell N='BulletStr' V='' F='Inh'/><Cell N='BulletFont' V='0' F='Inh'/><Cell N='BulletFontSize' V='-1' F='Inh'/><Cell N='TextPosAfterBullet' V='0' F='Inh'/><Cell N='Flags' V='0' F='Inh'/></Row></Section></StyleSheet><StyleSheet ID='2' NameU='None' IsCustomNameU='1' Name='None' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='Themed' F='Inh'/><Cell N='LineColor' V='Themed' F='Inh'/><Cell N='LinePattern' V='0'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Cell N='FillForegnd' V='Themed' F='Inh'/><Cell N='FillBkgnd' V='Themed' F='Inh'/><Cell N='FillPattern' V='0'/><Cell N='ShdwForegnd' V='Themed' F='Inh'/><Cell N='ShdwPattern' V='Themed' F='Inh'/><Cell N='FillForegndTrans' V='Themed' F='Inh'/><Cell N='FillBkgndTrans' V='Themed' F='Inh'/><Cell N='ShdwForegndTrans' V='Themed' F='Inh'/><Cell N='ShapeShdwType' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetX' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetY' V='Themed' F='Inh'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='Inh'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='Inh'/><Cell N='ShapeShdwBlur' V='Themed' F='Inh'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='Inh'/><Cell N='LineGradientAngle' V='Themed' F='Inh'/><Cell N='FillGradientDir' V='Themed' F='Inh'/><Cell N='FillGradientAngle' V='Themed' F='Inh'/><Cell N='LineGradientEnabled' V='0'/><Cell N='FillGradientEnabled' V='0'/><Cell N='RotateGradientWithShape' V='Themed' F='Inh'/><Cell N='UseGroupGradient' V='Themed' F='Inh'/><Cell N='QuickStyleLineColor' V='100' F='Inh'/><Cell N='QuickStyleFillColor' V='100' F='Inh'/><Cell N='QuickStyleShadowColor' V='100' F='Inh'/><Cell N='QuickStyleFontColor' V='100' F='Inh'/><Cell N='QuickStyleLineMatrix' V='100' F='Inh'/><Cell N='QuickStyleFillMatrix' V='100' F='Inh'/><Cell N='QuickStyleEffectsMatrix' V='0' F='GUARD(0)'/><Cell N='QuickStyleFontMatrix' V='100' F='Inh'/><Cell N='QuickStyleType' V='0' F='Inh'/><Cell N='QuickStyleVariation' V='2'/></StyleSheet><StyleSheet ID='3' NameU='Normal' IsCustomNameU='1' Name='Normal' IsCustomName='1' LineStyle='6' FillStyle='6' TextStyle='6'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LeftMargin' V='0.05555555555555555' U='PT'/><Cell N='RightMargin' V='0.05555555555555555' U='PT'/><Cell N='TopMargin' V='0.05555555555555555' U='PT'/><Cell N='BottomMargin' V='0.05555555555555555' U='PT'/><Cell N='VerticalAlign' V='1' F='Inh'/><Cell N='TextBkgnd' V='0' F='Inh'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/></StyleSheet><StyleSheet ID='4' NameU='Guide' IsCustomNameU='1' Name='Guide' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='0' U='PT'/><Cell N='LineColor' V='#7f7f7f'/><Cell N='LinePattern' V='23'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Cell N='FillForegnd' V='Themed' F='Inh'/><Cell N='FillBkgnd' V='Themed' F='Inh'/><Cell N='FillPattern' V='0'/><Cell N='ShdwForegnd' V='Themed' F='Inh'/><Cell N='ShdwPattern' V='Themed' F='Inh'/><Cell N='FillForegndTrans' V='Themed' F='Inh'/><Cell N='FillBkgndTrans' V='Themed' F='Inh'/><Cell N='ShdwForegndTrans' V='Themed' F='Inh'/><Cell N='ShapeShdwType' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetX' V='Themed' F='Inh'/><Cell N='ShapeShdwOffsetY' V='Themed' F='Inh'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='Inh'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='Inh'/><Cell N='ShapeShdwBlur' V='Themed' F='Inh'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='Inh'/><Cell N='LineGradientAngle' V='Themed' F='Inh'/><Cell N='FillGradientDir' V='Themed' F='Inh'/><Cell N='FillGradientAngle' V='Themed' F='Inh'/><Cell N='LineGradientEnabled' V='0'/><Cell N='FillGradientEnabled' V='0'/><Cell N='RotateGradientWithShape' V='Themed' F='Inh'/><Cell N='UseGroupGradient' V='Themed' F='Inh'/><Cell N='LeftMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='RightMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='TopMargin' V='0'/><Cell N='BottomMargin' V='0'/><Cell N='VerticalAlign' V='2'/><Cell N='TextBkgnd' V='0' F='Inh'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/><Cell N='NoObjHandles' V='0' F='Inh'/><Cell N='NonPrinting' V='1'/><Cell N='NoCtlHandles' V='0' F='Inh'/><Cell N='NoAlignBox' V='0' F='Inh'/><Cell N='UpdateAlignBox' V='0' F='Inh'/><Cell N='HideText' V='0' F='Inh'/><Cell N='DynFeedback' V='0' F='Inh'/><Cell N='GlueType' V='0' F='Inh'/><Cell N='WalkPreference' V='0' F='Inh'/><Cell N='BegTrigger' V='0' F='No Formula'/><Cell N='EndTrigger' V='0' F='No Formula'/><Cell N='ObjType' V='0' F='Inh'/><Cell N='Comment' V='' F='Inh'/><Cell N='IsDropSource' V='0' F='Inh'/><Cell N='NoLiveDynamics' V='0' F='Inh'/><Cell N='LocalizeMerge' V='0' F='Inh'/><Cell N='NoProofing' V='0' F='Inh'/><Cell N='Calendar' V='0' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/><Cell N='ShapeKeywords' V='' F='Inh'/><Cell N='DropOnPageScale' V='1' F='Inh'/><Cell N='ShapePermeableX' V='1'/><Cell N='ShapePermeableY' V='1'/><Cell N='ShapePermeablePlace' V='1'/><Cell N='Relationships' V='0' F='Inh'/><Cell N='ShapeFixedCode' V='0' F='Inh'/><Cell N='ShapePlowCode' V='0' F='Inh'/><Cell N='ShapeRouteStyle' V='0' F='Inh'/><Cell N='ShapePlaceStyle' V='0' F='Inh'/><Cell N='ConFixedCode' V='0' F='Inh'/><Cell N='ConLineJumpCode' V='0' F='Inh'/><Cell N='ConLineJumpStyle' V='0' F='Inh'/><Cell N='ConLineJumpDirX' V='0' F='Inh'/><Cell N='ConLineJumpDirY' V='0' F='Inh'/><Cell N='ShapePlaceFlip' V='0' F='Inh'/><Cell N='ConLineRouteExt' V='0' F='Inh'/><Cell N='ShapeSplit' V='0' F='Inh'/><Cell N='ShapeSplittable' V='0' F='Inh'/><Cell N='DisplayLevel' V='0' F='Inh'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Themed' F='Inh'/><Cell N='Color' V='4'/><Cell N='Style' V='Themed' F='Inh'/><Cell N='Case' V='0' F='Inh'/><Cell N='Pos' V='0' F='Inh'/><Cell N='FontScale' V='1' F='Inh'/><Cell N='Size' V='0.125'/><Cell N='DblUnderline' V='0' F='Inh'/><Cell N='Overline' V='0' F='Inh'/><Cell N='Strikethru' V='0' F='Inh'/><Cell N='DoubleStrikethrough' V='0' F='Inh'/><Cell N='Letterspace' V='0' F='Inh'/><Cell N='ColorTrans' V='0' F='Inh'/><Cell N='AsianFont' V='Themed' F='Inh'/><Cell N='ComplexScriptFont' V='Themed' F='Inh'/><Cell N='ComplexScriptSize' V='-1' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/></Row></Section></StyleSheet><StyleSheet ID='6' NameU='Theme' IsCustomNameU='1' Name='Theme' IsCustomName='1' LineStyle='0' FillStyle='0' TextStyle='0'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LineWeight' V='Themed' F='THEMEVAL()'/><Cell N='LineColor' V='Themed' F='THEMEVAL()'/><Cell N='LinePattern' V='Themed' F='THEMEVAL()'/><Cell N='Rounding' V='Themed' F='THEMEVAL()'/><Cell N='EndArrowSize' V='2' F='Inh'/><Cell N='BeginArrow' V='0' F='Inh'/><Cell N='EndArrow' V='0' F='Inh'/><Cell N='LineCap' V='Themed' F='THEMEVAL()'/><Cell N='BeginArrowSize' V='2' F='Inh'/><Cell N='LineColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='CompoundType' V='Themed' F='THEMEVAL()'/><Cell N='FillForegnd' V='Themed' F='THEMEVAL()'/><Cell N='FillBkgnd' V='Themed' F='THEMEVAL()'/><Cell N='FillPattern' V='Themed' F='THEMEVAL()'/><Cell N='ShdwForegnd' V='Themed' F='THEMEVAL()'/><Cell N='ShdwPattern' V='Themed' F='THEMEVAL()'/><Cell N='FillForegndTrans' V='Themed' F='THEMEVAL()'/><Cell N='FillBkgndTrans' V='Themed' F='THEMEVAL()'/><Cell N='ShdwForegndTrans' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwType' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwOffsetX' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwOffsetY' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwObliqueAngle' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwScaleFactor' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwBlur' V='Themed' F='THEMEVAL()'/><Cell N='ShapeShdwShow' V='0' F='Inh'/><Cell N='LineGradientDir' V='Themed' F='THEMEVAL()'/><Cell N='LineGradientAngle' V='Themed' F='THEMEVAL()'/><Cell N='FillGradientDir' V='Themed' F='THEMEVAL()'/><Cell N='FillGradientAngle' V='Themed' F='THEMEVAL()'/><Cell N='LineGradientEnabled' V='Themed' F='THEMEVAL()'/><Cell N='FillGradientEnabled' V='Themed' F='THEMEVAL()'/><Cell N='RotateGradientWithShape' V='Themed' F='THEMEVAL()'/><Cell N='UseGroupGradient' V='Themed' F='THEMEVAL()'/><Cell N='BevelTopType' V='Themed' F='THEMEVAL()'/><Cell N='BevelTopWidth' V='Themed' F='THEMEVAL()'/><Cell N='BevelTopHeight' V='Themed' F='THEMEVAL()'/><Cell N='BevelBottomType' V='0' F='Inh'/><Cell N='BevelBottomWidth' V='0' F='Inh'/><Cell N='BevelBottomHeight' V='0' F='Inh'/><Cell N='BevelDepthColor' V='1' F='Inh'/><Cell N='BevelDepthSize' V='0' F='Inh'/><Cell N='BevelContourColor' V='Themed' F='THEMEVAL()'/><Cell N='BevelContourSize' V='Themed' F='THEMEVAL()'/><Cell N='BevelMaterialType' V='Themed' F='THEMEVAL()'/><Cell N='BevelLightingType' V='Themed' F='THEMEVAL()'/><Cell N='BevelLightingAngle' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionTrans' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionSize' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionDist' V='Themed' F='THEMEVAL()'/><Cell N='ReflectionBlur' V='Themed' F='THEMEVAL()'/><Cell N='GlowColor' V='Themed' F='THEMEVAL()'/><Cell N='GlowColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GlowSize' V='Themed' F='THEMEVAL()'/><Cell N='SoftEdgesSize' V='Themed' F='THEMEVAL()'/><Cell N='SketchSeed' V='0' F='Inh'/><Cell N='SketchEnabled' V='Themed' F='THEMEVAL()'/><Cell N='SketchAmount' V='Themed' F='THEMEVAL()'/><Cell N='SketchLineWeight' V='Themed' F='THEMEVAL()'/><Cell N='SketchLineChange' V='Themed' F='THEMEVAL()'/><Cell N='SketchFillChange' V='Themed' F='THEMEVAL()'/><Cell N='QuickStyleLineColor' V='100'/><Cell N='QuickStyleFillColor' V='100'/><Cell N='QuickStyleShadowColor' V='100'/><Cell N='QuickStyleFontColor' V='100'/><Cell N='QuickStyleLineMatrix' V='100'/><Cell N='QuickStyleFillMatrix' V='100'/><Cell N='QuickStyleEffectsMatrix' V='100'/><Cell N='QuickStyleFontMatrix' V='100'/><Cell N='QuickStyleType' V='0' F='Inh'/><Cell N='QuickStyleVariation' V='0' F='Inh'/><Cell N='ColorSchemeIndex' V='65534'/><Cell N='EffectSchemeIndex' V='65534'/><Cell N='ConnectorSchemeIndex' V='65534'/><Cell N='FontSchemeIndex' V='65534'/><Cell N='ThemeIndex' V='65534'/><Cell N='VariationColorIndex' V='65534'/><Cell N='VariationStyleIndex' V='65534'/><Cell N='EmbellishmentIndex' V='65534'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Themed' F='THEMEVAL()'/><Cell N='Color' V='Themed' F='THEMEVAL()'/><Cell N='Style' V='Themed' F='THEMEVAL()'/><Cell N='Case' V='0' F='Inh'/><Cell N='Pos' V='0' F='Inh'/><Cell N='FontScale' V='1' F='Inh'/><Cell N='Size' V='0.1666666666666667' F='Inh'/><Cell N='DblUnderline' V='0' F='Inh'/><Cell N='Overline' V='0' F='Inh'/><Cell N='Strikethru' V='0' F='Inh'/><Cell N='DoubleStrikethrough' V='0' F='Inh'/><Cell N='Letterspace' V='0' F='Inh'/><Cell N='ColorTrans' V='0' F='Inh'/><Cell N='AsianFont' V='Themed' F='THEMEVAL()'/><Cell N='ComplexScriptFont' V='Themed' F='THEMEVAL()'/><Cell N='ComplexScriptSize' V='-1' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/></Row></Section><Section N='FillGradient'><Row IX='0'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='1'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='2'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='3'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='4'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='5'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='6'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='7'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='8'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='9'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row></Section><Section N='LineGradient'><Row IX='0'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='1'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='2'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='3'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='4'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='5'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='6'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='7'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='8'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row><Row IX='9'><Cell N='GradientStopColor' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopColorTrans' V='Themed' F='THEMEVAL()'/><Cell N='GradientStopPosition' V='Themed' F='THEMEVAL()'/></Row></Section></StyleSheet><StyleSheet ID='7' NameU='Connector' IsCustomNameU='1' Name='Connector' IsCustomName='1' LineStyle='3' FillStyle='3' TextStyle='3'><Cell N='EnableLineProps' V='1'/><Cell N='EnableFillProps' V='1'/><Cell N='EnableTextProps' V='1'/><Cell N='HideForApply' V='0'/><Cell N='LeftMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='RightMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='TopMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='BottomMargin' V='0.05555555555555555' U='PT' F='Inh'/><Cell N='VerticalAlign' V='1' F='Inh'/><Cell N='TextBkgnd' V='#ffffff' F='THEMEGUARD(THEMEVAL(\"BackgroundColor\")+1)'/><Cell N='DefaultTabStop' V='0.5' F='Inh'/><Cell N='TextDirection' V='0' F='Inh'/><Cell N='TextBkgndTrans' V='0' F='Inh'/><Cell N='NoObjHandles' V='0' F='Inh'/><Cell N='NonPrinting' V='0' F='Inh'/><Cell N='NoCtlHandles' V='0' F='Inh'/><Cell N='NoAlignBox' V='0' F='Inh'/><Cell N='UpdateAlignBox' V='0' F='Inh'/><Cell N='HideText' V='0' F='Inh'/><Cell N='DynFeedback' V='0' F='Inh'/><Cell N='GlueType' V='0' F='Inh'/><Cell N='WalkPreference' V='0' F='Inh'/><Cell N='BegTrigger' V='0' F='No Formula'/><Cell N='EndTrigger' V='0' F='No Formula'/><Cell N='ObjType' V='0' F='Inh'/><Cell N='Comment' V='' F='Inh'/><Cell N='IsDropSource' V='0' F='Inh'/><Cell N='NoLiveDynamics' V='0' F='Inh'/><Cell N='LocalizeMerge' V='0' F='Inh'/><Cell N='NoProofing' V='0' F='Inh'/><Cell N='Calendar' V='0' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/><Cell N='ShapeKeywords' V='' F='Inh'/><Cell N='DropOnPageScale' V='1' F='Inh'/><Cell N='QuickStyleLineColor' V='100'/><Cell N='QuickStyleFillColor' V='100'/><Cell N='QuickStyleShadowColor' V='100'/><Cell N='QuickStyleFontColor' V='100'/><Cell N='QuickStyleLineMatrix' V='1'/><Cell N='QuickStyleFillMatrix' V='1'/><Cell N='QuickStyleEffectsMatrix' V='1'/><Cell N='QuickStyleFontMatrix' V='1'/><Cell N='QuickStyleType' V='0'/><Cell N='QuickStyleVariation' V='0'/><Cell N='LineWeight' V='Themed' F='Inh'/><Cell N='LineColor' V='Themed' F='Inh'/><Cell N='LinePattern' V='Themed' F='Inh'/><Cell N='Rounding' V='Themed' F='Inh'/><Cell N='EndArrowSize' V='Themed' F='THEMEVAL()'/><Cell N='BeginArrow' V='Themed' F='THEMEVAL()'/><Cell N='EndArrow' V='Themed' F='THEMEVAL()'/><Cell N='LineCap' V='Themed' F='Inh'/><Cell N='BeginArrowSize' V='Themed' F='THEMEVAL()'/><Cell N='LineColorTrans' V='Themed' F='Inh'/><Cell N='CompoundType' V='Themed' F='Inh'/><Section N='Character'><Row IX='0'><Cell N='Font' V='Themed' F='Inh'/><Cell N='Color' V='Themed' F='Inh'/><Cell N='Style' V='Themed' F='Inh'/><Cell N='Case' V='0' F='Inh'/><Cell N='Pos' V='0' F='Inh'/><Cell N='FontScale' V='1' F='Inh'/><Cell N='Size' V='0.1111111111111111'/><Cell N='DblUnderline' V='0' F='Inh'/><Cell N='Overline' V='0' F='Inh'/><Cell N='Strikethru' V='0' F='Inh'/><Cell N='DoubleStrikethrough' V='0' F='Inh'/><Cell N='Letterspace' V='0' F='Inh'/><Cell N='ColorTrans' V='0' F='Inh'/><Cell N='AsianFont' V='Themed' F='Inh'/><Cell N='ComplexScriptFont' V='Themed' F='Inh'/><Cell N='ComplexScriptSize' V='-1' F='Inh'/><Cell N='LangID' V='en-US' F='Inh'/></Row></Section></StyleSheet></StyleSheets><DocumentSheet NameU='TheDoc' IsCustomNameU='1' Name='TheDoc' IsCustomName='1' LineStyle='0' FillStyle='0' TextStyle='0'><Cell N='OutputFormat' V='0'/><Cell N='LockPreview' V='0'/><Cell N='AddMarkup' V='0'/><Cell N='ViewMarkup' V='0'/><Cell N='DocLockReplace' V='0' U='BOOL'/><Cell N='NoCoauth' V='0' U='BOOL'/><Cell N='DocLockDuplicatePage' V='0' U='BOOL'/><Cell N='PreviewQuality' V='0'/><Cell N='PreviewScope' V='0'/><Cell N='DocLangID' V='en-US'/><Section N='User'><Row N='msvNoAutoConnect'><Cell N='Value' V='1'/><Cell N='Prompt' V='' F='No Formula'/></Row></Section></DocumentSheet></VisioDocument>", 26 "visio/windows.xml" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Windows ClientWidth='0' ClientHeight='0' xmlns='http://schemas.microsoft.com/office/visio/2012/main' xmlns:r='http://schemas.openxmlformats.org/officeDocument/2006/relationships' xml:space='preserve' />", 27 "visio/_rels/document.xml.rels" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns='http://schemas.openxmlformats.org/package/2006/relationships'><Relationship Id='rId1' Type='http://schemas.microsoft.com/visio/2010/relationships/masters' Target='masters/masters.xml' /><Relationship Id='rId2' Type='http://schemas.microsoft.com/visio/2010/relationships/pages' Target='pages/pages.xml' /><Relationship Id='rId3' Type='http://schemas.microsoft.com/visio/2010/relationships/windows' Target='windows.xml' /></Relationships>", 28 "visio/masters/_rels/masters.xml.rels" : '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.microsoft.com/visio/2010/relationships/master" Target="master1.xml"/></Relationships>', 29 "visio/masters/masters.xml" : "<?xml version='1.0' encoding='utf-8' ?><Masters xmlns='http://schemas.microsoft.com/office/visio/2012/main' xmlns:r='http://schemas.openxmlformats.org/officeDocument/2006/relationships' xml:space='preserve'><Master ID='4' NameU='Dynamic connector' IsCustomNameU='1' Name='Dynamic connector' IsCustomName='1' Prompt='This connector automatically routes between the shapes it connects.' IconSize='1' AlignName='2' MatchByName='1' IconUpdate='0' UniqueID='{002A9108-0000-0000-8E40-00608CF305B2}' BaseID='{F7290A45-E3AD-11D2-AE4F-006008C9F5A9}' PatternFlags='0' Hidden='0' MasterType='0'><PageSheet LineStyle='0' FillStyle='0' TextStyle='0'><Cell N='PageWidth' V='3'/><Cell N='PageHeight' V='3'/><Cell N='ShdwOffsetX' V='0.125'/><Cell N='ShdwOffsetY' V='-0.125'/><Cell N='PageScale' V='1' U='IN_F'/><Cell N='DrawingScale' V='1' U='IN_F'/><Cell N='DrawingSizeType' V='4'/><Cell N='DrawingScaleType' V='0'/><Cell N='InhibitSnap' V='0'/><Cell N='PageLockReplace' V='0' U='BOOL'/><Cell N='PageLockDuplicate' V='0' U='BOOL'/><Cell N='UIVisibility' V='0'/><Cell N='ShdwType' V='0'/><Cell N='ShdwObliqueAngle' V='0'/><Cell N='ShdwScaleFactor' V='1'/><Cell N='DrawingResizeType' V='0'/><Section N='Layer'><Row IX='0'><Cell N='Name' V='Connector'/><Cell N='Color' V='255'/><Cell N='Status' V='0'/><Cell N='Visible' V='1'/><Cell N='Print' V='1'/><Cell N='Active' V='0'/><Cell N='Lock' V='0'/><Cell N='Snap' V='1'/><Cell N='Glue' V='1'/><Cell N='NameUniv' V='Connector'/><Cell N='ColorTrans' V='0'/></Row></Section></PageSheet><Rel r:id='rId1'/></Master></Masters>", 30 "visio/masters/master1.xml" : "<?xml version='1.0' encoding='utf-8' ?><MasterContents xmlns='http://schemas.microsoft.com/office/visio/2012/main' xmlns:r='http://schemas.openxmlformats.org/officeDocument/2006/relationships' xml:space='preserve'><Shapes><Shape ID='5' OriginalID='0' Type='Shape' LineStyle='7' FillStyle='7' TextStyle='7'><Cell N='PinX' V='1.5' F='GUARD((BeginX+EndX)/2)'/><Cell N='PinY' V='1.5' F='GUARD((BeginY+EndY)/2)'/><Cell N='Width' V='1' F='GUARD(EndX-BeginX)'/><Cell N='Height' V='-1' F='GUARD(EndY-BeginY)'/><Cell N='LocPinX' V='0.5' F='GUARD(Width*0.5)'/><Cell N='LocPinY' V='-0.5' F='GUARD(Height*0.5)'/><Cell N='Angle' V='0' F='GUARD(0DA)'/><Cell N='FlipX' V='0' F='GUARD(FALSE)'/><Cell N='FlipY' V='0' F='GUARD(FALSE)'/><Cell N='ResizeMode' V='0'/><Cell N='BeginX' V='1'/><Cell N='BeginY' V='2'/><Cell N='EndX' V='2'/><Cell N='EndY' V='1'/><Cell N='TxtPinX' V='0' F='SETATREF(Controls.TextPosition)'/><Cell N='TxtPinY' V='-1' F='SETATREF(Controls.TextPosition.Y)'/><Cell N='TxtWidth' V='0.5555555555555556' F='MAX(TEXTWIDTH(TheText),5*Char.Size)'/><Cell N='TxtHeight' V='0.2444444444444444' F='TEXTHEIGHT(TheText,TxtWidth)'/><Cell N='TxtLocPinX' V='0.2777777777777778' F='TxtWidth*0.5'/><Cell N='TxtLocPinY' V='0.1222222222222222' F='TxtHeight*0.5'/><Cell N='TxtAngle' V='0'/><Cell N='LockHeight' V='1'/><Cell N='LockCalcWH' V='1'/><Cell N='HelpTopic' V='Vis_SE.chm!#20000'/><Cell N='Copyright' V='Copyright 2001 Microsoft Corporation. All rights reserved.'/><Cell N='NoAlignBox' V='1'/><Cell N='DynFeedback' V='2'/><Cell N='GlueType' V='2'/><Cell N='ObjType' V='2'/><Cell N='NoLiveDynamics' V='1'/><Cell N='ShapeSplittable' V='1'/><Cell N='LayerMember' V='0'/><Section N='Control'><Row N='TextPosition'><Cell N='X' V='0'/><Cell N='Y' V='-1'/><Cell N='XDyn' V='0' F='Controls.TextPosition'/><Cell N='YDyn' V='-1' F='Controls.TextPosition.Y'/><Cell N='XCon' V='5' F='IF(OR(STRSAME(SHAPETEXT(TheText),\"\"),HideText),5,0)'/><Cell N='YCon' V='0'/><Cell N='CanGlue' V='0'/><Cell N='Prompt' V='Reposition Text'/></Row></Section><Section N='Geometry' IX='0'><Cell N='NoFill' V='1'/><Cell N='NoLine' V='0'/><Cell N='NoShow' V='0'/><Cell N='NoSnap' V='0'/><Cell N='NoQuickDrag' V='0'/><Row T='MoveTo' IX='1'><Cell N='X' V='0'/><Cell N='Y' V='0'/></Row><Row T='LineTo' IX='2'><Cell N='X' V='0'/><Cell N='Y' V='-1'/></Row></Section></Shape></Shapes></MasterContents>" 31 }; 32 33 for (var id in files) 34 { 35 if (pageCount > 1 && id == that.CONTENT_TYPES_XML) 36 { 37 //Add the remaining pages 38 var doc = mxUtils.parseXml(files[id]); 39 var root = doc.documentElement; 40 41 var children = root.children; 42 var page1 = null; 43 44 for (var i = 0; i < children.length; i++) 45 { 46 var child = children[i]; 47 if ("/visio/pages/page1.xml" == child.getAttribute(that.PART_NAME)) 48 { 49 page1 = child; 50 } 51 } 52 53 for (var i = 2; i <= pageCount; i++) 54 { 55 var newPage = page1.cloneNode(); 56 newPage.setAttribute(that.PART_NAME, "/visio/pages/page" + i + ".xml"); 57 root.appendChild(newPage); 58 } 59 60 writeXmlDoc2Zip(zip, id, doc, true); 61 } 62 else 63 { 64 zip.file(id, files[id]); 65 } 66 } 67 }; 68 69 function createElt(doc, ns, name) 70 { 71 return (doc.createElementNS != null) ? doc.createElementNS(ns, name) : doc.createElement(name); 72 }; 73 74 function getCellVsdxId(cellId) 75 { 76 var vsdxId = idsMap[cellId]; 77 78 if (vsdxId == null) 79 { 80 vsdxId = idsCounter++; 81 idsMap[cellId] = vsdxId; 82 } 83 return vsdxId; 84 }; 85 86 function getGraphAttributes(graph) 87 { 88 var attr = {}; 89 90 try 91 { 92 //This doesn't work when pageView is off 93// // Computes the horizontal and vertical page count 94// var bounds = graph.getGraphBounds(); 95// var sc = graph.view.scale; 96// var bgBounds = graph.view.getBackgroundPageBounds(); 97// 98// var x0 = Math.round((bounds.x - bgBounds.x) / sc); 99// var y0 = Math.round((bounds.y - bgBounds.y) / sc); 100// 101// var hpages = Math.max(1, Math.ceil((bounds.width / sc + x0) / graph.pageFormat.width)); 102// var vpages = Math.max(1, Math.ceil((bounds.height / sc + y0) / graph.pageFormat.height)); 103 104 // Computes the horizontal and vertical page count 105 var bounds = graph.getGraphBounds().clone(); 106 var sc = graph.view.scale; 107 var tr = graph.view.translate; 108 109 var x0 = Math.round(bounds.x / sc) - tr.x; 110 var y0 = Math.round(bounds.y / sc) - tr.y; 111 112 // Store the available page area 113 var availableWidth = graph.pageFormat.width; 114 var availableHeight = graph.pageFormat.height; 115 116 if (x0 < 0) 117 { 118 x0 += Math.ceil((tr.x - bounds.x / sc) / availableWidth) * availableWidth; 119 } 120 121 if (y0 < 0) 122 { 123 y0 += Math.ceil((tr.y - bounds.y / sc) / availableHeight) * availableHeight; 124 } 125 126 var hpages = Math.max(1, Math.ceil((bounds.width / sc + x0) / availableWidth)); 127 var vpages = Math.max(1, Math.ceil((bounds.height / sc + y0) / availableHeight)); 128 129 attr['gridEnabled'] = graph.gridEnabled; 130 attr['gridSize'] = graph.gridSize; 131 attr['guidesEnabled'] = graph.graphHandler.guidesEnabled 132 attr['pageVisible'] = graph.pageVisible; 133 attr['pageScale'] = graph.pageScale; 134 attr['pageWidth'] = graph.pageFormat.width * hpages; 135 attr['pageHeight'] = graph.pageFormat.height * vpages; 136 attr['backgroundClr'] = graph.background; 137 attr['mathEnabled'] = graph.mathEnabled; 138 attr['shadowVisible'] = graph.shadowVisible; 139 } 140 catch(e) 141 { 142 //nothing 143 } 144 return attr; 145 }; 146 147 function createCellElemScaled(name, val, xmlDoc, formula) 148 { 149 return createCellElem(name, val / that.CONVERSION_FACTOR, xmlDoc, formula); 150 }; 151 152 function createCellElem(name, val, xmlDoc, formula) 153 { 154 var cell = createElt(xmlDoc, that.XMLNS, "Cell"); 155 cell.setAttribute("N", name); 156 cell.setAttribute("V", val); 157 158 if (formula) cell.setAttribute("F", formula); 159 160 return cell; 161 }; 162 163 function createRow(type, index, x, y, xmlDoc) 164 { 165 var row = createElt(xmlDoc, that.XMLNS, "Row"); 166 row.setAttribute("T", type); 167 row.setAttribute("IX", index); 168 row.appendChild(createCellElemScaled("X", x, xmlDoc)); 169 row.appendChild(createCellElemScaled("Y", y, xmlDoc)); 170 return row; 171 }; 172 173 function applyMxCellStyle(state, shape, xmlDoc) 174 { 175 var fillClr = state.style[mxConstants.STYLE_FILLCOLOR]; 176 177 if (!fillClr || fillClr == "none") 178 { 179 shape.appendChild(createCellElem("FillPattern", 0, xmlDoc)); 180 } 181 else 182 { 183 shape.appendChild(createCellElem("FillForegnd", fillClr, xmlDoc)); 184 var gradClr = state.style[mxConstants.STYLE_GRADIENTCOLOR]; 185 186 if (gradClr && gradClr != "none") 187 { 188 shape.appendChild(createCellElem("FillBkgnd", gradClr, xmlDoc)); 189 190 var gradDir = state.style[mxConstants.STYLE_GRADIENT_DIRECTION]; 191 var dir = 28; 192 193 if (gradDir) 194 { 195 switch(gradDir) 196 { 197 case mxConstants.DIRECTION_EAST: 198 dir = 25; 199 break 200 case mxConstants.DIRECTION_WEST: 201 dir = 27; 202 break 203 case mxConstants.DIRECTION_NORTH: 204 dir = 30; 205 break 206 } 207 } 208 shape.appendChild(createCellElem("FillPattern", dir, xmlDoc)); 209 } 210 } 211 212 var strokeClr = state.style[mxConstants.STYLE_STROKECOLOR]; 213 214 if (!strokeClr || strokeClr == "none") 215 shape.appendChild(createCellElem("LinePattern", 0, xmlDoc)); 216 else 217 shape.appendChild(createCellElem("LineColor", strokeClr, xmlDoc)); 218 219 var strokeW = state.style[mxConstants.STYLE_STROKEWIDTH]; 220 if (strokeW) shape.appendChild(createCellElemScaled("LineWeight", strokeW, xmlDoc)); 221 222 223 var opacity = state.style[mxConstants.STYLE_OPACITY]; 224 var fillOpaq; 225 var strkOpaq; 226 227 if (opacity) 228 { 229 fillOpaq = opacity; 230 strkOpaq = opacity; 231 } 232 else 233 { 234 fillOpaq = state.style[mxConstants.STYLE_FILL_OPACITY]; 235 strkOpaq = state.style[mxConstants.STYLE_STROKE_OPACITY]; 236 } 237 238 if (fillOpaq) shape.appendChild(createCellElem("FillForegndTrans", 1 - parseInt(fillOpaq)/100.0, xmlDoc)); 239 if (strkOpaq) shape.appendChild(createCellElem("LineColorTrans", 1 - parseInt(strkOpaq)/100.0, xmlDoc)); 240 241 var isDashed = state.style[mxConstants.STYLE_DASHED]; 242 243 if (isDashed == 1) 244 { 245 var dashPatrn = state.style[mxConstants.STYLE_DASH_PATTERN]; 246 var pattern = 9 247 248 if (dashPatrn) 249 { 250 //We only support the patterns of draw.io UI 251 switch(dashPatrn) 252 { 253 case "1 1": 254 pattern = 10; 255 break; 256 case "1 2": 257 pattern = 3; 258 break; 259 case "1 4": 260 pattern = 17; 261 break; 262 } 263 } 264 265 shape.appendChild(createCellElem("LinePattern", pattern, xmlDoc)); 266 } 267 268 var hasShadow = state.style[mxConstants.STYLE_SHADOW]; 269 270 if (hasShadow == 1) 271 { 272 shape.appendChild(createCellElem("ShdwPattern", 1, xmlDoc)); 273 shape.appendChild(createCellElem("ShdwForegnd", '#000000', xmlDoc)); 274 shape.appendChild(createCellElem("ShdwForegndTrans", 0.6, xmlDoc)); 275 shape.appendChild(createCellElem("ShapeShdwType", 1, xmlDoc)); 276 shape.appendChild(createCellElem("ShapeShdwOffsetX", '0.02946278254943948', xmlDoc)); 277 shape.appendChild(createCellElem("ShapeShdwOffsetY", '-0.02946278254943948', xmlDoc)); 278 shape.appendChild(createCellElem("ShapeShdwScaleFactor", '1', xmlDoc)); 279 shape.appendChild(createCellElem("ShapeShdwBlur", '0.05555555555555555', xmlDoc)); 280 shape.appendChild(createCellElem("ShapeShdwShow", 2, xmlDoc)); 281 } 282 283 //Probably we don't need margins as the canvas get the modified position? 284 /* 285 var topMargin = state.style[mxConstants.STYLE_SPACING_TOP]; 286 if (topMargin) shape.appendChild(createCellElemScaled("TopMargin", parseFloat(topMargin) * 2 + 2.8 , xmlDoc)); 287 288/* //Defines label bottom spacing 289 double bottomMargin = getBottomSpacing() * 100/100; 290 291 if (bottomMargin != 0) 292 { 293 styleMap.put(mxConstants.STYLE_SPACING_BOTTOM, Double.toString(bottomMargin)); 294 } 295 296 //Defines label left spacing 297 double leftMargin = getLeftSpacing() * 100/100; 298 299 if (leftMargin != 0) 300 { 301 styleMap.put(mxConstants.STYLE_SPACING_LEFT, Double.toString(leftMargin)); 302 } 303 304 //Defines label right spacing 305 double rightMargin = getRightSpacing() * 100/100; 306 307 if(rightMargin !=0) 308 { 309 styleMap.put(mxConstants.STYLE_SPACING_RIGHT, Double.toString(rightMargin)); 310 }*/ 311 312 //Direction is not clear that we need it 313 /* 314 var direction = state.style[mxConstants.STYLE_DIRECTION]; 315 316 if (direction != mxConstants.DIRECTION_EAST) 317 { 318 styleMap.put(mxConstants.STYLE_DIRECTION, direction); 319 } 320 */ 321 322 var flibX = state.style[mxConstants.STYLE_FLIPH]; 323 if (flibX == 1) shape.appendChild(createCellElem("FlipX", 1, xmlDoc)); 324 325 var flibY = state.style[mxConstants.STYLE_FLIPV]; 326 if (flibY == 1) shape.appendChild(createCellElem("FlipY", 1, xmlDoc)); 327 328 var rounded = state.style[mxConstants.STYLE_ROUNDED]; 329 if (rounded == 1) shape.appendChild(createCellElemScaled("Rounding", state.cell.geometry.width*0.1, xmlDoc)); 330 331 //TODO for some reason, visio doesn't show the label (text) background color! 332 //May be we need mxSvgCanvas2D.prototype.addTextBackground = function(node, str, x, y, w, h, align, valign, overflow) 333 var lbkgnd = state.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR]; 334 if (lbkgnd) shape.appendChild(createCellElem("TextBkgnd", lbkgnd, xmlDoc)); 335 }; 336 337 function createShape(id, geo, layerIndex, xmlDoc, parentHeight, isChild) 338 { 339 var shape = createElt(xmlDoc, that.XMLNS, "Shape"); 340 341 shape.setAttribute("ID", id); 342 shape.setAttribute("NameU", "Shape" + id); 343 shape.setAttribute("LineStyle", "0"); 344 shape.setAttribute("FillStyle", "0"); 345 shape.setAttribute("TextStyle", "0"); 346 347 var hw = geo.width/2, hh = geo.height/2; 348 349 shape.appendChild(createCellElemScaled("PinX", geo.x + hw + (isChild? 0 : vsdxCanvas.shiftX), xmlDoc)); 350 shape.appendChild(createCellElemScaled("PinY", parentHeight - geo.y - hh - (isChild? 0 : vsdxCanvas.shiftY), xmlDoc)); 351 shape.appendChild(createCellElemScaled("Width", geo.width, xmlDoc)); 352 shape.appendChild(createCellElemScaled("Height", geo.height, xmlDoc)); 353 shape.appendChild(createCellElemScaled("LocPinX", hw, xmlDoc)); 354 shape.appendChild(createCellElemScaled("LocPinY", hh, xmlDoc)); 355 shape.appendChild(createCellElem("LayerMember", layerIndex + "", xmlDoc)); 356 357 return shape; 358 }; 359 360 function getArrowType(arrow, isFilled) 361 { 362 isFilled = isFilled == null? "1" : isFilled; 363 arrow = arrow == null? "none" : arrow; 364 var key = arrow + "|" + isFilled; 365 var type = that.ARROWS_MAP[key]; 366 if (type != null) 367 return type; 368 else 369 return 1; 370 }; 371 372 function getArrowSize(size) 373 { 374 if (size == null) return 2; 375 376 if (size <=2) 377 return 0; 378 else if (size <= 3) 379 return 1; 380 else if (size <= 5) 381 return 2; 382 else if (size <= 7) 383 return 3; 384 else if (size <= 9) 385 return 4; 386 else if (size <= 22) 387 return 5; 388 else 389 return 6; 390 }; 391 392 function createEdge(cell, layerIndex, graph, xmlDoc, parentHeight, isChild) 393 { 394 var state = graph.view.getState(cell, true); 395 396 if (state == null || state.absolutePoints == null || state.cellBounds == null) 397 { 398 return null; 399 } 400 401 var shape = createElt(xmlDoc, that.XMLNS, "Shape"); 402 var vsdxId = getCellVsdxId(cell.id); 403 shape.setAttribute("ID", vsdxId); 404 shape.setAttribute("NameU", "Dynamic connector." + vsdxId); 405 shape.setAttribute("Name", "Dynamic connector." + vsdxId); 406 shape.setAttribute("Type", "Shape"); 407 shape.setAttribute("Master", "4"); //Dynamic Connector Master 408 409 var s = vsdxCanvas.state; 410 var points = state.absolutePoints; 411 var bounds = state.cellBounds; 412 413 var hw = bounds.width/2, hh = bounds.height/2; 414 415 shape.appendChild(createCellElemScaled("PinX", bounds.x + hw + (isChild? 0 : vsdxCanvas.shiftX), xmlDoc)); 416 shape.appendChild(createCellElemScaled("PinY", parentHeight - bounds.y - hh - (isChild? 0 : vsdxCanvas.shiftY), xmlDoc)); 417 shape.appendChild(createCellElemScaled("Width", bounds.width, xmlDoc)); 418 shape.appendChild(createCellElemScaled("Height", bounds.height, xmlDoc)); 419 shape.appendChild(createCellElemScaled("LocPinX", hw, xmlDoc)); 420 shape.appendChild(createCellElemScaled("LocPinY", hh, xmlDoc)); 421 422 vsdxCanvas.newEdge(shape, state, xmlDoc); 423 424 var calcVsdxPoint = function(p, noHeight, withoutShift) 425 { 426 var x = p.x, y = p.y; 427 x = x * s.scale - bounds.x + s.dx + (withoutShift || isChild? 0 : vsdxCanvas.shiftX); 428 y = (noHeight? 0 : bounds.height) - y * s.scale + bounds.y - s.dy - (withoutShift || isChild? 0 : vsdxCanvas.shiftY); 429 return {x: x, y: y}; 430 }; 431 432 var p0 = calcVsdxPoint(points[0], true); 433 434 //Formula is used to make the edge dynamic 435 shape.appendChild(createCellElemScaled("BeginX", bounds.x + p0.x, xmlDoc, "_WALKGLUE(BegTrigger,EndTrigger,WalkPreference)")); 436 shape.appendChild(createCellElemScaled("BeginY", parentHeight - bounds.y + p0.y, xmlDoc, "_WALKGLUE(BegTrigger,EndTrigger,WalkPreference)")); 437 438 var pe = calcVsdxPoint(points[points.length - 1], true); 439 440 //Formula is used to make the edge dynamic 441 shape.appendChild(createCellElemScaled("EndX", bounds.x + pe.x, xmlDoc, "_WALKGLUE(EndTrigger,BegTrigger,WalkPreference)")); 442 shape.appendChild(createCellElemScaled("EndY", parentHeight - bounds.y + pe.y, xmlDoc, "_WALKGLUE(EndTrigger,BegTrigger,WalkPreference)")); 443 444 //Formula is used to make the edge dynamic (specify source id and target id) 445 shape.appendChild(createCellElem("BegTrigger", "2", xmlDoc, cell.source? "_XFTRIGGER(Sheet."+ getCellVsdxId(cell.source.id) +"!EventXFMod)" : null)); 446 shape.appendChild(createCellElem("EndTrigger", "2", xmlDoc, cell.target? "_XFTRIGGER(Sheet."+ getCellVsdxId(cell.target.id) +"!EventXFMod)" : null)); 447 shape.appendChild(createCellElem("ConFixedCode", "6", xmlDoc)); 448 shape.appendChild(createCellElem("LayerMember", layerIndex + "", xmlDoc)); 449 450 applyMxCellStyle(state, shape, xmlDoc); 451 452 //Edge special styles 453 var startFill = state.style[mxConstants.STYLE_STARTFILL]; 454 var startArrow = state.style[mxConstants.STYLE_STARTARROW]; 455 var startSize = state.style[mxConstants.STYLE_STARTSIZE]; 456 457 var type = getArrowType(startArrow, startFill); 458 shape.appendChild(createCellElem("BeginArrow", type, xmlDoc)); 459 shape.appendChild(createCellElem("BeginArrowSize", getArrowSize(startSize), xmlDoc)); 460 461 var endFill = state.style[mxConstants.STYLE_ENDFILL]; 462 var endArrow = state.style[mxConstants.STYLE_ENDARROW]; 463 var endSize = state.style[mxConstants.STYLE_ENDSIZE]; 464 465 var type = getArrowType(endArrow, endFill); 466 shape.appendChild(createCellElem("EndArrow", type, xmlDoc)); 467 shape.appendChild(createCellElem("EndArrowSize", getArrowSize(endSize), xmlDoc)); 468 469 //Draw text first to have its shape cell elements before visio geo. 470 if (state.text != null && state.text.checkBounds()) 471 { 472 vsdxCanvas.save(); 473 state.text.paint(vsdxCanvas); 474 vsdxCanvas.restore(); 475 } 476 477 var geoSec = createElt(xmlDoc, that.XMLNS, "Section"); 478 479 geoSec.setAttribute("N", "Geometry"); 480 geoSec.setAttribute("IX", "0"); 481 482 for (var i = 0; i < points.length; i++) 483 { 484 var p = calcVsdxPoint(points[i], false, true); 485 geoSec.appendChild(createRow(i==0 ? "MoveTo" : "LineTo", (i + 1), p.x, p.y, xmlDoc)); 486 } 487 488 geoSec.appendChild(createCellElem("NoFill", "1", xmlDoc)); 489 geoSec.appendChild(createCellElem("NoLine", "0", xmlDoc)); 490 shape.appendChild(geoSec); 491 492 return shape; 493 }; 494 495 function convertMxCell2Shape(cell, layerIndex, graph, xmlDoc, parentHeight, parentGeo, isChild) 496 { 497 var geo = cell.geometry, origGeo = geo; 498 499 if (geo != null) 500 { 501 try 502 { 503 //fix relative geo coordinates 504 if (geo.relative && parentGeo) 505 { 506 origGeo = geo.clone(); 507 geo.x *= parentGeo.width; 508 geo.y *= parentGeo.height; 509 510 if (cell.vertex && geo.offset != null) 511 { 512 geo.x += geo.offset.x; 513 geo.y += geo.offset.y; 514 } 515 516 geo.relative = 0; 517 } 518 519 var vsdxId = getCellVsdxId(cell.id); 520 521 if (!cell.treatAsSingle && cell.getChildCount() > 0) //Group 522 { 523 //Create group shape as an empty shape with no geo 524 var shape = createShape(vsdxId + "10000", geo, layerIndex, xmlDoc, parentHeight, isChild); 525 shape.setAttribute("Type", "Group"); 526 527 //Create group shape 528 var gShapes = createElt(xmlDoc, that.XMLNS, "Shapes"); 529 530 //translate the canvas using the group coordinates 531 vsdxCanvas.save(); 532 vsdxCanvas.translate(-geo.x, -geo.y); 533 534 //Draw the actual group shape as a child (so change its geo coord to 0,0). 535 // In mxGraph group shape can have styles and stencil 536 var newGeo = geo.clone(); 537 newGeo.x = 0; 538 newGeo.y = 0; 539 cell.setGeometry(newGeo); 540 cell.treatAsSingle = true; 541 var subShape = convertMxCell2Shape(cell, layerIndex, graph, xmlDoc, geo.height, geo, true); 542 delete cell.treatAsSingle; 543 cell.setGeometry(geo); 544 545 if (subShape != null) 546 { 547 gShapes.appendChild(subShape); 548 } 549 550 //add group children 551 for (var i = 0; i < cell.getChildCount(); i++) 552 { 553 var child = cell.children[i]; 554 555 var subShape = convertMxCell2Shape(child, layerIndex, graph, xmlDoc, geo.height, geo, true); 556 557 if (subShape != null) 558 { 559 gShapes.appendChild(subShape); 560 } 561 } 562 563 shape.appendChild(gShapes); 564 565 //restore the canvas to before group translation 566 vsdxCanvas.restore(); 567 568 return shape; 569 } 570 else if (cell.vertex) 571 { 572 573 var shape = createShape(vsdxId, geo, layerIndex, xmlDoc, parentHeight, isChild); 574 575 var state = graph.view.getState(cell, true); 576 577 applyMxCellStyle(state, shape, xmlDoc); 578 579 vsdxCanvas.newShape(shape, state, xmlDoc); 580 581 //Draw text first to have its shape cell elements before visio geo. 582 if (state.text != null && state.text.checkBounds()) 583 { 584 vsdxCanvas.save(); 585 state.text.paint(vsdxCanvas); 586 vsdxCanvas.restore(); 587 } 588 if (state.shape != null && state.shape.checkBounds()) 589 { 590 vsdxCanvas.save(); 591 state.shape.paint(vsdxCanvas); 592 vsdxCanvas.restore(); 593 } 594 595 shape.appendChild(vsdxCanvas.getShapeGeo()); 596 597 vsdxCanvas.endShape(); 598 shape.setAttribute("Type", vsdxCanvas.getShapeType()); 599 600 return shape; 601 } 602 else 603 { 604 return createEdge(cell, layerIndex, graph, xmlDoc, parentHeight, isChild); 605 } 606 } 607 finally 608 { 609 cell.geometry = origGeo; 610 } 611 } 612 else 613 { 614 return null; 615 } 616 }; 617 618 619 function convertMxModel2Page(graph, modelAttrib) 620 { 621 var xmlDoc = mxUtils.createXmlDocument(); 622 623 var root = createElt(xmlDoc, that.XMLNS, "PageContents"); 624 625 root.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', that.XMLNS); 626 root.setAttributeNS('http://www.w3.org/2000/xmlns/', "xmlns:r", that.XMLNS_R); 627 628 var shapes = createElt(xmlDoc, that.XMLNS, "Shapes"); 629 root.appendChild(shapes); 630 631 var model = graph.model; 632 633 var t = graph.view.translate; 634 var s = graph.view.scale; 635 var bounds = graph.getGraphBounds(); 636 637 vsdxCanvas.shiftX = 0; vsdxCanvas.shiftY = 0; 638 //-ve pages 639 if (bounds.x / s < t.x || bounds.y / s < t.y) 640 { 641 vsdxCanvas.shiftX = Math.ceil((t.x - bounds.x / s) / graph.pageFormat.width) * graph.pageFormat.width; 642 vsdxCanvas.shiftY = Math.ceil((t.y - bounds.y / s) / graph.pageFormat.height) * graph.pageFormat.height; 643 } 644 645 vsdxCanvas.save(); 646 vsdxCanvas.translate(-t.x, -t.y); 647 vsdxCanvas.scale(1 / s); 648 vsdxCanvas.newPage(); 649 650 var layers = graph.model.getChildCells(graph.model.root); 651 var layerIdsMaps = {}; 652 653 for (var k = 0; k < layers.length; k++) 654 { 655 layerIdsMaps[layers[k].id] = k; 656 } 657 658 for (var id in model.cells) 659 { 660 var cell = model.cells[id]; 661 //top-most cells 662 var layerIndex = cell.parent != null? layerIdsMaps[cell.parent.id] : null; 663 664 if (layerIndex != null) 665 { 666 var shape = convertMxCell2Shape(cell, layerIndex, graph, xmlDoc, modelAttrib.pageHeight); 667 668 if (shape != null) 669 shapes.appendChild(shape); 670 } 671 } 672 673 var connects = createElt(xmlDoc, that.XMLNS, "Connects"); 674 root.appendChild(connects); 675 676 //Second pass to add edges (connections) 677 for (var id in model.cells) 678 { 679 var cell = model.cells[id]; 680 681 if (cell.edge) 682 { 683 if (cell.source) 684 { 685 var connect = createElt(xmlDoc, that.XMLNS, "Connect"); 686 connect.setAttribute("FromSheet", getCellVsdxId(cell.id)); 687 connect.setAttribute("FromCell", "BeginX"); 688 connect.setAttribute("ToSheet", getCellVsdxId(cell.source.id)); 689 connects.appendChild(connect); 690 } 691 692 if (cell.target) 693 { 694 var connect = createElt(xmlDoc, that.XMLNS, "Connect"); 695 connect.setAttribute("FromSheet", getCellVsdxId(cell.id)); 696 connect.setAttribute("FromCell", "EndX"); 697 connect.setAttribute("ToSheet", getCellVsdxId(cell.target.id)); 698 connects.appendChild(connect); 699 } 700 } 701 } 702 703 xmlDoc.appendChild(root); 704 705 vsdxCanvas.restore(); 706 707 return xmlDoc; 708 }; 709 710 function writeXmlDoc2Zip(zip, name, xmlDoc, noHeader) 711 { 712 zip.file(name, (noHeader? "" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>") + mxUtils.getXml(xmlDoc, '\n')); 713 }; 714 715 function addPagesXML(zip, pages, pageLayers, modelsAttr) 716 { 717 var pagesXmlDoc = mxUtils.createXmlDocument(); 718 var pagesRelsXmlDoc = mxUtils.createXmlDocument(); 719 720 var pagesRoot = createElt(pagesXmlDoc, that.XMLNS, "Pages"); 721 pagesRoot.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', that.XMLNS); 722 pagesRoot.setAttributeNS('http://www.w3.org/2000/xmlns/', "xmlns:r", that.XMLNS_R); 723 724 var pagesRelsRoot = createElt(pagesRelsXmlDoc, that.RELS_XMLNS, "Relationships"); 725 726 var i = 1; 727 for (var name in pages) 728 { 729 var pageName = "page" + i + ".xml"; 730 731 var pageE = createElt(pagesXmlDoc, that.XMLNS, "Page"); 732 pageE.setAttribute("ID", i-1); 733 pageE.setAttribute("NameU", name); 734 pageE.setAttribute("Name", name); 735 736 var pageSheet = createElt(pagesXmlDoc, that.XMLNS, "PageSheet"); 737 var modelAttr = modelsAttr[name]; 738 739 pageSheet.appendChild(createCellElemScaled("PageWidth", modelAttr['pageWidth'], pagesXmlDoc)); 740 pageSheet.appendChild(createCellElemScaled("PageHeight", modelAttr['pageHeight'], pagesXmlDoc)); 741 pageSheet.appendChild(createCellElem("PageScale", modelAttr['pageScale'], pagesXmlDoc)); 742 pageSheet.appendChild(createCellElem("DrawingScale", 1, pagesXmlDoc)); 743 744 var relE = createElt(pagesXmlDoc, that.XMLNS,"Rel"); 745 relE.setAttributeNS(that.XMLNS_R, "r:id", "rId" + i); 746 747 //Add Layers 748 var layerSec = createElt(pagesXmlDoc, that.XMLNS, "Section"); 749 layerSec.setAttribute("N", "Layer"); 750 751 var layers = pageLayers[name]; 752 753 for (var k = 0; k < layers.length; k++) 754 { 755 var layerRow = createElt(pagesXmlDoc, that.XMLNS, "Row"); 756 layerRow.setAttribute("IX", k + ""); 757 758 layerSec.appendChild(layerRow) 759 760 layerRow.appendChild(createCellElem("Name", layers[k].name, pagesXmlDoc)); 761 layerRow.appendChild(createCellElem("Color", '255', pagesXmlDoc)); 762 layerRow.appendChild(createCellElem("Status", '0', pagesXmlDoc)); 763 layerRow.appendChild(createCellElem("Visible", layers[k].visible? '1' : '0', pagesXmlDoc)); 764 layerRow.appendChild(createCellElem("Print", '1', pagesXmlDoc)); 765 layerRow.appendChild(createCellElem("Active", '0', pagesXmlDoc)); 766 layerRow.appendChild(createCellElem("Lock", layers[k].locked? '1' : '0', pagesXmlDoc)); 767 layerRow.appendChild(createCellElem("Snap", '1', pagesXmlDoc)); 768 layerRow.appendChild(createCellElem("Glue", '1', pagesXmlDoc)); 769 layerRow.appendChild(createCellElem("NameUniv", layers[k].name, pagesXmlDoc)); 770 layerRow.appendChild(createCellElem("ColorTrans", '0', pagesXmlDoc)); 771 } 772 773 pageSheet.appendChild(layerSec); 774 775 pageE.appendChild(pageSheet); 776 pageE.appendChild(relE); 777 pagesRoot.appendChild(pageE); 778 779 var relationship = createElt(pagesRelsXmlDoc, that.RELS_XMLNS, "Relationship"); 780 relationship.setAttribute("Id", "rId" + i); 781 relationship.setAttribute("Type", that.PAGES_TYPE); 782 relationship.setAttribute("Target", pageName); 783 pagesRelsRoot.appendChild(relationship); 784 785 //Note:Each page rels is created with the skeleton as they are constants 786 787 //write the page docs 788 var xmlDoc = pages[name]; 789 writeXmlDoc2Zip(zip, that.VISIO_PAGES + pageName, xmlDoc); 790 i++; 791 } 792 793 pagesXmlDoc.appendChild(pagesRoot); 794 pagesRelsXmlDoc.appendChild(pagesRelsRoot); 795 writeXmlDoc2Zip(zip, that.VISIO_PAGES + "pages.xml", pagesXmlDoc); 796 writeXmlDoc2Zip(zip, that.VISIO_PAGES + "_rels/pages.xml.rels", pagesRelsXmlDoc); 797 } 798 799 function addImagesRels(zip, pIndex) 800 { 801 //create a new page rels file 802 var fId = that.VISIO_PAGES_RELS + "page" + pIndex + ".xml.rels"; 803 var pageRelDoc = mxUtils.createXmlDocument(); 804 805 var relationships = createElt(pageRelDoc, that.RELS_XMLNS, "Relationships"); 806 807 //Add master relationship (rId1) 808 var relationship = createElt(pageRelDoc, that.RELS_XMLNS, "Relationship"); 809 relationship.setAttribute("Type", "http://schemas.microsoft.com/visio/2010/relationships/master"); 810 relationship.setAttribute("Id", "rId1"); 811 relationship.setAttribute("Target", "../masters/master1.xml"); 812 relationships.appendChild(relationship); 813 814 var imgs = vsdxCanvas.images; 815 816 //create rels of image files 817 if (imgs.length > 0) 818 { 819 for (var i = 0; i < imgs.length; i++) 820 { 821 var relationship = createElt(pageRelDoc, that.RELS_XMLNS, "Relationship"); 822 relationship.setAttribute("Type", that.XMLNS_R + "/image"); 823 relationship.setAttribute("Id", "rId" + (i+2)); 824 relationship.setAttribute("Target", "../media/" + imgs[i]); 825 826 relationships.appendChild(relationship); 827 } 828 } 829 pageRelDoc.appendChild(relationships); 830 writeXmlDoc2Zip(zip, fId, pageRelDoc); 831 }; 832 /** 833 * 834 * Convert current Editor UI pages into a vdsx file 835 * @return true if successful, false otherwise 836 */ 837 this.exportCurrentDiagrams = function (currentPageOnly) 838 { 839 try 840 { 841 if (editorUi.spinner.spin(document.body, mxResources.get('exporting'))) 842 { 843 var zip = new JSZip(); 844 845 //init class global variables 846 vsdxCanvas.init(zip); 847 idsMap = {}; 848 idsCounter = 1; 849 850 var pages = {}; 851 var pageLayers = {}; 852 var modelsAttr = {}; 853 854 var pagesCount = editorUi.pages != null? editorUi.pages.length : 1; 855 856 function collectLayers(graph, diagramName) 857 { 858 var layers = graph.model.getChildCells(graph.model.root); 859 pageLayers[diagramName] = []; 860 861 for (var k = 0; k < layers.length; k++) 862 { 863 //KNOWN We don't export invisible layers, we may support it later but we need to have a full cell state for invisible cells 864 if (layers[k].visible) 865 { 866 pageLayers[diagramName].push({ 867 name: layers[k].value || 'Background', 868 visible: layers[k].visible, 869 locked: layers[k].style && layers[k].style.indexOf('locked=1') >= 0 870 }); 871 } 872 } 873 }; 874 875 if (editorUi.pages != null) 876 { 877 function exportPage(page) 878 { 879 var diagramName = page.getName(); 880 var graph = editorUi.editor.graph; 881 882 //Handles dark mode 883 var temp = null; 884 885 if (graph.themes != null && graph.defaultThemeName == 'darkTheme') 886 { 887 temp = graph.stylesheet; 888 graph.stylesheet = graph.getDefaultStylesheet(); 889 graph.refresh(); 890 } 891 892 try 893 { 894 var modelAttrib = getGraphAttributes(graph); 895 pages[diagramName] = convertMxModel2Page(graph, modelAttrib); 896 collectLayers(graph, diagramName); 897 addImagesRels(zip, i+1); 898 modelsAttr[diagramName] = modelAttrib; 899 } 900 finally 901 { 902 if (temp != null) 903 { 904 graph.stylesheet = temp; 905 graph.refresh(); 906 } 907 } 908 }; 909 910 var selectedCells = editorUi.editor.graph.getSelectionCells(); 911 var currentPage = editorUi.currentPage; 912 913 if (currentPageOnly) 914 { 915 exportPage(currentPage); 916 } 917 else 918 { 919 for (var i=0; i < editorUi.pages.length; i++) 920 { 921 var page = editorUi.pages[i]; 922 923 if (editorUi.currentPage != page) 924 { 925 editorUi.selectPage(page, true); 926 } 927 928 exportPage(page); 929 } 930 931 if (currentPage != editorUi.currentPage) 932 { 933 editorUi.selectPage(currentPage, true); 934 } 935 936 editorUi.editor.graph.setSelectionCells(selectedCells); 937 } 938 } 939 else 940 { 941 var graph = editorUi.editor.graph; 942 var modelAttrib = getGraphAttributes(graph); 943 var diagramName = "Page1"; 944 pages[diagramName] = convertMxModel2Page(graph, modelAttrib); 945 collectLayers(graph, diagramName); 946 addImagesRels(zip, 1); 947 modelsAttr[diagramName] = modelAttrib; 948 } 949 950 createVsdxSkeleton(zip, pagesCount); 951 952 addPagesXML(zip, pages, pageLayers, modelsAttr); 953 954 var createZipFile = function() 955 { 956 zip.generateAsync({type:"base64"}).then( 957 function(content) 958 { 959 editorUi.spinner.stop(); 960 var basename = editorUi.getBaseFilename(); 961 editorUi.saveData(basename + ".vsdx", 'vsdx', content, 962 'application/vnd.visio2013', true); 963 } 964 ); 965 }; 966 967 if (vsdxCanvas.filesLoading > 0) 968 { 969 // wait until all media files are loaded 970 vsdxCanvas.onFilesLoaded = createZipFile; 971 } 972 else 973 { 974 createZipFile(); 975 } 976 } 977 978 return true; 979 } 980 catch(e) 981 { 982 console.log(e); 983 editorUi.spinner.stop(); 984 return false; 985 } 986 }; 987} 988 989VsdxExport.prototype.CONVERSION_FACTOR = 40 * 2.54; //screenCoordinatesPerCm (40) x CENTIMETERS_PER_INCHES (2.54) 990VsdxExport.prototype.PAGES_TYPE = "http://schemas.microsoft.com/visio/2010/relationships/page"; 991VsdxExport.prototype.RELS_XMLNS = "http://schemas.openxmlformats.org/package/2006/relationships"; 992VsdxExport.prototype.XML_SPACE = "preserve"; 993VsdxExport.prototype.XMLNS_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"; 994VsdxExport.prototype.XMLNS = "http://schemas.microsoft.com/office/visio/2012/main"; 995VsdxExport.prototype.VISIO_PAGES = "visio/pages/"; 996VsdxExport.prototype.PREFEX = "com/mxgraph/io/vsdx/resources/export/"; 997VsdxExport.prototype.VSDX_ENC = "ISO-8859-1"; 998VsdxExport.prototype.PART_NAME = "PartName"; 999VsdxExport.prototype.CONTENT_TYPES_XML = "[Content_Types].xml"; 1000VsdxExport.prototype.VISIO_PAGES_RELS = "visio/pages/_rels/"; 1001VsdxExport.prototype.ARROWS_MAP = { 1002 "none|1": 0, "none|0": 0, "open|1": 1, "open|0": 1, "block|1": 4, "block|0": 14, "classic|1": 5, "classic|0": 17, 1003 "oval|1": 10, "oval|0": 20, "diamond|1": 11, "diamond|0": 22, "blockThin|1": 2, "blockThin|0": 15, "dash|1": 23, "dash|0": 23, 1004 "ERone|1": 24, "ERone|0": 24, "ERmandOne|1": 25, "ERmandOne|0": 25, "ERmany|1": 27, "ERmany|0": 27, "ERoneToMany|1": 28, "ERoneToMany|0": 28, 1005 "ERzeroToMany|1": 29, "ERzeroToMany|0": 29, "ERzeroToOne|1": 30, "ERzeroToOne|0": 30, "openAsync|1": 9, "openAsync|0": 9 1006}; 1007