|
<iframe srcdoc="<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script src="data:application/x-javascript,%28function%28%29%20%7B%0A%20%20%2F%2F%20If%20window%2EHTMLWidgets%20is%20already%20defined%2C%20then%20use%20it%3B%20otherwise%20create%20a%0A%20%20%2F%2F%20new%20object%2E%20This%20allows%20preceding%20code%20to%20set%20options%20that%20affect%20the%0A%20%20%2F%2F%20initialization%20process%20%28though%20none%20currently%20exist%29%2E%0A%20%20window%2EHTMLWidgets%20%3D%20window%2EHTMLWidgets%20%7C%7C%20%7B%7D%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20a%20viewer%20pane%2E%20If%20not%2C%20we%27re%20in%20a%20web%20browser%2E%0A%20%20var%20viewerMode%20%3D%20window%2EHTMLWidgets%2EviewerMode%20%3D%0A%20%20%20%20%20%20%2F%5Cbviewer%5Fpane%3D1%5Cb%2F%2Etest%28window%2Elocation%29%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20Shiny%20mode%2E%20If%20not%2C%20it%27s%20a%20static%20document%2E%0A%20%20%2F%2F%20Note%20that%20static%20widgets%20can%20appear%20in%20both%20Shiny%20and%20static%20modes%2C%20but%0A%20%20%2F%2F%20obviously%2C%20Shiny%20widgets%20can%20only%20appear%20in%20Shiny%20apps%2Fdocuments%2E%0A%20%20var%20shinyMode%20%3D%20window%2EHTMLWidgets%2EshinyMode%20%3D%0A%20%20%20%20%20%20typeof%28window%2EShiny%29%20%21%3D%3D%20%22undefined%22%20%26%26%20%21%21window%2EShiny%2EoutputBindings%3B%0A%0A%20%20%2F%2F%20We%20can%27t%20count%20on%20jQuery%20being%20available%2C%20so%20we%20implement%20our%20own%0A%20%20%2F%2F%20version%20if%20necessary%2E%0A%20%20function%20querySelectorAll%28scope%2C%20selector%29%20%7B%0A%20%20%20%20if%20%28typeof%28jQuery%29%20%21%3D%3D%20%22undefined%22%20%26%26%20scope%20instanceof%20jQuery%29%20%7B%0A%20%20%20%20%20%20return%20scope%2Efind%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28scope%2EquerySelectorAll%29%20%7B%0A%20%20%20%20%20%20return%20scope%2EquerySelectorAll%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20asArray%28value%29%20%7B%0A%20%20%20%20if%20%28value%20%3D%3D%3D%20null%29%0A%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28%24%2EisArray%28value%29%29%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20return%20%5Bvalue%5D%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20jQuery%27s%20extend%0A%20%20function%20extend%28target%20%2F%2A%2C%20%2E%2E%2E%20%2A%2F%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20target%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%201%3B%20i%20%3C%20arguments%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bi%5D%3B%0A%20%20%20%20%20%20for%20%28var%20prop%20in%20source%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28source%2EhasOwnProperty%28prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20source%5Bprop%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20target%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Replaces%20the%20specified%20method%20with%20the%20return%20value%20of%20funcSource%2E%0A%20%20%2F%2F%0A%20%20%2F%2F%20Note%20that%20funcSource%20should%20not%20BE%20the%20new%20method%2C%20it%20should%20be%20a%20function%0A%20%20%2F%2F%20that%20RETURNS%20the%20new%20method%2E%20funcSource%20receives%20a%20single%20argument%20that%20is%0A%20%20%2F%2F%20the%20overridden%20method%2C%20it%20can%20be%20called%20from%20the%20new%20method%2E%20The%20overridden%0A%20%20%2F%2F%20method%20can%20be%20called%20like%20a%20regular%20function%2C%20it%20has%20the%20target%20permanently%0A%20%20%2F%2F%20bound%20to%20it%20so%20%22this%22%20will%20work%20correctly%2E%0A%20%20function%20overrideMethod%28target%2C%20methodName%2C%20funcSource%29%20%7B%0A%20%20%20%20var%20superFunc%20%3D%20target%5BmethodName%5D%20%7C%7C%20function%28%29%20%7B%7D%3B%0A%20%20%20%20var%20superFuncBound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20superFunc%2Eapply%28target%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20target%5BmethodName%5D%20%3D%20funcSource%28superFuncBound%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20a%20vague%20facsimilie%20of%20jQuery%27s%20data%20method%0A%20%20function%20elementData%28el%2C%20name%2C%20value%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%3B%0A%20%20%20%20%7D%20else%20if%20%28arguments%2Elength%20%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%20%3D%20value%3B%0A%20%20%20%20%20%20return%20el%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Wrong%20number%20of%20arguments%20for%20elementData%3A%20%22%20%2B%0A%20%20%20%20%20%20%20%20arguments%2Elength%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F3446170%2Fescape%2Dstring%2Dfor%2Duse%2Din%2Djavascript%2Dregex%0A%20%20function%20escapeRegExp%28str%29%20%7B%0A%20%20%20%20return%20str%2Ereplace%28%2F%5B%5C%2D%5C%5B%5C%5D%5C%2F%5C%7B%5C%7D%5C%28%5C%29%5C%2A%5C%2B%5C%3F%5C%2E%5C%5C%5C%5E%5C%24%5C%7C%5D%2Fg%2C%20%22%5C%5C%24%26%22%29%3B%0A%20%20%7D%0A%0A%20%20function%20hasClass%28el%2C%20className%29%20%7B%0A%20%20%20%20var%20re%20%3D%20new%20RegExp%28%22%5C%5Cb%22%20%2B%20escapeRegExp%28className%29%20%2B%20%22%5C%5Cb%22%29%3B%0A%20%20%20%20return%20re%2Etest%28el%2EclassName%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20elements%20%2D%20array%20%28or%20array%2Dlike%20object%29%20of%20HTML%20elements%0A%20%20%2F%2F%20className%20%2D%20class%20name%20to%20test%20for%0A%20%20%2F%2F%20include%20%2D%20if%20true%2C%20only%20return%20elements%20with%20given%20className%3B%0A%20%20%2F%2F%20%20%20if%20false%2C%20only%20return%20elements%20%2Awithout%2A%20given%20className%0A%20%20function%20filterByClass%28elements%2C%20className%2C%20include%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20elements%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28hasClass%28elements%5Bi%5D%2C%20className%29%20%3D%3D%20include%29%0A%20%20%20%20%20%20%20%20results%2Epush%28elements%5Bi%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%0A%20%20function%20on%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EaddEventListener%29%20%7B%0A%20%20%20%20%20%20obj%2EaddEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20%7D%20else%20if%20%28obj%2EattachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EattachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20off%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EremoveEventListener%29%0A%20%20%20%20%20%20obj%2EremoveEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20else%20if%20%28obj%2EdetachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EdetachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Translate%20array%20of%20values%20to%20top%2Fright%2Fbottom%2Fleft%2C%20as%20usual%20with%0A%20%20%2F%2F%20the%20%22padding%22%20CSS%20property%0A%20%20%2F%2F%20https%3A%2F%2Fdeveloper%2Emozilla%2Eorg%2Fen%2DUS%2Fdocs%2FWeb%2FCSS%2Fpadding%0A%20%20function%20unpackPadding%28value%29%20%7B%0A%20%20%20%20if%20%28typeof%28value%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20value%20%3D%20%5Bvalue%5D%3B%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B0%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B0%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%204%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B3%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Convert%20an%20unpacked%20padding%20object%20to%20a%20CSS%20value%0A%20%20function%20paddingToCss%28paddingObj%29%20%7B%0A%20%20%20%20return%20paddingObj%2Etop%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eright%20%2B%20%22px%20%22%20%2B%20paddingObj%2Ebottom%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eleft%20%2B%20%22px%22%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Makes%20a%20number%20suitable%20for%20CSS%0A%20%20function%20px%28x%29%20%7B%0A%20%20%20%20if%20%28typeof%28x%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20return%20x%20%2B%20%22px%22%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20x%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Retrieves%20runtime%20widget%20sizing%20information%20for%20an%20element%2E%0A%20%20%2F%2F%20The%20return%20value%20is%20either%20null%2C%20or%20an%20object%20with%20fill%2C%20padding%2C%0A%20%20%2F%2F%20defaultWidth%2C%20defaultHeight%20fields%2E%0A%20%20function%20sizingPolicy%28el%29%20%7B%0A%20%20%20%20var%20sizingEl%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fhtmlwidget%2Dsizing%27%5D%22%29%3B%0A%20%20%20%20if%20%28%21sizingEl%29%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20sp%20%3D%20JSON%2Eparse%28sizingEl%2EtextContent%20%7C%7C%20sizingEl%2Etext%20%7C%7C%20%22%7B%7D%22%29%3B%0A%20%20%20%20if%20%28viewerMode%29%20%7B%0A%20%20%20%20%20%20return%20sp%2Eviewer%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20sp%2Ebrowser%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20initSizing%28el%29%20%7B%0A%20%20%20%20var%20sizing%20%3D%20sizingPolicy%28el%29%3B%0A%20%20%20%20if%20%28%21sizing%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20cel%20%3D%20document%2EgetElementById%28%22htmlwidget%5Fcontainer%22%29%3B%0A%20%20%20%20if%20%28%21cel%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20if%20%28typeof%28sizing%2Epadding%29%20%21%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Emargin%20%3D%20%220%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Epadding%20%3D%20paddingToCss%28unpackPadding%28sizing%2Epadding%29%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28sizing%2Efill%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eoverflow%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20if%20%28cel%29%20%7B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eposition%20%3D%20%22absolute%22%3B%0A%20%20%20%20%20%20%20%20var%20pad%20%3D%20unpackPadding%28sizing%2Epadding%29%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Etop%20%3D%20pad%2Etop%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eright%20%3D%20pad%2Eright%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Ebottom%20%3D%20pad%2Ebottom%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eleft%20%3D%20pad%2Eleft%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20cel%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20cel%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20px%28sizing%2Ewidth%29%3B%0A%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20px%28sizing%2Eheight%29%3B%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20el%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20el%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Default%20implementations%20for%20methods%0A%20%20var%20defaults%20%3D%20%7B%0A%20%20%20%20find%3A%20function%28scope%29%20%7B%0A%20%20%20%20%20%20return%20querySelectorAll%28scope%2C%20%22%2E%22%20%2B%20this%2Ename%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20renderError%3A%20function%28el%2C%20err%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%0A%20%20%20%20%20%20this%2EclearError%28el%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Add%20all%20these%20error%20classes%2C%20as%20Shiny%20does%0A%20%20%20%20%20%20var%20errClass%20%3D%20%22shiny%2Doutput%2Derror%22%3B%0A%20%20%20%20%20%20if%20%28err%2Etype%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20use%20the%20classes%20of%20the%20error%20condition%20as%20CSS%20class%20names%0A%20%20%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20%22%20%2B%20%24%2Emap%28asArray%28err%2Etype%29%2C%20function%28type%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20errClass%20%2B%20%22%2D%22%20%2B%20type%3B%0A%20%20%20%20%20%20%20%20%7D%29%2Ejoin%28%22%20%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20htmlwidgets%2Derror%22%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Is%20el%20inline%20or%20block%3F%20If%20inline%20or%20inline%2Dblock%2C%20just%20display%3Anone%20it%0A%20%20%20%20%20%20%2F%2F%20and%20add%20an%20inline%20error%2E%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Ecss%28%22display%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20display%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20%24el%2Ehide%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorSpan%20%3D%20%24%28%22%3Cspan%3E%22%29%2EaddClass%28errClass%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorSpan%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorSpan%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20block%2C%20add%20an%20error%20just%20after%20the%20el%2C%20set%20visibility%3Anone%20on%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20el%2C%20and%20position%20the%20error%20to%20be%20on%20top%20of%20the%20el%2E%0A%20%20%20%20%20%20%20%20%2F%2F%20Mark%20it%20with%20a%20unique%20ID%20and%20CSS%20class%20so%20we%20can%20remove%20it%20later%2E%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorDiv%20%3D%20%24%28%22%3Cdiv%3E%22%29%2EaddClass%28errClass%29%2Ecss%28%22position%22%2C%20%22absolute%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20setting%20width%20can%20push%20out%20the%20page%20size%2C%20forcing%20otherwise%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20unnecessary%20scrollbars%20to%20appear%20and%20making%20it%20impossible%20for%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20element%20to%20shrink%3B%20so%20use%20max%2Dwidth%20instead%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorDiv%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorDiv%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Really%20dumb%20way%20to%20keep%20the%20size%2Fposition%20of%20the%20error%20in%20sync%20with%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20parent%20element%20as%20the%20window%20is%20resized%20or%20whatever%2E%0A%20%20%20%20%20%20%20%20%20%20var%20intId%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21errorDiv%5B0%5D%2EparentElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20clearInterval%28intId%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20errorDiv%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20clearError%3A%20function%28el%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20null%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28display%29%0A%20%20%20%20%20%20%20%20%20%20%24el%2Ecss%28%22display%22%2C%20display%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%7B%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22inherit%22%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20sizing%3A%20%7B%7D%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Called%20by%20widget%20bindings%20to%20register%20a%20new%20type%20of%20widget%2E%20The%20definition%0A%20%20%2F%2F%20object%20can%20contain%20the%20following%20properties%3A%0A%20%20%2F%2F%20%2D%20name%20%28required%29%20%2D%20A%20string%20indicating%20the%20binding%20name%2C%20which%20will%20be%0A%20%20%2F%2F%20%20%20used%20by%20default%20as%20the%20CSS%20classname%20to%20look%20for%2E%0A%20%20%2F%2F%20%2D%20initialize%20%28optional%29%20%2D%20A%20function%28el%29%20that%20will%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20widget%20element%3B%20if%20a%20value%20is%20returned%2C%20it%20will%20be%20passed%20as%20the%20third%0A%20%20%2F%2F%20%20%20value%20to%20renderValue%2E%0A%20%20%2F%2F%20%2D%20renderValue%20%28required%29%20%2D%20A%20function%28el%2C%20data%2C%20initValue%29%20that%20will%20be%0A%20%20%2F%2F%20%20%20called%20with%20data%2E%20Static%20contexts%20will%20cause%20this%20to%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20element%3B%20Shiny%20apps%20will%20cause%20this%20to%20be%20called%20multiple%20times%20per%0A%20%20%2F%2F%20%20%20element%2C%20as%20the%20data%20changes%2E%0A%20%20window%2EHTMLWidgets%2Ewidget%20%3D%20function%28definition%29%20%7B%0A%20%20%20%20if%20%28%21definition%2Ename%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20name%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21definition%2Etype%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20type%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Currently%20we%20only%20support%20output%20widgets%0A%20%20%20%20if%20%28definition%2Etype%20%21%3D%3D%20%22output%22%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Unrecognized%20widget%20type%20%27%22%20%2B%20definition%2Etype%20%2B%20%22%27%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20TODO%3A%20Verify%20that%20%2Ename%20is%20a%20valid%20CSS%20classname%0A%20%20%20%20if%20%28%21definition%2ErenderValue%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20renderValue%20function%22%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20For%20static%20rendering%20%28non%2DShiny%29%2C%20use%20a%20simple%20widget%20registration%0A%20%20%20%20%2F%2F%20scheme%2E%20We%20also%20use%20this%20scheme%20for%20Shiny%20apps%2Fdocuments%20that%20also%0A%20%20%20%20%2F%2F%20contain%20static%20widgets%2E%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20%2F%2F%20Merge%20defaults%20into%20the%20definition%3B%20don%27t%20mutate%20the%20original%20definition%2E%0A%20%20%20%20var%20staticBinding%20%3D%20extend%28%7B%7D%2C%20defaults%2C%20definition%29%3B%0A%20%20%20%20overrideMethod%28staticBinding%2C%20%22find%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20return%20function%28scope%29%20%7B%0A%20%20%20%20%20%20%20%20var%20results%20%3D%20superfunc%28scope%29%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Filter%20out%20Shiny%20outputs%2C%20we%20only%20want%20the%20static%20kind%0A%20%20%20%20%20%20%20%20return%20filterByClass%28results%2C%20%22html%2Dwidget%2Doutput%22%2C%20false%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%2Epush%28staticBinding%29%3B%0A%0A%20%20%20%20if%20%28shinyMode%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Shiny%20is%20running%2E%20Register%20the%20definition%20as%20an%20output%20binding%2E%0A%0A%20%20%20%20%20%20%2F%2F%20Merge%20defaults%20into%20the%20definition%3B%20don%27t%20mutate%20the%20original%20definition%2E%0A%20%20%20%20%20%20%2F%2F%20The%20base%20object%20is%20a%20Shiny%20output%20binding%20if%20we%27re%20running%20in%20Shiny%20mode%2C%0A%20%20%20%20%20%20%2F%2F%20or%20an%20empty%20object%20if%20we%27re%20not%2E%0A%20%20%20%20%20%20var%20shinyBinding%20%3D%20extend%28new%20Shiny%2EOutputBinding%28%29%2C%20defaults%2C%20definition%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Wrap%20renderValue%20to%20handle%20initialization%2C%20which%20unfortunately%20isn%27t%0A%20%20%20%20%20%20%2F%2F%20supported%20natively%20by%20Shiny%20at%20the%20time%20of%20this%20writing%2E%0A%0A%20%20%20%20%20%20%2F%2F%20NB%3A%20shinyBinding%2Einitialize%20may%20be%20undefined%2C%20as%20it%27s%20optional%2E%0A%0A%20%20%20%20%20%20%2F%2F%20Rename%20initialize%20to%20make%20sure%20it%20isn%27t%20called%20by%20a%20future%20version%0A%20%20%20%20%20%20%2F%2F%20of%20Shiny%20that%20does%20support%20initialize%20directly%2E%0A%20%20%20%20%20%20shinyBinding%2E%5Fhtmlwidgets%5Finitialize%20%3D%20shinyBinding%2Einitialize%3B%0A%20%20%20%20%20%20delete%20shinyBinding%2Einitialize%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22find%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28scope%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20var%20results%20%3D%20superfunc%28scope%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Only%20return%20elements%20that%20are%20Shiny%20outputs%2C%20not%20static%20ones%0A%20%20%20%20%20%20%20%20%20%20var%20dynamicResults%20%3D%20results%2Efilter%28%22%2Ehtml%2Dwidget%2Doutput%22%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20It%27s%20possible%20that%20whatever%20caused%20Shiny%20to%20think%20there%20might%20be%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20new%20dynamic%20outputs%2C%20also%20caused%20there%20to%20be%20new%20static%20outputs%2E%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Since%20there%20might%20be%20lots%20of%20different%20htmlwidgets%20bindings%2C%20we%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20schedule%20execution%20for%20later%2D%2Dno%20need%20to%20staticRender%20multiple%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20times%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28results%2Elength%20%21%3D%3D%20dynamicResults%2Elength%29%0A%20%20%20%20%20%20%20%20%20%20%20%20scheduleStaticRender%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20return%20dynamicResults%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22renderValue%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28el%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20data%2Eevals%20%26%26%20i%20%3C%20data%2Eevals%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21this%2ErenderOnNullValue%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28data%2Ex%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22inherit%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20initSizing%28el%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22initialized%22%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28this%2E%5Fhtmlwidgets%5Finitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20this%2E%5Fhtmlwidgets%5Finitialize%28el%2C%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22init%5Fresult%22%2C%20result%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20Shiny%2ErenderDependencies%28data%2Edeps%29%3B%0A%20%20%20%20%20%20%20%20%20%20superfunc%28el%2C%20data%2Ex%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20overrideMethod%28shinyBinding%2C%20%22resize%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20%20%20return%20function%28el%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Shiny%20can%20call%20resize%20before%20initialize%2FrenderValue%20have%20been%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20called%2C%20which%20doesn%27t%20make%20sense%20for%20widgets%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20superfunc%28el%2C%20width%2C%20height%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20Shiny%2EoutputBindings%2Eregister%28shinyBinding%2C%20shinyBinding%2Ename%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20var%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20function%20scheduleStaticRender%28%29%20%7B%0A%20%20%20%20if%20%28%21scheduleStaticRenderTimerId%29%20%7B%0A%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%20%20%7D%2C%201%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Render%20static%20widgets%20after%20the%20document%20finishes%20loading%0A%20%20%2F%2F%20Statically%20render%20all%20elements%20that%20are%20of%20this%20widget%27s%20class%0A%20%20function%20staticRender%28%29%20%7B%0A%20%20%20%20var%20bindings%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20bindings%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20binding%20%3D%20bindings%5Bi%5D%3B%0A%20%20%20%20%20%20var%20matches%20%3D%20binding%2Efind%28document%2EdocumentElement%29%3B%0A%20%20%20%20%20%20for%20%28var%20j%20%3D%200%3B%20j%20%3C%20matches%2Elength%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20var%20el%20%3D%20matches%5Bj%5D%3B%0A%20%20%20%20%20%20%20%20var%20sizeObj%20%3D%20initSizing%28el%2C%20binding%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28hasClass%28el%2C%20%22html%2Dwidget%2Dstatic%2Dbound%22%29%29%0A%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20el%2EclassName%20%3D%20el%2EclassName%20%2B%20%22%20html%2Dwidget%2Dstatic%2Dbound%22%3B%0A%0A%20%20%20%20%20%20%20%20var%20initResult%3B%0A%20%20%20%20%20%20%20%20if%20%28binding%2Einitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20initResult%20%3D%20binding%2Einitialize%28el%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28binding%2Eresize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lastSize%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20on%28window%2C%20%22resize%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20size%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20w%3A%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20h%3A%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%200%20%26%26%20size%2Eh%20%3D%3D%3D%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%20lastSize%2Ew%20%26%26%20size%2Eh%20%3D%3D%3D%20lastSize%2Eh%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20lastSize%20%3D%20size%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20binding%2Eresize%28el%2C%20size%2Ew%2C%20size%2Eh%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20var%20scriptData%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fjson%27%5D%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28scriptData%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20data%20%3D%20JSON%2Eparse%28scriptData%2EtextContent%20%7C%7C%20scriptData%2Etext%29%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20data%2Eevals%20%26%26%20i%20%3C%20data%2Eevals%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20binding%2ErenderValue%28el%2C%20data%2Ex%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Wait%20until%20after%20the%20document%20has%20loaded%20to%20render%20the%20widgets%2E%0A%20%20if%20%28document%2EaddEventListener%29%20%7B%0A%20%20%20%20document%2EaddEventListener%28%22DOMContentLoaded%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20document%2EremoveEventListener%28%22DOMContentLoaded%22%2C%20arguments%2Ecallee%2C%20false%29%3B%0A%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%7D%20else%20if%20%28document%2EattachEvent%29%20%7B%0A%20%20%20%20document%2EattachEvent%28%22onreadystatechange%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28document%2EreadyState%20%3D%3D%3D%20%22complete%22%29%20%7B%0A%20%20%20%20%20%20%20%20document%2EdetachEvent%28%22onreadystatechange%22%2C%20arguments%2Ecallee%29%3B%0A%20%20%20%20%20%20%20%20staticRender%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%0A%0A%20%20window%2EHTMLWidgets%2EgetAttachmentUrl%20%3D%20function%28depname%2C%20key%29%20%7B%0A%20%20%20%20%2F%2F%20If%20no%20key%2C%20default%20to%20the%20first%20item%0A%20%20%20%20if%20%28typeof%28key%29%20%3D%3D%3D%20%22undefined%22%29%0A%20%20%20%20%20%20key%20%3D%201%3B%0A%0A%20%20%20%20var%20link%20%3D%20document%2EgetElementById%28depname%20%2B%20%22%2D%22%20%2B%20key%20%2B%20%22%2Dattachment%22%29%3B%0A%20%20%20%20if%20%28%21link%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Attachment%20%22%20%2B%20depname%20%2B%20%22%2F%22%20%2B%20key%20%2B%20%22%20not%20found%20in%20document%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20link%2EgetAttribute%28%22href%22%29%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EdataframeToD3%20%3D%20function%28df%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20length%3B%0A%20%20%20%20for%20%28var%20name%20in%20df%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28df%2EhasOwnProperty%28name%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20names%2Epush%28name%29%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%28df%5Bname%5D%29%20%21%3D%3D%20%22object%22%20%7C%7C%20typeof%28df%5Bname%5D%2Elength%29%20%3D%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28typeof%28length%29%20%21%3D%3D%20%22undefined%22%20%26%26%20length%20%21%3D%3D%20df%5Bname%5D%2Elength%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%20of%20the%20same%20length%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20length%20%3D%20df%5Bname%5D%2Elength%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20item%3B%0A%20%20%20%20for%20%28var%20row%20%3D%200%3B%20row%20%3C%20length%3B%20row%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20item%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20col%20%3D%200%3B%20col%20%3C%20names%2Elength%3B%20col%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20item%5Bnames%5Bcol%5D%5D%20%3D%20df%5Bnames%5Bcol%5D%5D%5Brow%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20results%2Epush%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EtransposeArray2D%20%3D%20function%28array%29%20%7B%0A%20%20%20%20%20%20var%20newArray%20%3D%20array%5B0%5D%2Emap%28function%28col%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20array%2Emap%28function%28row%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20row%5Bi%5D%0A%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20newArray%3B%0A%20%20%7D%3B%0A%20%20%2F%2F%20Split%20value%20at%20splitChar%2C%20but%20allow%20splitChar%20to%20be%20escaped%0A%20%20%2F%2F%20using%20escapeChar%2E%20Any%20other%20characters%20escaped%20by%20escapeChar%0A%20%20%2F%2F%20will%20be%20included%20as%20usual%20%28including%20escapeChar%20itself%29%2E%0A%20%20function%20splitWithEscape%28value%2C%20splitChar%2C%20escapeChar%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20escapeMode%20%3D%20false%3B%0A%20%20%20%20var%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20for%20%28var%20pos%20%3D%200%3B%20pos%20%3C%20value%2Elength%3B%20pos%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28%21escapeMode%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20splitChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20escapeChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20escapeMode%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20escapeMode%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28currentResult%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%20%20%2F%2F%20Function%20authored%20by%20Yihui%2FJJ%20Allaire%0A%20%20window%2EHTMLWidgets%2EevaluateStringMember%20%3D%20function%28o%2C%20member%29%20%7B%0A%20%20%20%20var%20parts%20%3D%20splitWithEscape%28member%2C%20%27%2E%27%2C%20%27%5C%5C%27%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20l%20%3D%20parts%2Elength%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20part%20%3D%20parts%5Bi%5D%3B%0A%20%20%20%20%20%20%2F%2F%20part%20may%20be%20a%20character%20or%20%27numeric%27%20member%20name%0A%20%20%20%20%20%20if%20%28o%20%21%3D%3D%20null%20%26%26%20typeof%20o%20%3D%3D%3D%20%22object%22%20%26%26%20part%20in%20o%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28i%20%3D%3D%20%28l%20%2D%201%29%29%20%7B%20%2F%2F%20if%20we%20are%20at%20the%20end%20of%20the%20line%20then%20evalulate%0A%20%20%20%20%20%20%20%20%20%20if%20%28typeof%20o%5Bpart%5D%20%3D%3D%3D%20%22string%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20o%5Bpart%5D%20%3D%20eval%28%22%28%22%20%2B%20o%5Bpart%5D%20%2B%20%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%20%2F%2F%20otherwise%20continue%20to%20next%20embedded%20object%0A%20%20%20%20%20%20%20%20%20%20o%20%3D%20o%5Bpart%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%7D%29%28%29%3B%0A%0A"></script> <script src="data:application/x-javascript,%2F%2F%20svg%2Dpan%2Dzoom%20v3%2E1%2E0%0A%2F%2F%20https%3A%2F%2Fgithub%2Ecom%2Fariutta%2Fsvg%2Dpan%2Dzoom%0A%28function%20e%28t%2Cn%2Cr%29%7Bfunction%20s%28o%2Cu%29%7Bif%28%21n%5Bo%5D%29%7Bif%28%21t%5Bo%5D%29%7Bvar%20a%3Dtypeof%20require%3D%3D%22function%22%26%26require%3Bif%28%21u%26%26a%29return%20a%28o%2C%210%29%3Bif%28i%29return%20i%28o%2C%210%29%3Bvar%20f%3Dnew%20Error%28%22Cannot%20find%20module%20%27%22%2Bo%2B%22%27%22%29%3Bthrow%20f%2Ecode%3D%22MODULE%5FNOT%5FFOUND%22%2Cf%7Dvar%20l%3Dn%5Bo%5D%3D%7Bexports%3A%7B%7D%7D%3Bt%5Bo%5D%5B0%5D%2Ecall%28l%2Eexports%2Cfunction%28e%29%7Bvar%20n%3Dt%5Bo%5D%5B1%5D%5Be%5D%3Breturn%20s%28n%3Fn%3Ae%29%7D%2Cl%2Cl%2Eexports%2Ce%2Ct%2Cn%2Cr%29%7Dreturn%20n%5Bo%5D%2Eexports%7Dvar%20i%3Dtypeof%20require%3D%3D%22function%22%26%26require%3Bfor%28var%20o%3D0%3Bo%3Cr%2Elength%3Bo%2B%2B%29s%28r%5Bo%5D%29%3Breturn%20s%7D%29%28%7B1%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20svgPanZoom%20%3D%20require%28%27%2E%2Fsvg%2Dpan%2Dzoom%2Ejs%27%29%3B%0A%0A%2F%2F%20UMD%20module%20definition%0A%28function%28window%2C%20document%29%7B%0A%20%20%2F%2F%20AMD%0A%20%20if%20%28typeof%20define%20%3D%3D%3D%20%27function%27%20%26%26%20define%2Eamd%29%20%7B%0A%20%20%20%20define%28%27svg%2Dpan%2Dzoom%27%2C%20function%20%28%29%20%7B%0A%20%20%20%20%20%20return%20svgPanZoom%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%2F%2F%20CMD%0A%20%20%7D%20else%20if%20%28typeof%20module%20%21%3D%3D%20%27undefined%27%20%26%26%20module%2Eexports%29%20%7B%0A%20%20%20%20module%2Eexports%20%3D%20svgPanZoom%3B%0A%0A%20%20%20%20%2F%2F%20Browser%0A%20%20%20%20%2F%2F%20Keep%20exporting%20globally%20as%20module%2Eexports%20is%20available%20because%20of%20browserify%0A%20%20%20%20window%2EsvgPanZoom%20%3D%20svgPanZoom%3B%0A%20%20%7D%0A%7D%29%28window%2C%20document%29%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dpan%2Dzoom%2Ejs%22%3A5%7D%5D%2C2%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0A%28function%28factory%29%7B%0A%20%20if%20%28%20typeof%20define%20%3D%3D%3D%20%27function%27%20%26%26%20define%2Eamd%20%29%20%7B%0A%20%20%20%20%2F%2F%20AMD%2E%20Register%20as%20an%20anonymous%20module%2E%0A%20%20%20%20define%28%5B%5D%2C%20factory%28%29%29%3B%0A%20%20%7D%20else%20if%20%28typeof%20exports%20%3D%3D%3D%20%27object%27%29%20%7B%0A%20%20%20%20%2F%2F%20Node%2FCommonJS%0A%20%20%20%20module%2Eexports%20%3D%20factory%28%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Browser%20globals%0A%20%20%20%20window%2Ewheel%20%3D%20factory%28%29%3B%0A%20%20%7D%0A%7D%0A%28function%28%29%7B%0A%0A%20%20%2F%2FFull%20details%3A%20https%3A%2F%2Fdeveloper%2Emozilla%2Eorg%2Fen%2DUS%2Fdocs%2FWeb%2FReference%2FEvents%2Fwheel%0A%0A%20%20var%20prefix%20%3D%20%22%22%2C%20%5FaddEventListener%2C%20%5FremoveEventListener%2C%20onwheel%2C%20support%2C%20fns%20%3D%20%5B%5D%3B%0A%0A%20%20%2F%2F%20detect%20event%20model%0A%20%20if%20%28%20window%2EaddEventListener%20%29%20%7B%0A%20%20%20%20%5FaddEventListener%20%3D%20%22addEventListener%22%3B%0A%20%20%20%20%5FremoveEventListener%20%3D%20%22removeEventListener%22%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%5FaddEventListener%20%3D%20%22attachEvent%22%3B%0A%20%20%20%20%5FremoveEventListener%20%3D%20%22detachEvent%22%3B%0A%20%20%20%20prefix%20%3D%20%22on%22%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20detect%20available%20wheel%20event%0A%20%20support%20%3D%20%22onwheel%22%20in%20document%2EcreateElement%28%22div%22%29%20%3F%20%22wheel%22%20%3A%20%2F%2F%20Modern%20browsers%20support%20%22wheel%22%0A%20%20%20%20%20%20%20%20%20%20%20%20document%2Eonmousewheel%20%21%3D%3D%20undefined%20%3F%20%22mousewheel%22%20%3A%20%2F%2F%20Webkit%20and%20IE%20support%20at%20least%20%22mousewheel%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%22DOMMouseScroll%22%3B%20%2F%2F%20let%27s%20assume%20that%20remaining%20browsers%20are%20older%20Firefox%0A%0A%0A%20%20function%20createCallback%28element%2Ccallback%2Ccapture%29%20%7B%0A%0A%20%20%20%20var%20fn%20%3D%20function%28originalEvent%29%20%7B%0A%0A%20%20%20%20%20%20%21originalEvent%20%26%26%20%28%20originalEvent%20%3D%20window%2Eevent%20%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20create%20a%20normalized%20event%20object%0A%20%20%20%20%20%20var%20event%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20keep%20a%20ref%20to%20the%20original%20event%20object%0A%20%20%20%20%20%20%20%20originalEvent%3A%20originalEvent%2C%0A%20%20%20%20%20%20%20%20target%3A%20originalEvent%2Etarget%20%7C%7C%20originalEvent%2EsrcElement%2C%0A%20%20%20%20%20%20%20%20type%3A%20%22wheel%22%2C%0A%20%20%20%20%20%20%20%20deltaMode%3A%20originalEvent%2Etype%20%3D%3D%20%22MozMousePixelScroll%22%20%3F%200%20%3A%201%2C%0A%20%20%20%20%20%20%20%20deltaX%3A%200%2C%0A%20%20%20%20%20%20%20%20delatZ%3A%200%2C%0A%20%20%20%20%20%20%20%20preventDefault%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20originalEvent%2EpreventDefault%20%3F%0A%20%20%20%20%20%20%20%20%20%20%20%20originalEvent%2EpreventDefault%28%29%20%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20originalEvent%2EreturnValue%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%2F%2F%20calculate%20deltaY%20%28and%20deltaX%29%20according%20to%20the%20event%0A%20%20%20%20%20%20if%20%28%20support%20%3D%3D%20%22mousewheel%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20event%2EdeltaY%20%3D%20%2D%201%2F40%20%2A%20originalEvent%2EwheelDelta%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Webkit%20also%20support%20wheelDeltaX%0A%20%20%20%20%20%20%20%20originalEvent%2EwheelDeltaX%20%26%26%20%28%20event%2EdeltaX%20%3D%20%2D%201%2F40%20%2A%20originalEvent%2EwheelDeltaX%20%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20event%2EdeltaY%20%3D%20originalEvent%2Edetail%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20it%27s%20time%20to%20fire%20the%20callback%0A%20%20%20%20%20%20return%20callback%28%20event%20%29%3B%0A%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20fns%2Epush%28%7B%0A%20%20%20%20%20%20element%3A%20element%2C%0A%20%20%20%20%20%20fn%3A%20fn%2C%0A%20%20%20%20%20%20capture%3A%20capture%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20return%20fn%3B%0A%20%20%7D%0A%0A%20%20function%20getCallback%28element%2Ccapture%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20fns%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28fns%5Bi%5D%2Eelement%20%3D%3D%3D%20element%20%26%26%20fns%5Bi%5D%2Ecapture%20%3D%3D%3D%20capture%29%20%7B%0A%20%20%20%20%20%20%20%20return%20fns%5Bi%5D%2Efn%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28%29%7B%7D%3B%0A%20%20%7D%0A%0A%20%20function%20removeCallback%28element%2Ccapture%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20fns%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28fns%5Bi%5D%2Eelement%20%3D%3D%3D%20element%20%26%26%20fns%5Bi%5D%2Ecapture%20%3D%3D%3D%20capture%29%20%7B%0A%20%20%20%20%20%20%20%20return%20fns%2Esplice%28i%2C1%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20%5FaddWheelListener%28%20elem%2C%20eventName%2C%20callback%2C%20useCapture%20%29%20%7B%0A%20%20%20%20%0A%20%20%20%20var%20cb%3B%0A%0A%20%20%20%20if%20%28support%20%3D%3D%3D%20%22wheel%22%29%20%7B%0A%20%20%20%20%20%20cb%20%3D%20callback%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20cb%20%3D%20createCallback%28elem%2Ccallback%2CuseCapture%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20elem%5B%20%5FaddEventListener%20%5D%28%20prefix%20%2B%20eventName%2C%20cb%2C%20useCapture%20%7C%7C%20false%20%29%3B%0A%0A%20%20%7D%0A%0A%20%20function%20%5FremoveWheelListener%28%20elem%2C%20eventName%2C%20callback%2C%20useCapture%20%29%20%7B%0A%0A%20%20%20%20if%20%28support%20%3D%3D%3D%20%22wheel%22%29%20%7B%0A%20%20%20%20%20%20cb%20%3D%20callback%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20cb%20%3D%20getCallback%28elem%2CuseCapture%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20elem%5B%20%5FremoveEventListener%20%5D%28%20prefix%20%2B%20eventName%2C%20cb%2C%20useCapture%20%7C%7C%20false%20%29%3B%0A%0A%20%20%20%20removeCallback%28elem%2CuseCapture%29%3B%0A%0A%20%20%7D%0A%0A%20%20function%20addWheelListener%28%20elem%2C%20callback%2C%20useCapture%20%29%20%7B%0A%20%20%20%20%5FaddWheelListener%28%20elem%2C%20support%2C%20callback%2C%20useCapture%20%29%3B%0A%0A%20%20%20%20%2F%2F%20handle%20MozMousePixelScroll%20in%20older%20Firefox%0A%20%20%20%20if%28%20support%20%3D%3D%20%22DOMMouseScroll%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%5FaddWheelListener%28%20elem%2C%20%22MozMousePixelScroll%22%2C%20callback%2C%20useCapture%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20removeWheelListener%28elem%2Ccallback%2CuseCapture%29%7B%0A%20%20%20%20%5FremoveWheelListener%28elem%2Csupport%2Ccallback%2CuseCapture%29%3B%0A%0A%20%20%20%20%2F%2F%20handle%20MozMousePixelScroll%20in%20older%20Firefox%0A%20%20%20%20if%28%20support%20%3D%3D%20%22DOMMouseScroll%22%20%29%20%7B%0A%20%20%20%20%20%20%20%20%5FremoveWheelListener%28elem%2C%20%22MozMousePixelScroll%22%2C%20callback%2C%20useCapture%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20return%20%7B%0A%20%20%20%20on%3A%20addWheelListener%2C%0A%20%20%20%20off%3A%20removeWheelListener%0A%20%20%7D%3B%0A%0A%7D%29%29%3B%0A%7D%2C%7B%7D%5D%2C3%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%3B%0A%0Amodule%2Eexports%20%3D%20%7B%0A%20%20enable%3A%20function%28instance%29%20%7B%0A%20%20%20%20%2F%2F%20Select%20%28and%20create%20if%20necessary%29%20defs%0A%20%20%20%20var%20defs%20%3D%20instance%2Esvg%2EquerySelector%28%27defs%27%29%0A%20%20%20%20if%20%28%21defs%29%20%7B%0A%20%20%20%20%20%20defs%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27defs%27%29%0A%20%20%20%20%20%20instance%2Esvg%2EappendChild%28defs%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Create%20style%20element%0A%20%20%20%20var%20style%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27style%27%29%0A%20%20%20%20style%2EsetAttribute%28%27type%27%2C%20%27text%2Fcss%27%29%0A%20%20%20%20style%2EtextContent%20%3D%20%27%2Esvg%2Dpan%2Dzoom%2Dcontrol%20%7B%20cursor%3A%20pointer%3B%20fill%3A%20black%3B%20fill%2Dopacity%3A%200%2E333%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%3Ahover%20%7B%20fill%2Dopacity%3A%200%2E8%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%20%7B%20fill%3A%20white%3B%20fill%2Dopacity%3A%200%2E5%3B%20%7D%20%2Esvg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%20%7B%20fill%2Dopacity%3A%200%2E8%3B%20%7D%27%0A%20%20%20%20defs%2EappendChild%28style%29%0A%0A%0A%20%20%20%20%2F%2F%20Zoom%20Group%0A%20%20%20%20var%20zoomGroup%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrols%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27transform%27%2C%20%27translate%28%27%20%2B%20%28%20instance%2Ewidth%20%2D%2070%20%29%20%2B%20%27%20%27%20%2B%20%28%20instance%2Eheight%20%2D%2076%20%29%20%2B%20%27%29%20scale%280%2E75%29%27%29%3B%0A%20%20%20%20zoomGroup%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%0A%20%20%20%20%2F%2F%20Control%20elements%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomIn%28instance%29%29%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomReset%28instance%29%29%0A%20%20%20%20zoomGroup%2EappendChild%28this%2E%5FcreateZoomOut%28instance%29%29%0A%0A%20%20%20%20%2F%2F%20Finally%20append%20created%20element%0A%20%20%20%20instance%2Esvg%2EappendChild%28zoomGroup%29%0A%0A%20%20%20%20%2F%2F%20Cache%20control%20instance%0A%20%20%20%20instance%2EcontrolIcons%20%3D%20zoomGroup%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomIn%3A%20function%28instance%29%20%7B%0A%20%20%20%20var%20zoomIn%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dzoom%2Din%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27transform%27%2C%20%27translate%2830%2E5%205%29%20scale%280%2E015%29%27%29%3B%0A%20%20%20%20zoomIn%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20zoomIn%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomIn%28%29%7D%2C%20false%29%0A%20%20%20%20zoomIn%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomIn%28%29%7D%2C%20false%29%0A%0A%20%20%20%20var%20zoomInBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27x%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27y%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27width%27%2C%20%271500%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27height%27%2C%20%271400%27%29%3B%0A%20%20%20%20zoomInBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20zoomIn%2EappendChild%28zoomInBackground%29%3B%0A%0A%20%20%20%20var%20zoomInShape%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20zoomInShape%2EsetAttribute%28%27d%27%2C%20%27M1280%20576v128q0%2026%20%2D19%2045t%2D45%2019h%2D320v320q0%2026%20%2D19%2045t%2D45%2019h%2D128q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D320h%2D320q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D128q0%20%2D26%2019%20%2D45t45%20%2D19h320v%2D320q0%20%2D26%2019%20%2D45t45%20%2D19h128q26%200%2045%2019t19%2045v320h320q26%200%2045%2019t19%2045zM1536%201120v%2D960%20q0%20%2D119%20%2D84%2E5%20%2D203%2E5t%2D203%2E5%20%2D84%2E5h%2D960q%2D119%200%20%2D203%2E5%2084%2E5t%2D84%2E5%20203%2E5v960q0%20119%2084%2E5%20203%2E5t203%2E5%2084%2E5h960q119%200%20203%2E5%20%2D84%2E5t84%2E5%20%2D203%2E5z%27%29%3B%0A%20%20%20%20zoomInShape%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20zoomIn%2EappendChild%28zoomInShape%29%3B%0A%0A%20%20%20%20return%20zoomIn%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomReset%3A%20function%28instance%29%7B%0A%20%20%20%20%2F%2F%20reset%0A%20%20%20%20var%20resetPanZoomControl%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dreset%2Dpan%2Dzoom%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27transform%27%2C%20%27translate%285%2035%29%20scale%280%2E4%29%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2Ereset%28%29%7D%2C%20false%29%3B%0A%20%20%20%20resetPanZoomControl%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2Ereset%28%29%7D%2C%20false%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27x%27%2C%20%272%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27y%27%2C%20%272%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27width%27%2C%20%27182%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27height%27%2C%20%2758%27%29%3B%0A%20%20%20%20resetPanZoomControlBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlBackground%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlShape1%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20resetPanZoomControlShape1%2EsetAttribute%28%27d%27%2C%20%27M33%2E051%2C20%2E632c%2D0%2E742%2D0%2E406%2D1%2E854%2D0%2E609%2D3%2E338%2D0%2E609h%2D7%2E969v9%2E281h7%2E769c1%2E543%2C0%2C2%2E701%2D0%2E188%2C3%2E473%2D0%2E562c1%2E365%2D0%2E656%2C2%2E048%2D1%2E953%2C2%2E048%2D3%2E891C35%2E032%2C22%2E757%2C34%2E372%2C21%2E351%2C33%2E051%2C20%2E632z%27%29%3B%0A%20%20%20%20resetPanZoomControlShape1%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlShape1%29%3B%0A%0A%20%20%20%20var%20resetPanZoomControlShape2%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20resetPanZoomControlShape2%2EsetAttribute%28%27d%27%2C%20%27M170%2E231%2C0%2E5H15%2E847C7%2E102%2C0%2E5%2C0%2E5%2C5%2E708%2C0%2E5%2C11%2E84v38%2E861C0%2E5%2C56%2E833%2C7%2E102%2C61%2E5%2C15%2E847%2C61%2E5h154%2E384c8%2E745%2C0%2C15%2E269%2D4%2E667%2C15%2E269%2D10%2E798V11%2E84C185%2E5%2C5%2E708%2C178%2E976%2C0%2E5%2C170%2E231%2C0%2E5z%20M42%2E837%2C48%2E569h%2D7%2E969c%2D0%2E219%2D0%2E766%2D0%2E375%2D1%2E383%2D0%2E469%2D1%2E852c%2D0%2E188%2D0%2E969%2D0%2E289%2D1%2E961%2D0%2E305%2D2%2E977l%2D0%2E047%2D3%2E211c%2D0%2E03%2D2%2E203%2D0%2E41%2D3%2E672%2D1%2E142%2D4%2E406c%2D0%2E732%2D0%2E734%2D2%2E103%2D1%2E102%2D4%2E113%2D1%2E102h%2D7%2E05v13%2E547h%2D7%2E055V14%2E022h16%2E524c2%2E361%2C0%2E047%2C4%2E178%2C0%2E344%2C5%2E45%2C0%2E891c1%2E272%2C0%2E547%2C2%2E351%2C1%2E352%2C3%2E234%2C2%2E414c0%2E731%2C0%2E875%2C1%2E31%2C1%2E844%2C1%2E737%2C2%2E906s0%2E64%2C2%2E273%2C0%2E64%2C3%2E633c0%2C1%2E641%2D0%2E414%2C3%2E254%2D1%2E242%2C4%2E84s%2D2%2E195%2C2%2E707%2D4%2E102%2C3%2E363c1%2E594%2C0%2E641%2C2%2E723%2C1%2E551%2C3%2E387%2C2%2E73s0%2E996%2C2%2E98%2C0%2E996%2C5%2E402v2%2E32c0%2C1%2E578%2C0%2E063%2C2%2E648%2C0%2E19%2C3%2E211c0%2E19%2C0%2E891%2C0%2E635%2C1%2E547%2C1%2E333%2C1%2E969V48%2E569z%20M75%2E579%2C48%2E569h%2D26%2E18V14%2E022h25%2E336v6%2E117H56%2E454v7%2E336h16%2E781v6H56%2E454v8%2E883h19%2E125V48%2E569z%20M104%2E497%2C46%2E331c%2D2%2E44%2C2%2E086%2D5%2E887%2C3%2E129%2D10%2E34%2C3%2E129c%2D4%2E548%2C0%2D8%2E125%2D1%2E027%2D10%2E731%2D3%2E082s%2D3%2E909%2D4%2E879%2D3%2E909%2D8%2E473h6%2E891c0%2E224%2C1%2E578%2C0%2E662%2C2%2E758%2C1%2E316%2C3%2E539c1%2E196%2C1%2E422%2C3%2E246%2C2%2E133%2C6%2E15%2C2%2E133c1%2E739%2C0%2C3%2E151%2D0%2E188%2C4%2E236%2D0%2E562c2%2E058%2D0%2E719%2C3%2E087%2D2%2E055%2C3%2E087%2D4%2E008c0%2D1%2E141%2D0%2E504%2D2%2E023%2D1%2E512%2D2%2E648c%2D1%2E008%2D0%2E609%2D2%2E607%2D1%2E148%2D4%2E796%2D1%2E617l%2D3%2E74%2D0%2E82c%2D3%2E676%2D0%2E812%2D6%2E201%2D1%2E695%2D7%2E576%2D2%2E648c%2D2%2E328%2D1%2E594%2D3%2E492%2D4%2E086%2D3%2E492%2D7%2E477c0%2D3%2E094%2C1%2E139%2D5%2E664%2C3%2E417%2D7%2E711s5%2E623%2D3%2E07%2C10%2E036%2D3%2E07c3%2E685%2C0%2C6%2E829%2C0%2E965%2C9%2E431%2C2%2E895c2%2E602%2C1%2E93%2C3%2E966%2C4%2E73%2C4%2E093%2C8%2E402h%2D6%2E938c%2D0%2E128%2D2%2E078%2D1%2E057%2D3%2E555%2D2%2E787%2D4%2E43c%2D1%2E154%2D0%2E578%2D2%2E587%2D0%2E867%2D4%2E301%2D0%2E867c%2D1%2E907%2C0%2D3%2E428%2C0%2E375%2D4%2E565%2C1%2E125c%2D1%2E138%2C0%2E75%2D1%2E706%2C1%2E797%2D1%2E706%2C3%2E141c0%2C1%2E234%2C0%2E561%2C2%2E156%2C1%2E682%2C2%2E766c0%2E721%2C0%2E406%2C2%2E25%2C0%2E883%2C4%2E589%2C1%2E43l6%2E063%2C1%2E43c2%2E657%2C0%2E625%2C4%2E648%2C1%2E461%2C5%2E975%2C2%2E508c2%2E059%2C1%2E625%2C3%2E089%2C3%2E977%2C3%2E089%2C7%2E055C108%2E157%2C41%2E624%2C106%2E937%2C44%2E245%2C104%2E497%2C46%2E331z%20M139%2E61%2C48%2E569h%2D26%2E18V14%2E022h25%2E336v6%2E117h%2D18%2E281v7%2E336h16%2E781v6h%2D16%2E781v8%2E883h19%2E125V48%2E569z%20M170%2E337%2C20%2E14h%2D10%2E336v28%2E43h%2D7%2E266V20%2E14h%2D10%2E383v%2D6%2E117h27%2E984V20%2E14z%27%29%3B%0A%20%20%20%20resetPanZoomControlShape2%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20resetPanZoomControl%2EappendChild%28resetPanZoomControlShape2%29%3B%0A%0A%20%20%20%20return%20resetPanZoomControl%0A%20%20%7D%0A%0A%2C%20%5FcreateZoomOut%3A%20function%28instance%29%7B%0A%20%20%20%20%2F%2F%20zoom%20out%0A%20%20%20%20var%20zoomOut%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27id%27%2C%20%27svg%2Dpan%2Dzoom%2Dzoom%2Dout%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27transform%27%2C%20%27translate%2830%2E5%2070%29%20scale%280%2E015%29%27%29%3B%0A%20%20%20%20zoomOut%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%3B%0A%20%20%20%20zoomOut%2EaddEventListener%28%27click%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomOut%28%29%7D%2C%20false%29%3B%0A%20%20%20%20zoomOut%2EaddEventListener%28%27touchstart%27%2C%20function%28%29%20%7Binstance%2EgetPublicInstance%28%29%2EzoomOut%28%29%7D%2C%20false%29%3B%0A%0A%20%20%20%20var%20zoomOutBackground%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27rect%27%29%3B%20%2F%2F%20TODO%20change%20these%20background%20space%20fillers%20to%20rounded%20rectangles%20so%20they%20look%20prettier%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27x%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27y%27%2C%20%270%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27width%27%2C%20%271500%27%29%3B%20%2F%2F%20larger%20than%20expected%20because%20the%20whole%20group%20is%20transformed%20to%20scale%20down%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27height%27%2C%20%271400%27%29%3B%0A%20%20%20%20zoomOutBackground%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Dbackground%27%29%3B%0A%20%20%20%20zoomOut%2EappendChild%28zoomOutBackground%29%3B%0A%0A%20%20%20%20var%20zoomOutShape%20%3D%20document%2EcreateElementNS%28SvgUtils%2EsvgNS%2C%20%27path%27%29%3B%0A%20%20%20%20zoomOutShape%2EsetAttribute%28%27d%27%2C%20%27M1280%20576v128q0%2026%20%2D19%2045t%2D45%2019h%2D896q%2D26%200%20%2D45%20%2D19t%2D19%20%2D45v%2D128q0%20%2D26%2019%20%2D45t45%20%2D19h896q26%200%2045%2019t19%2045zM1536%201120v%2D960q0%20%2D119%20%2D84%2E5%20%2D203%2E5t%2D203%2E5%20%2D84%2E5h%2D960q%2D119%200%20%2D203%2E5%2084%2E5t%2D84%2E5%20203%2E5v960q0%20119%2084%2E5%20203%2E5t203%2E5%2084%2E5h960q119%200%20203%2E5%20%2D84%2E5%20t84%2E5%20%2D203%2E5z%27%29%3B%0A%20%20%20%20zoomOutShape%2EsetAttribute%28%27class%27%2C%20%27svg%2Dpan%2Dzoom%2Dcontrol%2Delement%27%29%3B%0A%20%20%20%20zoomOut%2EappendChild%28zoomOutShape%29%3B%0A%0A%20%20%20%20return%20zoomOut%0A%20%20%7D%0A%0A%2C%20disable%3A%20function%28instance%29%20%7B%0A%20%20%20%20if%20%28instance%2EcontrolIcons%29%20%7B%0A%20%20%20%20%20%20instance%2EcontrolIcons%2EparentNode%2EremoveChild%28instance%2EcontrolIcons%29%0A%20%20%20%20%20%20instance%2EcontrolIcons%20%3D%20null%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dutilities%22%3A6%7D%5D%2C4%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%0A%20%20%2C%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%20%20%3B%0A%0Avar%20ShadowViewport%20%3D%20function%28viewport%2C%20options%29%7B%0A%20%20this%2Einit%28viewport%2C%20options%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Initialization%0A%20%2A%0A%20%2A%20%40param%20%20%7BSVGElement%7D%20viewport%0A%20%2A%20%40param%20%20%7BObject%7D%20options%0A%20%2A%2F%0AShadowViewport%2Eprototype%2Einit%20%3D%20function%28viewport%2C%20options%29%20%7B%0A%20%20%2F%2F%20DOM%20Elements%0A%20%20this%2Eviewport%20%3D%20viewport%0A%20%20this%2Eoptions%20%3D%20options%0A%0A%20%20%2F%2F%20State%20cache%0A%20%20this%2EoriginalState%20%3D%20%7Bzoom%3A%201%2C%20x%3A%200%2C%20y%3A%200%7D%0A%20%20this%2EactiveState%20%3D%20%7Bzoom%3A%201%2C%20x%3A%200%2C%20y%3A%200%7D%0A%0A%20%20this%2EupdateCTMCached%20%3D%20Utils%2Eproxy%28this%2EupdateCTM%2C%20this%29%0A%0A%20%20%2F%2F%20Create%20a%20custom%20requestAnimationFrame%20taking%20in%20account%20refreshRate%0A%20%20this%2ErequestAnimationFrame%20%3D%20Utils%2EcreateRequestAnimationFrame%28this%2Eoptions%2ErefreshRate%29%0A%0A%20%20%2F%2F%20ViewBox%0A%20%20this%2EviewBox%20%3D%20%7Bx%3A%200%2C%20y%3A%200%2C%20width%3A%200%2C%20height%3A%200%7D%0A%20%20this%2EcacheViewBox%28%29%0A%0A%20%20%2F%2F%20Process%20CTM%0A%20%20this%2EprocessCTM%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Cache%20initial%20viewBox%20value%0A%20%2A%20If%20no%20viewBox%20is%20defined%2C%20then%20use%20viewport%20size%2Fposition%20instead%20for%20viewBox%20values%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EcacheViewBox%20%3D%20function%28%29%20%7B%0A%20%20var%20svgViewBox%20%3D%20this%2Eoptions%2Esvg%2EgetAttribute%28%27viewBox%27%29%0A%0A%20%20if%20%28svgViewBox%29%20%7B%0A%20%20%20%20var%20viewBoxValues%20%3D%20svgViewBox%2Esplit%28%27%20%27%29%2Emap%28parseFloat%29%0A%0A%20%20%20%20%2F%2F%20Cache%20viewbox%20x%20and%20y%20offset%0A%20%20%20%20this%2EviewBox%2Ex%20%3D%20viewBoxValues%5B0%5D%0A%20%20%20%20this%2EviewBox%2Ey%20%3D%20viewBoxValues%5B1%5D%0A%20%20%20%20this%2EviewBox%2Ewidth%20%3D%20viewBoxValues%5B2%5D%0A%20%20%20%20this%2EviewBox%2Eheight%20%3D%20viewBoxValues%5B3%5D%0A%0A%20%20%20%20var%20zoom%20%3D%20Math%2Emin%28this%2Eoptions%2Ewidth%20%2F%20this%2EviewBox%2Ewidth%2C%20this%2Eoptions%2Eheight%20%2F%20this%2EviewBox%2Eheight%29%0A%0A%20%20%20%20%2F%2F%20Update%20active%20state%0A%20%20%20%20this%2EactiveState%2Ezoom%20%3D%20zoom%0A%20%20%20%20this%2EactiveState%2Ex%20%3D%20%28this%2Eoptions%2Ewidth%20%2D%20this%2EviewBox%2Ewidth%20%2A%20zoom%29%20%2F%202%0A%20%20%20%20this%2EactiveState%2Ey%20%3D%20%28this%2Eoptions%2Eheight%20%2D%20this%2EviewBox%2Eheight%20%2A%20zoom%29%20%2F%202%0A%0A%20%20%20%20%2F%2F%20Force%20updating%20CTM%0A%20%20%20%20this%2EupdateCTMOnNextFrame%28%29%0A%0A%20%20%20%20this%2Eoptions%2Esvg%2EremoveAttribute%28%27viewBox%27%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20var%20bBox%20%3D%20this%2Eviewport%2EgetBBox%28%29%3B%0A%0A%20%20%20%20%2F%2F%20Cache%20viewbox%20sizes%0A%20%20%20%20this%2EviewBox%2Ex%20%3D%20bBox%2Ex%3B%0A%20%20%20%20this%2EviewBox%2Ey%20%3D%20bBox%2Ey%3B%0A%20%20%20%20this%2EviewBox%2Ewidth%20%3D%20bBox%2Ewidth%0A%20%20%20%20this%2EviewBox%2Eheight%20%3D%20bBox%2Eheight%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Recalculate%20viewport%20sizes%20and%20update%20viewBox%20cache%0A%20%2A%2F%0AShadowViewport%2Eprototype%2ErecacheViewBox%20%3D%20function%28%29%20%7B%0A%20%20var%20boundingClientRect%20%3D%20this%2Eviewport%2EgetBoundingClientRect%28%29%0A%20%20%20%20%2C%20viewBoxWidth%20%3D%20boundingClientRect%2Ewidth%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%2C%20viewBoxHeight%20%3D%20boundingClientRect%2Eheight%20%2F%20this%2EgetZoom%28%29%0A%0A%20%20%2F%2F%20Cache%20viewbox%0A%20%20this%2EviewBox%2Ex%20%3D%200%0A%20%20this%2EviewBox%2Ey%20%3D%200%0A%20%20this%2EviewBox%2Ewidth%20%3D%20viewBoxWidth%0A%20%20this%2EviewBox%2Eheight%20%3D%20viewBoxHeight%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Returns%20a%20viewbox%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20viewbox%20object%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetViewBox%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EviewBox%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20initial%20zoom%20and%20pan%20values%2E%20Save%20them%20into%20originalState%0A%20%2A%20Parses%20viewBox%20attribute%20to%20alter%20initial%20sizes%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EprocessCTM%20%3D%20function%28%29%20%7B%0A%20%20var%20newCTM%20%3D%20this%2EgetCTM%28%29%0A%0A%20%20if%20%28this%2Eoptions%2Efit%29%20%7B%0A%20%20%20%20var%20newScale%20%3D%20Math%2Emin%28this%2Eoptions%2Ewidth%2F%28this%2EviewBox%2Ewidth%20%2D%20this%2EviewBox%2Ex%29%2C%20this%2Eoptions%2Eheight%2F%28this%2EviewBox%2Eheight%20%2D%20this%2EviewBox%2Ey%29%29%3B%0A%0A%20%20%20%20newCTM%2Ea%20%3D%20newScale%3B%20%2F%2Fx%2Dscale%0A%20%20%20%20newCTM%2Ed%20%3D%20newScale%3B%20%2F%2Fy%2Dscale%0A%20%20%20%20newCTM%2Ee%20%3D%20%2Dthis%2EviewBox%2Ex%20%2A%20newScale%3B%20%2F%2Fx%2Dtransform%0A%20%20%20%20newCTM%2Ef%20%3D%20%2Dthis%2EviewBox%2Ey%20%2A%20newScale%3B%20%2F%2Fy%2Dtransform%0A%20%20%7D%0A%0A%20%20if%20%28this%2Eoptions%2Ecenter%29%20%7B%0A%20%20%20%20var%20offsetX%20%3D%20%28this%2Eoptions%2Ewidth%20%2D%20%28this%2EviewBox%2Ewidth%20%2B%20this%2EviewBox%2Ex%29%20%2A%20newCTM%2Ea%29%20%2A%200%2E5%0A%20%20%20%20%20%20%2C%20offsetY%20%3D%20%28this%2Eoptions%2Eheight%20%2D%20%28this%2EviewBox%2Eheight%20%2B%20this%2EviewBox%2Ey%29%20%2A%20newCTM%2Ea%29%20%2A%200%2E5%0A%0A%20%20%20%20newCTM%2Ee%20%3D%20offsetX%0A%20%20%20%20newCTM%2Ef%20%3D%20offsetY%0A%20%20%7D%0A%0A%20%20%2F%2F%20Cache%20initial%20values%2E%20Based%20on%20activeState%20and%20fix%2Bcenter%20opitons%0A%20%20this%2EoriginalState%2Ezoom%20%3D%20newCTM%2Ea%0A%20%20this%2EoriginalState%2Ex%20%3D%20newCTM%2Ee%0A%20%20this%2EoriginalState%2Ey%20%3D%20newCTM%2Ef%0A%0A%20%20%2F%2F%20Update%20viewport%20CTM%20and%20cache%20zoom%20and%20pan%0A%20%20this%2EsetCTM%28newCTM%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20originalState%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetOriginalState%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EoriginalState%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20actualState%20object%2E%20Safe%20to%20alter%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetState%20%3D%20function%28%29%20%7B%0A%20%20return%20Utils%2Eextend%28%7B%7D%2C%20this%2EactiveState%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%20for%20pubilc%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetRelativeZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%20%2F%20this%2EoriginalState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Compute%20zoom%20scale%20for%20pubilc%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EcomputeRelativeZoom%20%3D%20function%28scale%29%20%7B%0A%20%20return%20scale%20%2F%20this%2EoriginalState%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20pan%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetPan%20%3D%20function%28%29%20%7B%0A%20%20return%20%7Bx%3A%20this%2EactiveState%2Ex%2C%20y%3A%20this%2EactiveState%2Ey%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Return%20cached%20viewport%20CTM%20value%20that%20can%20be%20safely%20modified%0A%20%2A%0A%20%2A%20%40return%20%7BSVGMatrix%7D%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EgetCTM%20%3D%20function%28%29%20%7B%0A%20%20var%20safeCTM%20%3D%20this%2Eoptions%2Esvg%2EcreateSVGMatrix%28%29%0A%0A%20%20%2F%2F%20Copy%20values%20manually%20as%20in%20FF%20they%20are%20not%20itterable%0A%20%20safeCTM%2Ea%20%3D%20this%2EactiveState%2Ezoom%0A%20%20safeCTM%2Eb%20%3D%200%0A%20%20safeCTM%2Ec%20%3D%200%0A%20%20safeCTM%2Ed%20%3D%20this%2EactiveState%2Ezoom%0A%20%20safeCTM%2Ee%20%3D%20this%2EactiveState%2Ex%0A%20%20safeCTM%2Ef%20%3D%20this%2EactiveState%2Ey%0A%0A%20%20return%20safeCTM%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20a%20new%20CTM%0A%20%2A%0A%20%2A%20%40param%20%7BSVGMatrix%7D%20newCTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EsetCTM%20%3D%20function%28newCTM%29%20%7B%0A%20%20var%20willZoom%20%3D%20this%2EisZoomDifferent%28newCTM%29%0A%20%20%20%20%2C%20willPan%20%3D%20this%2EisPanDifferent%28newCTM%29%0A%0A%20%20if%20%28willZoom%20%7C%7C%20willPan%29%20%7B%0A%20%20%20%20%2F%2F%20Before%20zoom%0A%20%20%20%20if%20%28willZoom%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20returns%20false%20then%20cancel%20zooming%0A%20%20%20%20%20%20if%20%28this%2Eoptions%2EbeforeZoom%28this%2EgetRelativeZoom%28%29%2C%20this%2EcomputeRelativeZoom%28newCTM%2Ea%29%29%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20newCTM%2Ea%20%3D%20newCTM%2Ed%20%3D%20this%2EactiveState%2Ezoom%0A%20%20%20%20%20%20%20%20willZoom%20%3D%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Before%20pan%0A%20%20%20%20if%20%28willPan%29%20%7B%0A%20%20%20%20%20%20var%20preventPan%20%3D%20this%2Eoptions%2EbeforePan%28this%2EgetPan%28%29%2C%20%7Bx%3A%20newCTM%2Ee%2C%20y%3A%20newCTM%2Ef%7D%29%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20prevent%20pan%20is%20an%20object%0A%20%20%20%20%20%20%20%20%2C%20preventPanX%20%3D%20false%0A%20%20%20%20%20%20%20%20%2C%20preventPanY%20%3D%20false%0A%0A%20%20%20%20%20%20%2F%2F%20If%20prevent%20pan%20is%20Boolean%20false%0A%20%20%20%20%20%20if%20%28preventPan%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Set%20x%20and%20y%20same%20as%20before%0A%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20this%2EgetPan%28%29%2Ex%0A%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20this%2EgetPan%28%29%2Ey%0A%0A%20%20%20%20%20%20%20%20preventPanX%20%3D%20preventPanY%20%3D%20true%0A%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisObject%28preventPan%29%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20for%20X%20axes%20attribute%0A%20%20%20%20%20%20%20%20if%20%28preventPan%2Ex%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Prevent%20panning%20on%20x%20axes%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20this%2EgetPan%28%29%2Ex%0A%20%20%20%20%20%20%20%20%20%20preventPanX%20%3D%20true%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisNumber%28preventPan%2Ex%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20a%20custom%20pan%20value%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ee%20%3D%20preventPan%2Ex%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20for%20Y%20axes%20attribute%0A%20%20%20%20%20%20%20%20if%20%28preventPan%2Ey%20%3D%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Prevent%20panning%20on%20x%20axes%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20this%2EgetPan%28%29%2Ey%0A%20%20%20%20%20%20%20%20%20%20preventPanY%20%3D%20true%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28Utils%2EisNumber%28preventPan%2Ey%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20a%20custom%20pan%20value%0A%20%20%20%20%20%20%20%20%20%20newCTM%2Ef%20%3D%20preventPan%2Ey%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Update%20willPan%20flag%0A%20%20%20%20%20%20if%20%28preventPanX%20%26%26%20preventPanY%29%20%7B%0A%20%20%20%20%20%20%20%20willPan%20%3D%20false%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Check%20again%20if%20should%20zoom%20or%20pan%0A%20%20%20%20if%20%28willZoom%20%7C%7C%20willPan%29%20%7B%0A%20%20%20%20%20%20this%2EupdateCache%28newCTM%29%0A%0A%20%20%20%20%20%20this%2EupdateCTMOnNextFrame%28%29%0A%0A%20%20%20%20%20%20%2F%2F%20After%20callbacks%0A%20%20%20%20%20%20if%20%28willZoom%29%20%7Bthis%2Eoptions%2EonZoom%28this%2EgetRelativeZoom%28%29%29%7D%0A%20%20%20%20%20%20if%20%28willPan%29%20%7Bthis%2Eoptions%2EonPan%28this%2EgetPan%28%29%29%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0AShadowViewport%2Eprototype%2EisZoomDifferent%20%3D%20function%28newCTM%29%20%7B%0A%20%20return%20this%2EactiveState%2Ezoom%20%21%3D%3D%20newCTM%2Ea%0A%7D%0A%0AShadowViewport%2Eprototype%2EisPanDifferent%20%3D%20function%28newCTM%29%20%7B%0A%20%20return%20this%2EactiveState%2Ex%20%21%3D%3D%20newCTM%2Ee%20%7C%7C%20this%2EactiveState%2Ey%20%21%3D%3D%20newCTM%2Ef%0A%7D%0A%0A%0A%2F%2A%2A%0A%20%2A%20Update%20cached%20CTM%20and%20active%20state%0A%20%2A%0A%20%2A%20%40param%20%7BSVGMatrix%7D%20newCTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCache%20%3D%20function%28newCTM%29%20%7B%0A%20%20this%2EactiveState%2Ezoom%20%3D%20newCTM%2Ea%0A%20%20this%2EactiveState%2Ex%20%3D%20newCTM%2Ee%0A%20%20this%2EactiveState%2Ey%20%3D%20newCTM%2Ef%0A%7D%0A%0AShadowViewport%2Eprototype%2EpendingUpdate%20%3D%20false%0A%0A%2F%2A%2A%0A%20%2A%20Place%20a%20request%20to%20update%20CTM%20on%20next%20Frame%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCTMOnNextFrame%20%3D%20function%28%29%20%7B%0A%20%20if%20%28%21this%2EpendingUpdate%29%20%7B%0A%20%20%20%20%2F%2F%20Lock%0A%20%20%20%20this%2EpendingUpdate%20%3D%20true%0A%0A%20%20%20%20%2F%2F%20Throttle%20next%20update%0A%20%20%20%20this%2ErequestAnimationFrame%2Ecall%28window%2C%20this%2EupdateCTMCached%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Update%20viewport%20CTM%20with%20cached%20CTM%0A%20%2A%2F%0AShadowViewport%2Eprototype%2EupdateCTM%20%3D%20function%28%29%20%7B%0A%20%20%2F%2F%20Updates%20SVG%20element%0A%20%20SvgUtils%2EsetCTM%28this%2Eviewport%2C%20this%2EgetCTM%28%29%2C%20this%2Edefs%29%0A%0A%20%20%2F%2F%20Free%20the%20lock%0A%20%20this%2EpendingUpdate%20%3D%20false%0A%7D%0A%0Amodule%2Eexports%20%3D%20function%28viewport%2C%20options%29%7B%0A%20%20return%20new%20ShadowViewport%28viewport%2C%20options%29%0A%7D%0A%0A%7D%2C%7B%22%2E%2Fsvg%2Dutilities%22%3A6%2C%22%2E%2Futilities%22%3A7%7D%5D%2C5%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20Wheel%20%3D%20require%28%27uniwheel%27%29%0A%2C%20ControlIcons%20%3D%20require%28%27%2E%2Fcontrol%2Dicons%27%29%0A%2C%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%2C%20SvgUtils%20%3D%20require%28%27%2E%2Fsvg%2Dutilities%27%29%0A%2C%20ShadowViewport%20%3D%20require%28%27%2E%2Fshadow%2Dviewport%27%29%0A%0Avar%20SvgPanZoom%20%3D%20function%28svg%2C%20options%29%20%7B%0A%20%20this%2Einit%28svg%2C%20options%29%0A%7D%0A%0Avar%20optionsDefaults%20%3D%20%7B%0A%20%20viewportSelector%3A%20%27%2Esvg%2Dpan%2Dzoom%5Fviewport%27%20%2F%2F%20Viewport%20selector%2E%20Can%20be%20querySelector%20string%20or%20SVGElement%0A%2C%20panEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20panning%20%28default%20enabled%29%0A%2C%20controlIconsEnabled%3A%20false%20%2F%2F%20insert%20icons%20to%20give%20user%20an%20option%20in%20addition%20to%20mouse%20events%20to%20control%20pan%2Fzoom%20%28default%20disabled%29%0A%2C%20zoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20%28default%20enabled%29%0A%2C%20dblClickZoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20by%20double%20clicking%20%28default%20enabled%29%0A%2C%20mouseWheelZoomEnabled%3A%20true%20%2F%2F%20enable%20or%20disable%20zooming%20by%20mouse%20wheel%20%28default%20enabled%29%0A%2C%20zoomScaleSensitivity%3A%200%2E2%20%2F%2F%20Zoom%20sensitivity%0A%2C%20minZoom%3A%200%2E5%20%2F%2F%20Minimum%20Zoom%20level%0A%2C%20maxZoom%3A%2010%20%2F%2F%20Maximum%20Zoom%20level%0A%2C%20fit%3A%20true%20%2F%2F%20enable%20or%20disable%20viewport%20fit%20in%20SVG%20%28default%20true%29%0A%2C%20center%3A%20true%20%2F%2F%20enable%20or%20disable%20viewport%20centering%20in%20SVG%20%28default%20true%29%0A%2C%20refreshRate%3A%20%27auto%27%20%2F%2F%20Maximum%20number%20of%20frames%20per%20second%20%28altering%20SVG%27s%20viewport%29%0A%2C%20beforeZoom%3A%20null%0A%2C%20onZoom%3A%20null%0A%2C%20beforePan%3A%20null%0A%2C%20onPan%3A%20null%0A%2C%20customEventsHandler%3A%20null%0A%7D%0A%0ASvgPanZoom%2Eprototype%2Einit%20%3D%20function%28svg%2C%20options%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20this%2Esvg%20%3D%20svg%0A%20%20this%2Edefs%20%3D%20svg%2EquerySelector%28%27defs%27%29%0A%0A%20%20%2F%2F%20Add%20default%20attributes%20to%20SVG%0A%20%20SvgUtils%2EsetupSvgAttributes%28this%2Esvg%29%0A%0A%20%20%2F%2F%20Set%20options%0A%20%20this%2Eoptions%20%3D%20Utils%2Eextend%28Utils%2Eextend%28%7B%7D%2C%20optionsDefaults%29%2C%20options%29%0A%0A%20%20%2F%2F%20Set%20default%20state%0A%20%20this%2Estate%20%3D%20%27none%27%0A%0A%20%20%2F%2F%20Get%20dimensions%0A%20%20var%20boundingClientRectNormalized%20%3D%20SvgUtils%2EgetBoundingClientRectNormalized%28svg%29%0A%20%20this%2Ewidth%20%3D%20boundingClientRectNormalized%2Ewidth%0A%20%20this%2Eheight%20%3D%20boundingClientRectNormalized%2Eheight%0A%0A%20%20%2F%2F%20Init%20shadow%20viewport%0A%20%20this%2Eviewport%20%3D%20ShadowViewport%28SvgUtils%2EgetOrCreateViewport%28this%2Esvg%2C%20this%2Eoptions%2EviewportSelector%29%2C%20%7B%0A%20%20%20%20svg%3A%20this%2Esvg%0A%20%20%2C%20width%3A%20this%2Ewidth%0A%20%20%2C%20height%3A%20this%2Eheight%0A%20%20%2C%20fit%3A%20this%2Eoptions%2Efit%0A%20%20%2C%20center%3A%20this%2Eoptions%2Ecenter%0A%20%20%2C%20refreshRate%3A%20this%2Eoptions%2ErefreshRate%0A%20%20%2F%2F%20Put%20callbacks%20into%20functions%20as%20they%20can%20change%20through%20time%0A%20%20%2C%20beforeZoom%3A%20function%28oldScale%2C%20newScale%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EbeforeZoom%29%20%7Breturn%20that%2Eoptions%2EbeforeZoom%28oldScale%2C%20newScale%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20onZoom%3A%20function%28scale%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EonZoom%29%20%7Breturn%20that%2Eoptions%2EonZoom%28scale%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20beforePan%3A%20function%28oldPoint%2C%20newPoint%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EbeforePan%29%20%7Breturn%20that%2Eoptions%2EbeforePan%28oldPoint%2C%20newPoint%29%7D%0A%20%20%20%20%7D%0A%20%20%2C%20onPan%3A%20function%28point%29%20%7B%0A%20%20%20%20%20%20if%20%28that%2Eviewport%20%26%26%20that%2Eoptions%2EonPan%29%20%7Breturn%20that%2Eoptions%2EonPan%28point%29%7D%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%0A%20%20%2F%2F%20Wrap%20callbacks%20into%20public%20API%20context%0A%20%20var%20publicInstance%20%3D%20this%2EgetPublicInstance%28%29%0A%20%20publicInstance%2EsetBeforeZoom%28this%2Eoptions%2EbeforeZoom%29%0A%20%20publicInstance%2EsetOnZoom%28this%2Eoptions%2EonZoom%29%0A%20%20publicInstance%2EsetBeforePan%28this%2Eoptions%2EbeforePan%29%0A%20%20publicInstance%2EsetOnPan%28this%2Eoptions%2EonPan%29%0A%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20ControlIcons%2Eenable%28this%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Init%20events%20handlers%0A%20%20this%2EsetupHandlers%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Register%20event%20handlers%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EsetupHandlers%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%20%20%20%20%2C%20prevEvt%20%3D%20null%20%2F%2F%20use%20for%20touchstart%20event%20to%20detect%20double%20tap%0A%20%20%20%20%3B%0A%0A%20%20this%2EeventListeners%20%3D%20%7B%0A%20%20%20%20%2F%2F%20Mouse%20down%20group%0A%20%20%20%20mousedown%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseDown%28evt%2C%20null%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchstart%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20var%20result%20%3D%20that%2EhandleMouseDown%28evt%2C%20prevEvt%29%3B%0A%20%20%20%20%20%20prevEvt%20%3D%20evt%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20up%20group%0A%20%20%2C%20mouseup%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchend%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20move%20group%0A%20%20%2C%20mousemove%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseMove%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchmove%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseMove%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Mouse%20leave%20group%0A%20%20%2C%20mouseleave%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchleave%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%2C%20touchcancel%3A%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseUp%28evt%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Init%20custom%20events%20handler%20if%20available%0A%20%20if%20%28this%2Eoptions%2EcustomEventsHandler%20%21%3D%20null%29%20%7B%20%2F%2F%20jshint%20ignore%3Aline%0A%20%20%20%20this%2Eoptions%2EcustomEventsHandler%2Einit%28%7B%0A%20%20%20%20%20%20svgElement%3A%20this%2Esvg%0A%20%20%20%20%2C%20instance%3A%20this%2EgetPublicInstance%28%29%0A%20%20%20%20%7D%29%0A%0A%20%20%20%20%2F%2F%20Custom%20event%20handler%20may%20halt%20builtin%20listeners%0A%20%20%20%20var%20haltEventListeners%20%3D%20this%2Eoptions%2EcustomEventsHandler%2EhaltEventListeners%0A%20%20%20%20if%20%28haltEventListeners%20%26%26%20haltEventListeners%2Elength%29%20%7B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%20haltEventListeners%2Elength%20%2D%201%3B%20i%20%3E%3D%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28this%2EeventListeners%2EhasOwnProperty%28haltEventListeners%5Bi%5D%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20delete%20this%2EeventListeners%5BhaltEventListeners%5Bi%5D%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Bind%20eventListeners%0A%20%20for%20%28var%20event%20in%20this%2EeventListeners%29%20%7B%0A%20%20%20%20this%2Esvg%2EaddEventListener%28event%2C%20this%2EeventListeners%5Bevent%5D%2C%20false%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Zoom%20using%20mouse%20wheel%0A%20%20if%20%28this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20false%20%2F%2F%20set%20to%20false%20as%20enable%20will%20set%20it%20back%20to%20true%0A%20%20%20%20this%2EenableMouseWheelZoom%28%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Enable%20ability%20to%20zoom%20using%20mouse%20wheel%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EenableMouseWheelZoom%20%3D%20function%28%29%20%7B%0A%20%20if%20%28%21this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%0A%0A%20%20%20%20%2F%2F%20Mouse%20wheel%20listener%0A%20%20%20%20this%2EwheelListener%20%3D%20function%28evt%29%20%7B%0A%20%20%20%20%20%20return%20that%2EhandleMouseWheel%28evt%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Bind%20wheelListener%0A%20%20%20%20Wheel%2Eon%28this%2Esvg%2C%20this%2EwheelListener%2C%20false%29%0A%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20true%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Disable%20ability%20to%20zoom%20using%20mouse%20wheel%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EdisableMouseWheelZoom%20%3D%20function%28%29%20%7B%0A%20%20if%20%28this%2Eoptions%2EmouseWheelZoomEnabled%29%20%7B%0A%20%20%20%20Wheel%2Eoff%28this%2Esvg%2C%20this%2EwheelListener%2C%20false%29%0A%20%20%20%20this%2Eoptions%2EmouseWheelZoomEnabled%20%3D%20false%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20wheel%20event%0A%20%2A%0A%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseWheel%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28%21this%2Eoptions%2EzoomEnabled%20%7C%7C%20this%2Estate%20%21%3D%3D%20%27none%27%29%20%7B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%3B%0A%20%20%7D%0A%0A%20%20var%20delta%20%3D%200%0A%0A%20%20if%20%28%27deltaMode%27%20in%20evt%20%26%26%20evt%2EdeltaMode%20%3D%3D%3D%200%29%20%7B%0A%20%20%20%20%2F%2F%20Make%20empirical%20adjustments%20for%20browsers%20that%20give%20deltaY%20in%20pixels%20%28deltaMode%3D0%29%0A%0A%20%20%20%20if%20%28evt%2EwheelDelta%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Normalizer%20for%20Chrome%0A%20%20%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%20Math%2Eabs%28evt%2EwheelDelta%2F3%29%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%2F%2F%20Others%2E%20Possibly%20tablets%3F%20Use%20a%20value%20just%20in%20case%0A%20%20%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%20120%0A%20%20%20%20%7D%0A%20%20%7D%20else%20if%20%28%27mozPressure%27%20in%20evt%29%20%7B%0A%20%20%20%20%2F%2F%20Normalizer%20for%20newer%20Firefox%0A%20%20%20%20%2F%2F%20NOTE%3A%20May%20need%20to%20change%20detection%20at%20some%20point%20if%20mozPressure%20disappears%2E%0A%20%20%20%20delta%20%3D%20evt%2EdeltaY%20%2F%203%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Others%20should%20be%20reasonably%20normalized%20by%20the%20mousewheel%20code%20at%20the%20end%20of%20the%20file%2E%0A%20%20%20%20delta%20%3D%20evt%2EdeltaY%3B%0A%20%20%7D%0A%0A%20%20var%20inversedScreenCTM%20%3D%20this%2Esvg%2EgetScreenCTM%28%29%2Einverse%28%29%0A%20%20%20%20%2C%20relativeMousePoint%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28inversedScreenCTM%29%0A%20%20%20%20%2C%20zoom%20%3D%20Math%2Epow%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%2C%20%28%2D1%29%20%2A%20delta%29%3B%20%2F%2F%20multiplying%20by%20neg%2E%201%20so%20as%20to%20make%20zoom%20in%2Fout%20behavior%20match%20Google%20maps%20behavior%0A%0A%20%20this%2EzoomAtPoint%28zoom%2C%20relativeMousePoint%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20in%20at%20a%20SVG%20point%0A%20%2A%0A%20%2A%20%40param%20%20%7BSVGPoint%7D%20point%0A%20%2A%20%40param%20%20%7BFloat%7D%20zoomScale%20%20%20%20Number%20representing%20how%20much%20to%20zoom%0A%20%2A%20%40param%20%20%7BBoolean%7D%20zoomAbsolute%20Default%20false%2E%20If%20true%2C%20zoomScale%20is%20treated%20as%20an%20absolute%20value%2E%0A%20%2A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Otherwise%2C%20zoomScale%20is%20treated%20as%20a%20multiplied%20%28e%2Eg%2E%201%2E10%20would%20zoom%20in%2010%25%29%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EzoomAtPoint%20%3D%20function%28zoomScale%2C%20point%2C%20zoomAbsolute%29%20%7B%0A%20%20var%20originalState%20%3D%20this%2Eviewport%2EgetOriginalState%28%29%0A%0A%20%20if%20%28%21zoomAbsolute%29%20%7B%0A%20%20%20%20%2F%2F%20Fit%20zoomScale%20in%20set%20bounds%0A%20%20%20%20if%20%28this%2EgetZoom%28%29%20%2A%20zoomScale%20%3C%20this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%29%20%7B%0A%20%20%20%20%20%20zoomScale%20%3D%20%28this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%29%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%7D%20else%20if%20%28this%2EgetZoom%28%29%20%2A%20zoomScale%20%3E%20this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%29%20%7B%0A%20%20%20%20%20%20zoomScale%20%3D%20%28this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%29%20%2F%20this%2EgetZoom%28%29%0A%20%20%20%20%7D%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Fit%20zoomScale%20in%20set%20bounds%0A%20%20%20%20zoomScale%20%3D%20Math%2Emax%28this%2Eoptions%2EminZoom%20%2A%20originalState%2Ezoom%2C%20Math%2Emin%28this%2Eoptions%2EmaxZoom%20%2A%20originalState%2Ezoom%2C%20zoomScale%29%29%0A%20%20%20%20%2F%2F%20Find%20relative%20scale%20to%20achieve%20desired%20scale%0A%20%20%20%20zoomScale%20%3D%20zoomScale%2Fthis%2EgetZoom%28%29%0A%20%20%7D%0A%0A%20%20var%20oldCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20%20%20%2C%20relativePoint%20%3D%20point%2EmatrixTransform%28oldCTM%2Einverse%28%29%29%0A%20%20%20%20%2C%20modifier%20%3D%20this%2Esvg%2EcreateSVGMatrix%28%29%2Etranslate%28relativePoint%2Ex%2C%20relativePoint%2Ey%29%2Escale%28zoomScale%29%2Etranslate%28%2DrelativePoint%2Ex%2C%20%2DrelativePoint%2Ey%29%0A%20%20%20%20%2C%20newCTM%20%3D%20oldCTM%2Emultiply%28modifier%29%0A%0A%20%20if%20%28newCTM%2Ea%20%21%3D%3D%20oldCTM%2Ea%29%20%7B%0A%20%20%20%20this%2Eviewport%2EsetCTM%28newCTM%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20at%20center%20point%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ezoom%20%3D%20function%28scale%2C%20absolute%29%20%7B%0A%20%20this%2EzoomAtPoint%28scale%2C%20SvgUtils%2EgetSvgCenterPoint%28this%2Esvg%2C%20this%2Ewidth%2C%20this%2Eheight%29%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20used%20by%20public%20instance%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpublicZoom%20%3D%20function%28scale%2C%20absolute%29%20%7B%0A%20%20if%20%28absolute%29%20%7B%0A%20%20%20%20scale%20%3D%20this%2EcomputeFromRelativeZoom%28scale%29%0A%20%20%7D%0A%0A%20%20this%2Ezoom%28scale%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Zoom%20at%20point%20used%20by%20public%20instance%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20scale%0A%20%2A%20%40param%20%20%7BSVGPoint%7CObject%7D%20point%20%20%20%20An%20object%20that%20has%20x%20and%20y%20attributes%0A%20%2A%20%40param%20%20%7BBoolean%7D%20absolute%20Marks%20zoom%20scale%20as%20relative%20or%20absolute%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpublicZoomAtPoint%20%3D%20function%28scale%2C%20point%2C%20absolute%29%20%7B%0A%20%20if%20%28absolute%29%20%7B%0A%20%20%20%20%2F%2F%20Transform%20zoom%20into%20a%20relative%20value%0A%20%20%20%20scale%20%3D%20this%2EcomputeFromRelativeZoom%28scale%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20If%20not%20a%20SVGPoint%20but%20has%20x%20and%20y%20than%20create%20a%20SVGPoint%0A%20%20if%20%28Utils%2EgetType%28point%29%20%21%3D%3D%20%27SVGPoint%27%20%26%26%20%27x%27%20in%20point%20%26%26%20%27y%27%20in%20point%29%20%7B%0A%20%20%20%20point%20%3D%20SvgUtils%2EcreateSVGPoint%28this%2Esvg%2C%20point%2Ex%2C%20point%2Ey%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20throw%20new%20Error%28%27Given%20point%20is%20invalid%27%29%0A%20%20%20%20return%0A%20%20%7D%0A%0A%20%20this%2EzoomAtPoint%28scale%2C%20point%2C%20absolute%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2Eviewport%2EgetZoom%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20zoom%20scale%20for%20public%20usage%0A%20%2A%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetRelativeZoom%20%3D%20function%28%29%20%7B%0A%20%20return%20this%2Eviewport%2EgetRelativeZoom%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Compute%20actual%20zoom%20from%20public%20zoom%0A%20%2A%0A%20%2A%20%40param%20%20%7BFloat%7D%20zoom%0A%20%2A%20%40return%20%7BFloat%7D%20zoom%20scale%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EcomputeFromRelativeZoom%20%3D%20function%28zoom%29%20%7B%0A%20%20return%20zoom%20%2A%20this%2Eviewport%2EgetOriginalState%28%29%2Ezoom%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20zoom%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EresetZoom%20%3D%20function%28%29%20%7B%0A%20%20var%20originalState%20%3D%20this%2Eviewport%2EgetOriginalState%28%29%0A%0A%20%20this%2Ezoom%28originalState%2Ezoom%2C%20true%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20pan%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EresetPan%20%3D%20function%28%29%20%7B%0A%20%20this%2Epan%28this%2Eviewport%2EgetOriginalState%28%29%29%3B%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Set%20pan%20and%20zoom%20to%20initial%20state%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ereset%20%3D%20function%28%29%20%7B%0A%20%20this%2EresetZoom%28%29%0A%20%20this%2EresetPan%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20double%20click%20event%0A%20%2A%20See%20handleMouseDown%28%29%20for%20alternate%20detection%20method%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleDblClick%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20%2F%2F%20Check%20if%20target%20was%20a%20control%20button%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20var%20targetClass%20%3D%20evt%2Etarget%2EgetAttribute%28%27class%27%29%20%7C%7C%20%27%27%0A%20%20%20%20if%20%28targetClass%2EindexOf%28%27svg%2Dpan%2Dzoom%2Dcontrol%27%29%20%3E%20%2D1%29%20%7B%0A%20%20%20%20%20%20return%20false%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20var%20zoomFactor%0A%0A%20%20if%20%28evt%2EshiftKey%29%20%7B%0A%20%20%20%20zoomFactor%20%3D%201%2F%28%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%29%20%2A%202%29%20%2F%2F%20zoom%20out%20when%20shift%20key%20pressed%0A%20%20%7D%20else%20%7B%0A%20%20%20%20zoomFactor%20%3D%20%281%20%2B%20this%2Eoptions%2EzoomScaleSensitivity%29%20%2A%202%0A%20%20%7D%0A%0A%20%20var%20point%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2Esvg%2EgetScreenCTM%28%29%2Einverse%28%29%29%0A%20%20this%2EzoomAtPoint%28zoomFactor%2C%20point%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20click%20event%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseDown%20%3D%20function%28evt%2C%20prevEvt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20Utils%2EmouseAndTouchNormalize%28evt%2C%20this%2Esvg%29%0A%0A%20%20%2F%2F%20Double%20click%20detection%3B%20more%20consistent%20than%20ondblclick%0A%20%20if%20%28this%2Eoptions%2EdblClickZoomEnabled%20%26%26%20Utils%2EisDblClick%28evt%2C%20prevEvt%29%29%7B%0A%20%20%20%20this%2EhandleDblClick%28evt%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Pan%20mode%0A%20%20%20%20this%2Estate%20%3D%20%27pan%27%0A%20%20%20%20this%2EfirstEventCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20%20%20this%2EstateOrigin%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2EfirstEventCTM%2Einverse%28%29%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20move%20event%0A%20%2A%0A%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseMove%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20if%20%28this%2Estate%20%3D%3D%3D%20%27pan%27%20%26%26%20this%2Eoptions%2EpanEnabled%29%20%7B%0A%20%20%20%20%2F%2F%20Pan%20mode%0A%20%20%20%20var%20point%20%3D%20SvgUtils%2EgetEventPoint%28evt%2C%20this%2Esvg%29%2EmatrixTransform%28this%2EfirstEventCTM%2Einverse%28%29%29%0A%20%20%20%20%20%20%2C%20viewportCTM%20%3D%20this%2EfirstEventCTM%2Etranslate%28point%2Ex%20%2D%20this%2EstateOrigin%2Ex%2C%20point%2Ey%20%2D%20this%2EstateOrigin%2Ey%29%0A%0A%20%20%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Handle%20mouse%20button%20release%20event%0A%20%2A%0A%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EhandleMouseUp%20%3D%20function%28evt%29%20%7B%0A%20%20if%20%28evt%2EpreventDefault%29%20%7B%0A%20%20%20%20evt%2EpreventDefault%28%29%0A%20%20%7D%20else%20%7B%0A%20%20%20%20evt%2EreturnValue%20%3D%20false%0A%20%20%7D%0A%0A%20%20if%20%28this%2Estate%20%3D%3D%3D%20%27pan%27%29%20%7B%0A%20%20%20%20%2F%2F%20Quit%20pan%20mode%0A%20%20%20%20this%2Estate%20%3D%20%27none%27%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Adjust%20viewport%20size%20%28only%29%20so%20it%20will%20fit%20in%20SVG%0A%20%2A%20Does%20not%20center%20image%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Efit%20%3D%20function%28%29%20%7B%0A%20%20var%20viewBox%20%3D%20this%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%2C%20newScale%20%3D%20Math%2Emin%28this%2Ewidth%2F%28viewBox%2Ewidth%20%2D%20viewBox%2Ex%29%2C%20this%2Eheight%2F%28viewBox%2Eheight%20%2D%20viewBox%2Ey%29%29%0A%0A%20%20this%2Ezoom%28newScale%2C%20true%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Adjust%20viewport%20pan%20%28only%29%20so%20it%20will%20be%20centered%20in%20SVG%0A%20%2A%20Does%20not%20zoom%2Ffit%20image%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Ecenter%20%3D%20function%28%29%20%7B%0A%20%20var%20viewBox%20%3D%20this%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%2C%20offsetX%20%3D%20%28this%2Ewidth%20%2D%20%28viewBox%2Ewidth%20%2B%20viewBox%2Ex%29%20%2A%20this%2EgetZoom%28%29%29%20%2A%200%2E5%0A%20%20%20%20%2C%20offsetY%20%3D%20%28this%2Eheight%20%2D%20%28viewBox%2Eheight%20%2B%20viewBox%2Ey%29%20%2A%20this%2EgetZoom%28%29%29%20%2A%200%2E5%0A%0A%20%20this%2EgetPublicInstance%28%29%2Epan%28%7Bx%3A%20offsetX%2C%20y%3A%20offsetY%7D%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Update%20content%20cached%20BorderBox%0A%20%2A%20Use%20when%20viewport%20contents%20change%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EupdateBBox%20%3D%20function%28%29%20%7B%0A%20%20this%2Eviewport%2ErecacheViewBox%28%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Pan%20to%20a%20rendered%20position%0A%20%2A%0A%20%2A%20%40param%20%20%7BObject%7D%20point%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Epan%20%3D%20function%28point%29%20%7B%0A%20%20var%20viewportCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20viewportCTM%2Ee%20%3D%20point%2Ex%0A%20%20viewportCTM%2Ef%20%3D%20point%2Ey%0A%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Relatively%20pan%20the%20graph%20by%20a%20specified%20rendered%20position%20vector%0A%20%2A%0A%20%2A%20%40param%20%20%7BObject%7D%20point%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EpanBy%20%3D%20function%28point%29%20%7B%0A%20%20var%20viewportCTM%20%3D%20this%2Eviewport%2EgetCTM%28%29%0A%20%20viewportCTM%2Ee%20%2B%3D%20point%2Ex%0A%20%20viewportCTM%2Ef%20%2B%3D%20point%2Ey%0A%20%20this%2Eviewport%2EsetCTM%28viewportCTM%29%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Get%20pan%20vector%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20%7Bx%3A%200%2C%20y%3A%200%7D%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetPan%20%3D%20function%28%29%20%7B%0A%20%20var%20state%20%3D%20this%2Eviewport%2EgetState%28%29%0A%0A%20%20return%20%7Bx%3A%20state%2Ex%2C%20y%3A%20state%2Ey%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Recalculates%20cached%20svg%20dimensions%20and%20controls%20position%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Eresize%20%3D%20function%28%29%20%7B%0A%20%20%2F%2F%20Get%20dimensions%0A%20%20var%20boundingClientRectNormalized%20%3D%20SvgUtils%2EgetBoundingClientRectNormalized%28this%2Esvg%29%0A%20%20this%2Ewidth%20%3D%20boundingClientRectNormalized%2Ewidth%0A%20%20this%2Eheight%20%3D%20boundingClientRectNormalized%2Eheight%0A%0A%20%20%2F%2F%20Reposition%20control%20icons%20by%20re%2Denabling%20them%0A%20%20if%20%28this%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20this%2EgetPublicInstance%28%29%2EdisableControlIcons%28%29%0A%20%20%20%20this%2EgetPublicInstance%28%29%2EenableControlIcons%28%29%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Unbind%20mouse%20events%2C%20free%20callbacks%20and%20destroy%20public%20instance%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2Edestroy%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20%2F%2F%20Free%20callbacks%0A%20%20this%2EbeforeZoom%20%3D%20null%0A%20%20this%2EonZoom%20%3D%20null%0A%20%20this%2EbeforePan%20%3D%20null%0A%20%20this%2EonPan%20%3D%20null%0A%0A%20%20%2F%2F%20Destroy%20custom%20event%20handlers%0A%20%20if%20%28this%2Eoptions%2EcustomEventsHandler%20%21%3D%20null%29%20%7B%20%2F%2F%20jshint%20ignore%3Aline%0A%20%20%20%20this%2Eoptions%2EcustomEventsHandler%2Edestroy%28%7B%0A%20%20%20%20%20%20svgElement%3A%20this%2Esvg%0A%20%20%20%20%2C%20instance%3A%20this%2EgetPublicInstance%28%29%0A%20%20%20%20%7D%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Unbind%20eventListeners%0A%20%20for%20%28var%20event%20in%20this%2EeventListeners%29%20%7B%0A%20%20%20%20this%2Esvg%2EremoveEventListener%28event%2C%20this%2EeventListeners%5Bevent%5D%2C%20false%29%0A%20%20%7D%0A%0A%20%20%2F%2F%20Unbind%20wheelListener%0A%20%20this%2EdisableMouseWheelZoom%28%29%0A%0A%20%20%2F%2F%20Remove%20control%20icons%0A%20%20this%2EgetPublicInstance%28%29%2EdisableControlIcons%28%29%0A%0A%20%20%2F%2F%20Reset%20zoom%20and%20pan%0A%20%20this%2Ereset%28%29%0A%0A%20%20%2F%2F%20Remove%20instance%20from%20instancesStore%0A%20%20instancesStore%20%3D%20instancesStore%2Efilter%28function%28instance%29%7B%0A%20%20%20%20return%20instance%2Esvg%20%21%3D%3D%20that%2Esvg%0A%20%20%7D%29%0A%0A%20%20%2F%2F%20Delete%20options%20and%20its%20contents%0A%20%20delete%20this%2Eoptions%0A%0A%20%20%2F%2F%20Destroy%20public%20instance%20and%20rewrite%20getPublicInstance%0A%20%20delete%20this%2EpublicInstance%0A%20%20delete%20this%2Epi%0A%20%20this%2EgetPublicInstance%20%3D%20function%28%29%7B%0A%20%20%20%20return%20null%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Returns%20a%20public%20instance%20object%0A%20%2A%0A%20%2A%20%40return%20%7BObject%7D%20Public%20instance%20object%0A%20%2A%2F%0ASvgPanZoom%2Eprototype%2EgetPublicInstance%20%3D%20function%28%29%20%7B%0A%20%20var%20that%20%3D%20this%0A%0A%20%20%2F%2F%20Create%20cache%0A%20%20if%20%28%21this%2EpublicInstance%29%20%7B%0A%20%20%20%20this%2EpublicInstance%20%3D%20this%2Epi%20%3D%20%7B%0A%20%20%20%20%20%20%2F%2F%20Pan%0A%20%20%20%20%20%20enablePan%3A%20function%28%29%20%7Bthat%2Eoptions%2EpanEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disablePan%3A%20function%28%29%20%7Bthat%2Eoptions%2EpanEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isPanEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EpanEnabled%7D%0A%20%20%20%20%2C%20pan%3A%20function%28point%29%20%7Bthat%2Epan%28point%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20panBy%3A%20function%28point%29%20%7Bthat%2EpanBy%28point%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getPan%3A%20function%28%29%20%7Breturn%20that%2EgetPan%28%29%7D%0A%20%20%20%20%20%20%2F%2F%20Pan%20event%0A%20%20%20%20%2C%20setBeforePan%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EbeforePan%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setOnPan%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EonPan%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20and%20Control%20Icons%0A%20%20%20%20%2C%20enableZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EzoomEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EzoomEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EzoomEnabled%7D%0A%20%20%20%20%2C%20enableControlIcons%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21that%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20that%2Eoptions%2EcontrolIconsEnabled%20%3D%20true%0A%20%20%20%20%20%20%20%20%20%20ControlIcons%2Eenable%28that%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20that%2Epi%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%2C%20disableControlIcons%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28that%2Eoptions%2EcontrolIconsEnabled%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20that%2Eoptions%2EcontrolIconsEnabled%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20ControlIcons%2Edisable%28that%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20that%2Epi%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%2C%20isControlIconsEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EcontrolIconsEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Double%20click%20zoom%0A%20%20%20%20%2C%20enableDblClickZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EdblClickZoomEnabled%20%3D%20true%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableDblClickZoom%3A%20function%28%29%20%7Bthat%2Eoptions%2EdblClickZoomEnabled%20%3D%20false%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isDblClickZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EdblClickZoomEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Mouse%20wheel%20zoom%0A%20%20%20%20%2C%20enableMouseWheelZoom%3A%20function%28%29%20%7Bthat%2EenableMouseWheelZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20disableMouseWheelZoom%3A%20function%28%29%20%7Bthat%2EdisableMouseWheelZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20isMouseWheelZoomEnabled%3A%20function%28%29%20%7Breturn%20%21%21that%2Eoptions%2EmouseWheelZoomEnabled%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20scale%20and%20bounds%0A%20%20%20%20%2C%20setZoomScaleSensitivity%3A%20function%28scale%29%20%7Bthat%2Eoptions%2EzoomScaleSensitivity%20%3D%20scale%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setMinZoom%3A%20function%28zoom%29%20%7Bthat%2Eoptions%2EminZoom%20%3D%20zoom%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setMaxZoom%3A%20function%28zoom%29%20%7Bthat%2Eoptions%2EmaxZoom%20%3D%20zoom%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zoom%20event%0A%20%20%20%20%2C%20setBeforeZoom%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EbeforeZoom%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20setOnZoom%3A%20function%28fn%29%20%7Bthat%2Eoptions%2EonZoom%20%3D%20fn%20%3D%3D%3D%20null%20%3F%20null%20%3A%20Utils%2Eproxy%28fn%2C%20that%2EpublicInstance%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Zooming%0A%20%20%20%20%2C%20zoom%3A%20function%28scale%29%20%7Bthat%2EpublicZoom%28scale%2C%20true%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomBy%3A%20function%28scale%29%20%7Bthat%2EpublicZoom%28scale%2C%20false%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomAtPoint%3A%20function%28scale%2C%20point%29%20%7Bthat%2EpublicZoomAtPoint%28scale%2C%20point%2C%20true%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomAtPointBy%3A%20function%28scale%2C%20point%29%20%7Bthat%2EpublicZoomAtPoint%28scale%2C%20point%2C%20false%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomIn%3A%20function%28%29%20%7Bthis%2EzoomBy%281%20%2B%20that%2Eoptions%2EzoomScaleSensitivity%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20zoomOut%3A%20function%28%29%20%7Bthis%2EzoomBy%281%20%2F%20%281%20%2B%20that%2Eoptions%2EzoomScaleSensitivity%29%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getZoom%3A%20function%28%29%20%7Breturn%20that%2EgetRelativeZoom%28%29%7D%0A%20%20%20%20%20%20%2F%2F%20Reset%0A%20%20%20%20%2C%20resetZoom%3A%20function%28%29%20%7Bthat%2EresetZoom%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20resetPan%3A%20function%28%29%20%7Bthat%2EresetPan%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20reset%3A%20function%28%29%20%7Bthat%2Ereset%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Fit%20and%20Center%0A%20%20%20%20%2C%20fit%3A%20function%28%29%20%7Bthat%2Efit%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20center%3A%20function%28%29%20%7Bthat%2Ecenter%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%20%20%2F%2F%20Size%20and%20Resize%0A%20%20%20%20%2C%20updateBBox%3A%20function%28%29%20%7Bthat%2EupdateBBox%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20resize%3A%20function%28%29%20%7Bthat%2Eresize%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%2C%20getSizes%3A%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20width%3A%20that%2Ewidth%0A%20%20%20%20%20%20%20%20%2C%20height%3A%20that%2Eheight%0A%20%20%20%20%20%20%20%20%2C%20realZoom%3A%20that%2EgetZoom%28%29%0A%20%20%20%20%20%20%20%20%2C%20viewBox%3A%20that%2Eviewport%2EgetViewBox%28%29%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20Destroy%0A%20%20%20%20%2C%20destroy%3A%20function%28%29%20%7Bthat%2Edestroy%28%29%3B%20return%20that%2Epi%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20return%20this%2EpublicInstance%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Stores%20pairs%20of%20instances%20of%20SvgPanZoom%20and%20SVG%0A%20%2A%20Each%20pair%20is%20represented%20by%20an%20object%20%7Bsvg%3A%20SVGSVGElement%2C%20instance%3A%20SvgPanZoom%7D%0A%20%2A%0A%20%2A%20%40type%20%7BArray%7D%0A%20%2A%2F%0Avar%20instancesStore%20%3D%20%5B%5D%0A%0Avar%20svgPanZoom%20%3D%20function%28elementOrSelector%2C%20options%29%7B%0A%20%20var%20svg%20%3D%20Utils%2EgetSvg%28elementOrSelector%29%0A%0A%20%20if%20%28svg%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20return%20null%0A%20%20%7D%20else%20%7B%0A%20%20%20%20%2F%2F%20Look%20for%20existent%20instance%0A%20%20%20%20for%28var%20i%20%3D%20instancesStore%2Elength%20%2D%201%3B%20i%20%3E%3D%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20if%20%28instancesStore%5Bi%5D%2Esvg%20%3D%3D%3D%20svg%29%20%7B%0A%20%20%20%20%20%20%20%20return%20instancesStore%5Bi%5D%2Einstance%2EgetPublicInstance%28%29%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20If%20instance%20not%20found%20%2D%20create%20one%0A%20%20%20%20instancesStore%2Epush%28%7B%0A%20%20%20%20%20%20svg%3A%20svg%0A%20%20%20%20%2C%20instance%3A%20new%20SvgPanZoom%28svg%2C%20options%29%0A%20%20%20%20%7D%29%0A%0A%20%20%20%20%2F%2F%20Return%20just%20pushed%20instance%0A%20%20%20%20return%20instancesStore%5BinstancesStore%2Elength%20%2D%201%5D%2Einstance%2EgetPublicInstance%28%29%0A%20%20%7D%0A%7D%0A%0Amodule%2Eexports%20%3D%20svgPanZoom%3B%0A%0A%7D%2C%7B%22%2E%2Fcontrol%2Dicons%22%3A3%2C%22%2E%2Fshadow%2Dviewport%22%3A4%2C%22%2E%2Fsvg%2Dutilities%22%3A6%2C%22%2E%2Futilities%22%3A7%2C%22uniwheel%22%3A2%7D%5D%2C6%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Avar%20Utils%20%3D%20require%28%27%2E%2Futilities%27%29%0A%20%20%2C%20%5Fbrowser%20%3D%20%27unknown%27%0A%20%20%3B%0A%0A%2F%2F%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F9847580%2Fhow%2Dto%2Ddetect%2Dsafari%2Dchrome%2Die%2Dfirefox%2Dand%2Dopera%2Dbrowser%0Aif%20%28%2F%2A%40cc%5Fon%21%40%2A%2Ffalse%20%7C%7C%20%21%21document%2EdocumentMode%29%20%7B%20%2F%2F%20internet%20explorer%0A%20%20%5Fbrowser%20%3D%20%27ie%27%3B%0A%7D%0A%0Amodule%2Eexports%20%3D%20%7B%0A%20%20svgNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%27%0A%2C%20xmlNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2FXML%2F1998%2Fnamespace%27%0A%2C%20xmlnsNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fxmlns%2F%27%0A%2C%20xlinkNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F1999%2Fxlink%27%0A%2C%20evNS%3A%20%20%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2001%2Fxml%2Devents%27%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Get%20svg%20dimensions%3A%20width%20and%20height%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BObject%7D%20%20%20%20%20%7Bwidth%3A%200%2C%20height%3A%200%7D%0A%20%20%20%2A%2F%0A%2C%20getBoundingClientRectNormalized%3A%20function%28svg%29%20%7B%0A%20%20%20%20if%20%28svg%2EclientWidth%20%26%26%20svg%2EclientHeight%29%20%7B%0A%20%20%20%20%20%20return%20%7Bwidth%3A%20svg%2EclientWidth%2C%20height%3A%20svg%2EclientHeight%7D%0A%20%20%20%20%7D%20else%20if%20%28%21%21svg%2EgetBoundingClientRect%28%29%29%20%7B%0A%20%20%20%20%20%20return%20svg%2EgetBoundingClientRect%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20get%20BoundingClientRect%20for%20SVG%2E%27%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Gets%20g%20element%20with%20class%20of%20%22viewport%22%20or%20creates%20it%20if%20it%20doesn%27t%20exist%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGElement%7D%20%20%20%20%20g%20%28group%29%20element%0A%20%20%20%2A%2F%0A%2C%20getOrCreateViewport%3A%20function%28svg%2C%20selector%29%20%7B%0A%20%20%20%20var%20viewport%20%3D%20null%0A%0A%20%20%20%20if%20%28Utils%2EisElement%28selector%29%29%20%7B%0A%20%20%20%20%20%20viewport%20%3D%20selector%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20viewport%20%3D%20svg%2EquerySelector%28selector%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Check%20if%20there%20is%20just%20one%20main%20group%20in%20SVG%0A%20%20%20%20if%20%28%21viewport%29%20%7B%0A%20%20%20%20%20%20var%20childNodes%20%3D%20Array%2Eprototype%2Eslice%2Ecall%28svg%2EchildNodes%20%7C%7C%20svg%2Echildren%29%2Efilter%28function%28el%29%7B%0A%20%20%20%20%20%20%20%20return%20el%2EnodeName%20%21%3D%3D%20%27defs%27%20%26%26%20el%2EnodeName%20%21%3D%3D%20%27%23text%27%0A%20%20%20%20%20%20%7D%29%0A%0A%20%20%20%20%20%20%2F%2F%20Node%20name%20should%20be%20SVGGElement%20and%20should%20have%20no%20transform%20attribute%0A%20%20%20%20%20%20%2F%2F%20Groups%20with%20transform%20are%20not%20used%20as%20viewport%20because%20it%20involves%20parsing%20of%20all%20transform%20possibilities%0A%20%20%20%20%20%20if%20%28childNodes%2Elength%20%3D%3D%3D%201%20%26%26%20childNodes%5B0%5D%2EnodeName%20%3D%3D%3D%20%27g%27%20%26%26%20childNodes%5B0%5D%2EgetAttribute%28%27transform%27%29%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20viewport%20%3D%20childNodes%5B0%5D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20If%20no%20favorable%20group%20element%20exists%20then%20create%20one%0A%20%20%20%20if%20%28%21viewport%29%20%7B%0A%20%20%20%20%20%20var%20viewportId%20%3D%20%27viewport%2D%27%20%2B%20new%20Date%28%29%2EtoISOString%28%29%2Ereplace%28%2F%5CD%2Fg%2C%20%27%27%29%3B%0A%20%20%20%20%20%20viewport%20%3D%20document%2EcreateElementNS%28this%2EsvgNS%2C%20%27g%27%29%3B%0A%20%20%20%20%20%20viewport%2EsetAttribute%28%27id%27%2C%20viewportId%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Internet%20Explorer%20%28all%20versions%3F%29%20can%27t%20use%20childNodes%2C%20but%20other%20browsers%20prefer%20%28require%3F%29%20using%20childNodes%0A%20%20%20%20%20%20var%20svgChildren%20%3D%20svg%2EchildNodes%20%7C%7C%20svg%2Echildren%3B%0A%20%20%20%20%20%20if%20%28%21%21svgChildren%20%26%26%20svgChildren%2Elength%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%20svgChildren%2Elength%3B%20i%20%3E%200%3B%20i%2D%2D%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Move%20everything%20into%20viewport%20except%20defs%0A%20%20%20%20%20%20%20%20%20%20if%20%28svgChildren%5BsvgChildren%2Elength%20%2D%20i%5D%2EnodeName%20%21%3D%3D%20%27defs%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20viewport%2EappendChild%28svgChildren%5BsvgChildren%2Elength%20%2D%20i%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20svg%2EappendChild%28viewport%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Parse%20class%20names%0A%20%20%20%20var%20classNames%20%3D%20%5B%5D%3B%0A%20%20%20%20if%20%28viewport%2EgetAttribute%28%27class%27%29%29%20%7B%0A%20%20%20%20%20%20classNames%20%3D%20viewport%2EgetAttribute%28%27class%27%29%2Esplit%28%27%20%27%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Set%20class%20%28if%20not%20set%20already%29%0A%20%20%20%20if%20%28%21%7EclassNames%2EindexOf%28%27svg%2Dpan%2Dzoom%5Fviewport%27%29%29%20%7B%0A%20%20%20%20%20%20classNames%2Epush%28%27svg%2Dpan%2Dzoom%5Fviewport%27%29%0A%20%20%20%20%20%20viewport%2EsetAttribute%28%27class%27%2C%20classNames%2Ejoin%28%27%20%27%29%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20viewport%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Set%20SVG%20attributes%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%2F%0A%20%20%2C%20setupSvgAttributes%3A%20function%28svg%29%20%7B%0A%20%20%20%20%2F%2F%20Setting%20default%20attributes%0A%20%20%20%20svg%2EsetAttribute%28%27xmlns%27%2C%20this%2EsvgNS%29%3B%0A%20%20%20%20svg%2EsetAttributeNS%28this%2ExmlnsNS%2C%20%27xmlns%3Axlink%27%2C%20this%2ExlinkNS%29%3B%0A%20%20%20%20svg%2EsetAttributeNS%28this%2ExmlnsNS%2C%20%27xmlns%3Aev%27%2C%20this%2EevNS%29%3B%0A%0A%20%20%20%20%2F%2F%20Needed%20for%20Internet%20Explorer%2C%20otherwise%20the%20viewport%20overflows%0A%20%20%20%20if%20%28svg%2EparentNode%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20var%20style%20%3D%20svg%2EgetAttribute%28%27style%27%29%20%7C%7C%20%27%27%3B%0A%20%20%20%20%20%20if%20%28style%2EtoLowerCase%28%29%2EindexOf%28%27overflow%27%29%20%3D%3D%3D%20%2D1%29%20%7B%0A%20%20%20%20%20%20%20%20svg%2EsetAttribute%28%27style%27%2C%20%27overflow%3A%20hidden%3B%20%27%20%2B%20style%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%2F%2A%2A%0A%20%2A%20How%20long%20Internet%20Explorer%20takes%20to%20finish%20updating%20its%20display%20%28ms%29%2E%0A%20%2A%2F%0A%2C%20internetExplorerRedisplayInterval%3A%20300%0A%0A%2F%2A%2A%0A%20%2A%20Forces%20the%20browser%20to%20redisplay%20all%20SVG%20elements%20that%20rely%20on%20an%0A%20%2A%20element%20defined%20in%20a%20%27defs%27%20section%2E%20It%20works%20globally%2C%20for%20every%0A%20%2A%20available%20defs%20element%20on%20the%20page%2E%0A%20%2A%20The%20throttling%20is%20intentionally%20global%2E%0A%20%2A%0A%20%2A%20This%20is%20only%20needed%20for%20IE%2E%20It%20is%20as%20a%20hack%20to%20make%20markers%20%28and%20%27use%27%20elements%3F%29%0A%20%2A%20visible%20after%20pan%2Fzoom%20when%20there%20are%20multiple%20SVGs%20on%20the%20page%2E%0A%20%2A%20See%20bug%20report%3A%20https%3A%2F%2Fconnect%2Emicrosoft%2Ecom%2FIE%2Ffeedback%2Fdetails%2F781964%2F%0A%20%2A%20also%20see%20svg%2Dpan%2Dzoom%20issue%3A%20https%3A%2F%2Fgithub%2Ecom%2Fariutta%2Fsvg%2Dpan%2Dzoom%2Fissues%2F62%0A%20%2A%2F%0A%2C%20refreshDefsGlobal%3A%20Utils%2Ethrottle%28function%28%29%20%7B%0A%20%20%20%20var%20allDefs%20%3D%20document%2EquerySelectorAll%28%27defs%27%29%3B%0A%20%20%20%20var%20allDefsCount%20%3D%20allDefs%2Elength%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20allDefsCount%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20thisDefs%20%3D%20allDefs%5Bi%5D%3B%0A%20%20%20%20%20%20thisDefs%2EparentNode%2EinsertBefore%28thisDefs%2C%20thisDefs%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%20this%2EinternetExplorerRedisplayInterval%29%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Sets%20the%20current%20transform%20matrix%20of%20an%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%7BSVGElement%7D%20element%0A%20%20%20%2A%20%40param%20%7BSVGMatrix%7D%20matrix%20%20CTM%0A%20%20%20%2A%20%40param%20%7BSVGElement%7D%20defs%0A%20%20%20%2A%2F%0A%2C%20setCTM%3A%20function%28element%2C%20matrix%2C%20defs%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%0A%20%20%20%20%20%20%2C%20s%20%3D%20%27matrix%28%27%20%2B%20matrix%2Ea%20%2B%20%27%2C%27%20%2B%20matrix%2Eb%20%2B%20%27%2C%27%20%2B%20matrix%2Ec%20%2B%20%27%2C%27%20%2B%20matrix%2Ed%20%2B%20%27%2C%27%20%2B%20matrix%2Ee%20%2B%20%27%2C%27%20%2B%20matrix%2Ef%20%2B%20%27%29%27%3B%0A%0A%20%20%20%20element%2EsetAttributeNS%28null%2C%20%27transform%27%2C%20s%29%3B%0A%0A%20%20%20%20%2F%2F%20IE%20has%20a%20bug%20that%20makes%20markers%20disappear%20on%20zoom%20%28when%20the%20matrix%20%22a%22%20and%2For%20%22d%22%20elements%20change%29%0A%20%20%20%20%2F%2F%20see%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F17654578%2Fsvg%2Dmarker%2Ddoes%2Dnot%2Dwork%2Din%2Die9%2D10%0A%20%20%20%20%2F%2F%20and%20http%3A%2F%2Fsrndolha%2Ewordpress%2Ecom%2F2013%2F11%2F25%2Fsvg%2Dline%2Dmarkers%2Dmay%2Ddisappear%2Din%2Dinternet%2Dexplorer%2D11%2F%0A%20%20%20%20if%20%28%5Fbrowser%20%3D%3D%3D%20%27ie%27%20%26%26%20%21%21defs%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20this%20refresh%20is%20intended%20for%20redisplaying%20the%20SVG%20during%20zooming%0A%20%20%20%20%20%20defs%2EparentNode%2EinsertBefore%28defs%2C%20defs%29%3B%0A%20%20%20%20%20%20%2F%2F%20this%20refresh%20is%20intended%20for%20redisplaying%20the%20other%20SVGs%20on%20a%20page%20when%20panning%20a%20given%20SVG%0A%20%20%20%20%20%20%2F%2F%20it%20is%20also%20needed%20for%20the%20given%20SVG%20itself%2C%20on%20zoomEnd%2C%20if%20the%20SVG%20contains%20any%20markers%20that%0A%20%20%20%20%20%20%2F%2F%20are%20located%20under%20any%20other%20element%28s%29%2E%0A%20%20%20%20%20%20window%2EsetTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20that%2ErefreshDefsGlobal%28%29%3B%0A%20%20%20%20%20%20%7D%2C%20that%2EinternetExplorerRedisplayInterval%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Instantiate%20an%20SVGPoint%20object%20with%20given%20event%20coordinates%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%7BEvent%7D%20evt%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%20%20%20%20%20point%0A%20%20%20%2A%2F%0A%2C%20getEventPoint%3A%20function%28evt%2C%20svg%29%20%7B%0A%20%20%20%20var%20point%20%3D%20svg%2EcreateSVGPoint%28%29%0A%0A%20%20%20%20Utils%2EmouseAndTouchNormalize%28evt%2C%20svg%29%0A%0A%20%20%20%20point%2Ex%20%3D%20evt%2EclientX%0A%20%20%20%20point%2Ey%20%3D%20evt%2EclientY%0A%0A%20%20%20%20return%20point%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Get%20SVG%20center%20point%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%0A%20%20%20%2A%2F%0A%2C%20getSvgCenterPoint%3A%20function%28svg%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20return%20this%2EcreateSVGPoint%28svg%2C%20width%20%2F%202%2C%20height%20%2F%202%29%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Create%20a%20SVGPoint%20with%20given%20x%20and%20y%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%20%40param%20%20%7BNumber%7D%20x%0A%20%20%20%2A%20%40param%20%20%7BNumber%7D%20y%0A%20%20%20%2A%20%40return%20%7BSVGPoint%7D%0A%20%20%20%2A%2F%0A%2C%20createSVGPoint%3A%20function%28svg%2C%20x%2C%20y%29%20%7B%0A%20%20%20%20var%20point%20%3D%20svg%2EcreateSVGPoint%28%29%0A%20%20%20%20point%2Ex%20%3D%20x%0A%20%20%20%20point%2Ey%20%3D%20y%0A%0A%20%20%20%20return%20point%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%22%2E%2Futilities%22%3A7%7D%5D%2C7%3A%5Bfunction%28require%2Cmodule%2Cexports%29%7B%0Amodule%2Eexports%20%3D%20%7B%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Extends%20an%20object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20target%20object%20to%20extend%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20source%20object%20to%20take%20properties%20from%0A%20%20%20%2A%20%40return%20%7BObject%7D%20%20%20%20%20%20%20%20extended%20object%0A%20%20%20%2A%2F%0A%20%20extend%3A%20function%28target%2C%20source%29%20%7B%0A%20%20%20%20target%20%3D%20target%20%7C%7C%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20prop%20in%20source%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Go%20recursively%0A%20%20%20%20%20%20if%20%28this%2EisObject%28source%5Bprop%5D%29%29%20%7B%0A%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20this%2Eextend%28target%5Bprop%5D%2C%20source%5Bprop%5D%29%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20source%5Bprop%5D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20target%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20an%20object%20is%20a%20DOM%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20o%20HTML%20element%20or%20String%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20object%20is%20a%20DOM%20element%0A%20%20%20%2A%2F%0A%2C%20isElement%3A%20function%28o%29%7B%0A%20%20%20%20return%20%28%0A%20%20%20%20%20%20typeof%20HTMLElement%20%3D%3D%3D%20%27object%27%20%3F%20%28o%20instanceof%20HTMLElement%20%7C%7C%20o%20instanceof%20SVGElement%20%7C%7C%20o%20instanceof%20SVGSVGElement%29%20%3A%20%2F%2FDOM2%0A%20%20%20%20%20%20o%20%26%26%20typeof%20o%20%3D%3D%3D%20%27object%27%20%26%26%20o%20%21%3D%3D%20null%20%26%26%20o%2EnodeType%20%3D%3D%3D%201%20%26%26%20typeof%20o%2EnodeName%20%3D%3D%3D%20%27string%27%0A%20%20%20%20%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20an%20object%20is%20an%20Object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20o%20Object%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20object%20is%20an%20Object%0A%20%20%20%2A%2F%0A%2C%20isObject%3A%20function%28o%29%7B%0A%20%20%20%20return%20Object%2Eprototype%2EtoString%2Ecall%28o%29%20%3D%3D%3D%20%27%5Bobject%20Object%5D%27%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Checks%20if%20variable%20is%20Number%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BInteger%7CFloat%7D%20%20n%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%20%20%20returns%20true%20if%20variable%20is%20Number%0A%20%20%20%2A%2F%0A%2C%20isNumber%3A%20function%28n%29%20%7B%0A%20%20%20%20return%20%21isNaN%28parseFloat%28n%29%29%20%26%26%20isFinite%28n%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Search%20for%20an%20SVG%20element%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7CString%7D%20elementOrSelector%20DOM%20Element%20or%20selector%20String%0A%20%20%20%2A%20%40return%20%7BObject%7CNull%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SVG%20or%20null%0A%20%20%20%2A%2F%0A%2C%20getSvg%3A%20function%28elementOrSelector%29%20%7B%0A%20%20%20%20var%20element%0A%20%20%20%20%20%20%2C%20svg%3B%0A%0A%20%20%20%20if%20%28%21this%2EisElement%28elementOrSelector%29%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20If%20selector%20provided%0A%20%20%20%20%20%20if%20%28typeof%20elementOrSelector%20%3D%3D%3D%20%27string%27%20%7C%7C%20elementOrSelector%20instanceof%20String%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Try%20to%20find%20the%20element%0A%20%20%20%20%20%20%20%20element%20%3D%20document%2EquerySelector%28elementOrSelector%29%0A%0A%20%20%20%20%20%20%20%20if%20%28%21element%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Provided%20selector%20did%20not%20find%20any%20elements%2E%20Selector%3A%20%27%20%2B%20elementOrSelector%29%0A%20%20%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Provided%20selector%20is%20not%20an%20HTML%20object%20nor%20String%27%29%0A%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20element%20%3D%20elementOrSelector%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27svg%27%29%20%7B%0A%20%20%20%20%20%20svg%20%3D%20element%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27object%27%29%20%7B%0A%20%20%20%20%20%20%20%20svg%20%3D%20element%2EcontentDocument%2EdocumentElement%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27embed%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20svg%20%3D%20element%2EgetSVGDocument%28%29%2EdocumentElement%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28element%2EtagName%2EtoLowerCase%28%29%20%3D%3D%3D%20%27img%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20script%20an%20SVG%20in%20an%20%22img%22%20element%2E%20Please%20use%20an%20%22object%22%20element%20or%20an%20in%2Dline%20SVG%2E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%27Cannot%20get%20SVG%2E%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20return%20null%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20svg%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Attach%20a%20given%20context%20to%20a%20function%0A%20%20%20%2A%20%40param%20%20%7BFunction%7D%20fn%20%20%20%20%20%20Function%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20%20%20context%20Context%0A%20%20%20%2A%20%40return%20%7BFunction%7D%20%20%20%20%20%20%20%20%20%20%20Function%20with%20certain%20context%0A%20%20%20%2A%2F%0A%2C%20proxy%3A%20function%28fn%2C%20context%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20fn%2Eapply%28context%2C%20arguments%29%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Returns%20object%20type%0A%20%20%20%2A%20Uses%20toString%20that%20returns%20%5Bobject%20SVGPoint%5D%0A%20%20%20%2A%20And%20than%20parses%20object%20type%20from%20string%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BObject%7D%20o%20Any%20object%0A%20%20%20%2A%20%40return%20%7BString%7D%20%20%20Object%20type%0A%20%20%20%2A%2F%0A%2C%20getType%3A%20function%28o%29%20%7B%0A%20%20%20%20return%20Object%2Eprototype%2EtoString%2Eapply%28o%29%2Ereplace%28%2F%5E%5C%5Bobject%5Cs%2F%2C%20%27%27%29%2Ereplace%28%2F%5C%5D%24%2F%2C%20%27%27%29%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20If%20it%20is%20a%20touch%20event%20than%20add%20clientX%20and%20clientY%20to%20event%20object%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20evt%0A%20%20%20%2A%20%40param%20%20%7BSVGSVGElement%7D%20svg%0A%20%20%20%2A%2F%0A%2C%20mouseAndTouchNormalize%3A%20function%28evt%2C%20svg%29%20%7B%0A%20%20%20%20%2F%2F%20If%20no%20cilentX%20and%20but%20touch%20objects%20are%20available%0A%20%20%20%20if%20%28evt%2EclientX%20%3D%3D%3D%20void%200%20%7C%7C%20evt%2EclientX%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Fallback%0A%20%20%20%20%20%20evt%2EclientX%20%3D%200%0A%20%20%20%20%20%20evt%2EclientY%20%3D%200%0A%0A%20%20%20%20%20%20%2F%2F%20If%20it%20is%20a%20touch%20event%0A%20%20%20%20%20%20if%20%28evt%2EchangedTouches%20%21%3D%3D%20void%200%20%26%26%20evt%2EchangedTouches%2Elength%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20touch%20event%20has%20changedTouches%0A%20%20%20%20%20%20%20%20if%20%28evt%2EchangedTouches%5B0%5D%2EclientX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EchangedTouches%5B0%5D%2EclientX%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EchangedTouches%5B0%5D%2EclientY%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20changedTouches%20has%20pageX%20attribute%0A%20%20%20%20%20%20%20%20else%20if%20%28evt%2EchangedTouches%5B0%5D%2EpageX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20rect%20%3D%20svg%2EgetBoundingClientRect%28%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EchangedTouches%5B0%5D%2EpageX%20%2D%20rect%2Eleft%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EchangedTouches%5B0%5D%2EpageY%20%2D%20rect%2Etop%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%2F%2F%20If%20it%20is%20a%20custom%20event%0A%20%20%20%20%20%20%7D%20else%20if%20%28evt%2EoriginalEvent%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28evt%2EoriginalEvent%2EclientX%20%21%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientX%20%3D%20evt%2EoriginalEvent%2EclientX%0A%20%20%20%20%20%20%20%20%20%20evt%2EclientY%20%3D%20evt%2EoriginalEvent%2EclientY%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Check%20if%20an%20event%20is%20a%20double%20click%2Ftap%0A%20%20%20%2A%20TODO%3A%20For%20touch%20gestures%20use%20a%20library%20%28hammer%2Ejs%29%20that%20takes%20in%20account%20other%20events%0A%20%20%20%2A%20%28touchmove%20and%20touchend%29%2E%20It%20should%20take%20in%20account%20tap%20duration%20and%20traveled%20distance%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20%20evt%0A%20%20%20%2A%20%40param%20%20%7BEvent%7D%20%20prevEvt%20Previous%20Event%0A%20%20%20%2A%20%40return%20%7BBoolean%7D%0A%20%20%20%2A%2F%0A%2C%20isDblClick%3A%20function%28evt%2C%20prevEvt%29%20%7B%0A%20%20%20%20%2F%2F%20Double%20click%20detected%20by%20browser%0A%20%20%20%20if%20%28evt%2Edetail%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Try%20to%20compare%20events%0A%20%20%20%20else%20if%20%28prevEvt%20%21%3D%3D%20void%200%20%26%26%20prevEvt%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20var%20timeStampDiff%20%3D%20evt%2EtimeStamp%20%2D%20prevEvt%2EtimeStamp%20%2F%2F%20should%20be%20lower%20than%20250%20ms%0A%20%20%20%20%20%20%20%20%2C%20touchesDistance%20%3D%20Math%2Esqrt%28Math%2Epow%28evt%2EclientX%20%2D%20prevEvt%2EclientX%2C%202%29%20%2B%20Math%2Epow%28evt%2EclientY%20%2D%20prevEvt%2EclientY%2C%202%29%29%0A%0A%20%20%20%20%20%20return%20timeStampDiff%20%3C%20250%20%26%26%20touchesDistance%20%3C%2010%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20Nothing%20found%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Returns%20current%20timestamp%20as%20an%20integer%0A%20%20%20%2A%0A%20%20%20%2A%20%40return%20%7BNumber%7D%0A%20%20%20%2A%2F%0A%2C%20now%3A%20Date%2Enow%20%7C%7C%20function%28%29%20%7B%0A%20%20%20%20return%20new%20Date%28%29%2EgetTime%28%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20From%20underscore%2E%0A%20%20%2F%2F%20Returns%20a%20function%2C%20that%2C%20when%20invoked%2C%20will%20only%20be%20triggered%20at%20most%20once%0A%20%20%2F%2F%20during%20a%20given%20window%20of%20time%2E%20Normally%2C%20the%20throttled%20function%20will%20run%0A%20%20%2F%2F%20as%20much%20as%20it%20can%2C%20without%20ever%20going%20more%20than%20once%20per%20%60wait%60%20duration%3B%0A%20%20%2F%2F%20but%20if%20you%27d%20like%20to%20disable%20the%20execution%20on%20the%20leading%20edge%2C%20pass%0A%20%20%2F%2F%20%60%7Bleading%3A%20false%7D%60%2E%20To%20disable%20execution%20on%20the%20trailing%20edge%2C%20ditto%2E%0A%2F%2F%20jscs%3Adisable%0A%2F%2F%20jshint%20ignore%3Astart%0A%2C%20throttle%3A%20function%28func%2C%20wait%2C%20options%29%20%7B%0A%20%20%20%20var%20that%20%3D%20this%3B%0A%20%20%20%20var%20context%2C%20args%2C%20result%3B%0A%20%20%20%20var%20timeout%20%3D%20null%3B%0A%20%20%20%20var%20previous%20%3D%200%3B%0A%20%20%20%20if%20%28%21options%29%20options%20%3D%20%7B%7D%3B%0A%20%20%20%20var%20later%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20previous%20%3D%20options%2Eleading%20%3D%3D%3D%20false%20%3F%200%20%3A%20that%2Enow%28%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20result%20%3D%20func%2Eapply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20now%20%3D%20that%2Enow%28%29%3B%0A%20%20%20%20%20%20if%20%28%21previous%20%26%26%20options%2Eleading%20%3D%3D%3D%20false%29%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20var%20remaining%20%3D%20wait%20%2D%20%28now%20%2D%20previous%29%3B%0A%20%20%20%20%20%20context%20%3D%20this%3B%0A%20%20%20%20%20%20args%20%3D%20arguments%3B%0A%20%20%20%20%20%20if%20%28remaining%20%3C%3D%200%20%7C%7C%20remaining%20%3E%20wait%29%20%7B%0A%20%20%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20%20%20result%20%3D%20func%2Eapply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21timeout%20%26%26%20options%2Etrailing%20%21%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20remaining%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%2F%2F%20jshint%20ignore%3Aend%0A%2F%2F%20jscs%3Aenable%0A%0A%20%20%2F%2A%2A%0A%20%20%20%2A%20Create%20a%20requestAnimationFrame%20simulation%0A%20%20%20%2A%0A%20%20%20%2A%20%40param%20%20%7BNumber%7CString%7D%20refreshRate%0A%20%20%20%2A%20%40return%20%7BFunction%7D%0A%20%20%20%2A%2F%0A%2C%20createRequestAnimationFrame%3A%20function%28refreshRate%29%20%7B%0A%20%20%20%20var%20timeout%20%3D%20null%0A%0A%20%20%20%20%2F%2F%20Convert%20refreshRate%20to%20timeout%0A%20%20%20%20if%20%28refreshRate%20%21%3D%3D%20%27auto%27%20%26%26%20refreshRate%20%3C%2060%20%26%26%20refreshRate%20%3E%201%29%20%7B%0A%20%20%20%20%20%20timeout%20%3D%20Math%2Efloor%281000%20%2F%20refreshRate%29%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28timeout%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20window%2ErequestAnimationFrame%20%7C%7C%20requestTimeout%2833%29%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20requestTimeout%28timeout%29%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0A%2F%2A%2A%0A%20%2A%20Create%20a%20callback%20that%20will%20execute%20after%20a%20given%20timeout%0A%20%2A%0A%20%2A%20%40param%20%20%7BFunction%7D%20timeout%0A%20%2A%20%40return%20%7BFunction%7D%0A%20%2A%2F%0Afunction%20requestTimeout%28timeout%29%20%7B%0A%20%20return%20function%28callback%29%20%7B%0A%20%20%20%20window%2EsetTimeout%28callback%2C%20timeout%29%0A%20%20%7D%0A%7D%0A%0A%7D%2C%7B%7D%5D%7D%2C%7B%7D%2C%5B1%5D%29%3B%0A"></script> <script src="data:application/x-javascript,HTMLWidgets%2Ewidget%28%7B%0A%0A%20%20name%3A%20%27svgPanZoom%27%2C%0A%0A%20%20type%3A%20%27output%27%2C%0A%0A%20%20initialize%3A%20function%28el%2C%20width%2C%20height%29%20%7B%0A%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%2F%2F%20TODO%3A%20add%20instance%20fields%20as%20required%0A%20%20%20%20%7D%0A%0A%20%20%7D%2C%0A%0A%20%20renderValue%3A%20function%28el%2C%20x%2C%20instance%29%20%7B%0A%20%20%20%20%2F%2F%20set%20innerHTML%20equal%20to%20the%20SVG%20provided%20by%20R%20as%20x%2Esvg%0A%20%20%20%20%2F%2F%20%20for%20better%20robustness%2C%20create%20DOM%20element%20separately%0A%20%20%20%20%2F%2F%20%20and%20add%20to%20the%20htmlwidgets%20container%20el%0A%20%20%20%20el%2EinnerHTML%20%3D%20x%2Esvg%3B%0A%0A%20%20%20%20var%20svg%20%3D%20el%2EgetElementsByTagName%28%22svg%22%29%5B0%5D%0A%0A%20%20%20%20%2F%2F%20use%20this%20to%20sort%20of%20make%20our%20diagram%20responsive%0A%20%20%20%20%2F%2F%20%20or%20at%20a%20minimum%20fit%20within%20the%20bounds%20set%20by%20htmlwidgets%0A%20%20%20%20%2F%2F%20%20for%20the%20parent%20container%0A%20%20%20%20function%20makeResponsive%28el%29%7B%0A%20%20%20%20%20%20%20var%20svg%20%3D%20el%2EgetElementsByTagName%28%22svg%22%29%5B0%5D%3B%0A%20%20%20%20%20%20%20if%28svg%29%7B%0A%20%20%20%20%20%20%20%20if%28svg%2Ewidth%29%20%7Bsvg%2EremoveAttribute%28%22width%22%29%7D%3B%0A%20%20%20%20%20%20%20%20if%28svg%2Eheight%29%20%7Bsvg%2EremoveAttribute%28%22height%22%29%7D%3B%0A%20%20%20%20%20%20%20%20svg%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20svg%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20makeResponsive%28el%29%3B%0A%0A%20%20%20%20instance%2EzoomWidget%20%3D%20svgPanZoom%28svg%2C%20x%2Econfig%29%3B%0A%20%20%20%20%2F%2F%20%20use%20expando%20property%20so%20we%20can%20access%20later%0A%20%20%20%20%2F%2F%20%20%20%20somewhere%20saw%20where%20expando%20can%20cause%20memory%20leak%20in%20IE%0A%20%20%20%20%2F%2F%20%20%20%20could%20also%20set%20in%20HTMLWidgets%2Ewidgets%5Bx%5D%20where%20matches%20el%0A%20%20%20%20el%2EzoomWidget%20%3D%20instance%2EzoomWidget%3B%0A%0A%20%20%7D%2C%0A%0A%20%20resize%3A%20function%28el%2C%20width%2C%20height%2C%20instance%29%20%7B%0A%0A%20%20%7D%0A%0A%7D%29%3B%0A"></script> </head> <body style="background-color:white;"> <div id="htmlwidget_container"> <div id="htmlwidget-3332" style="width:960px;height:500px;" class="svgPanZoom"></div> </div> <script type="application/json" data-for="htmlwidget-3332">{ "x": { "svg": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"1152pt\" height=\"720pt\" viewBox=\"0 0 1152 720\" version=\"1.1\">\n <display xmlns:r=\"http://www.r-project.org\" usr=\"0.00183856116448483,0.0153817133293448,0.000199229492253874,0.000500182006401707\"><![CDATA[{\nmycolors = RColorBrewer::brewer.pal(9, \"Set1\")[-6]\nfrontier <- portfolioFrontier(as.timeSeries(returns))\npointsFrontier = frontierPoints(frontier, frontier = \"both\", auto = TRUE)\ntargetRisk = getTargetRisk(frontier@portfolio)[, 1]\ntargetReturn = getTargetReturn(frontier@portfolio)[, 1]\nans = cbind(Risk = targetRisk, Return = targetReturn)\ncolnames(ans) = c(\"targetRisk\", \"targetReturn\")\nrownames(ans) = as.character(1:NROW(ans))\nplot(ans, type = \"l\", lwd = 2, lty = 3, xlab = NA, ylab = NA, bty = \"L\")\nminvariancePoints(frontier, pch = 19, col = \"red\")\ntangencyPoints(frontier, pch = 19, col = \"blue\")\nequalWeightsPoints(frontier, pch = 15, col = \"grey\")\nsingleAssetPoints(frontier, pch = 19, cex = 1.5, col = mycolors)\ntwoAssetsLines(frontier, lty = 3, col = \"grey\")\nstats <- getStatistics(frontier)\ntext(y = stats$mean, x = sqrt(diag(stats$Cov)), labels = names(stats$mean), pos = 4, col = mycolors, cex = 0.7)\nequalLabel <- function(object, return = c(\"mean\", \"mu\"), risk = c(\"Cov\", \"Sigma\", \"CVaR\", \"VaR\"), auto = TRUE, ...) {\n return = match.arg(return)\n risk = match.arg(risk)\n data = getSeries(object)\n spec = getSpec(object)\n constraints = getConstraints(object)\n numberOfAssets = getNAssets(object)\n setWeights(spec) = rep(1/numberOfAssets, times = numberOfAssets)\n ewPortfolio = feasiblePortfolio(data, spec, constraints)\n assets = frontierPoints(ewPortfolio, return = return, risk = risk, auto = auto)\n text(assets, labels = \"Equal-Weight\", pos = 4, ...)\n invisible(assets)\n}\nequalLabel(frontier, cex = 0.7, col = \"grey\")\ntitle(main = paste0(\"Efficient Frontier Vanguard Funds \", format(head(index(returns), 1), \"%Y\"), \" to \", format(tail(index(returns), 1), \"%Y\")))\n}\n]]></display>\n <defs>\n <g>\n <symbol overflow=\"visible\" id=\"glyph0-0\">\n <path style=\"stroke:none;\" d=\"M 0.519531 -4.414063 C 0.515625 -5.46875 0.625 -6.320313 0.84375 -6.964844 C 1.0625 -7.609375 1.386719 -8.105469 1.816406 -8.457031 C 2.246094 -8.804688 2.785156 -8.980469 3.4375 -8.984375 C 3.914063 -8.980469 4.335938 -8.886719 4.699219 -8.695313 C 5.058594 -8.5 5.355469 -8.21875 5.59375 -7.859375 C 5.828125 -7.492188 6.015625 -7.050781 6.152344 -6.527344 C 6.285156 -6.003906 6.351563 -5.296875 6.355469 -4.414063 C 6.351563 -3.359375 6.242188 -2.511719 6.03125 -1.871094 C 5.8125 -1.222656 5.492188 -0.726563 5.0625 -0.375 C 4.632813 -0.0234375 4.089844 0.152344 3.4375 0.152344 C 2.570313 0.152344 1.890625 -0.15625 1.402344 -0.773438 C 0.808594 -1.515625 0.515625 -2.726563 0.519531 -4.414063 Z M 1.648438 -4.414063 C 1.644531 -2.941406 1.816406 -1.964844 2.164063 -1.480469 C 2.503906 -0.992188 2.929688 -0.75 3.4375 -0.75 C 3.9375 -0.75 4.359375 -0.992188 4.707031 -1.480469 C 5.050781 -1.96875 5.226563 -2.945313 5.226563 -4.414063 C 5.226563 -5.882813 5.050781 -6.863281 4.707031 -7.347656 C 4.359375 -7.832031 3.933594 -8.074219 3.425781 -8.074219 C 2.917969 -8.074219 2.515625 -7.859375 2.214844 -7.433594 C 1.835938 -6.886719 1.644531 -5.878906 1.648438 -4.414063 Z M 1.648438 -4.414063 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph0-1\">\n <path style=\"stroke:none;\" d=\"M 1.136719 0 L 1.136719 -1.25 L 2.386719 -1.25 L 2.386719 0 Z M 1.136719 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph0-2\">\n <path style=\"stroke:none;\" d=\"M 6.292969 -1.054688 L 6.292969 0 L 0.378906 0 C 0.367188 -0.265625 0.410156 -0.519531 0.507813 -0.761719 C 0.65625 -1.164063 0.898438 -1.558594 1.230469 -1.953125 C 1.558594 -2.339844 2.035156 -2.792969 2.667969 -3.308594 C 3.636719 -4.101563 4.292969 -4.734375 4.636719 -5.203125 C 4.976563 -5.667969 5.148438 -6.105469 5.152344 -6.523438 C 5.148438 -6.957031 4.992188 -7.324219 4.683594 -7.625 C 4.371094 -7.921875 3.96875 -8.074219 3.46875 -8.074219 C 2.9375 -8.074219 2.511719 -7.914063 2.195313 -7.597656 C 1.878906 -7.277344 1.71875 -6.839844 1.714844 -6.28125 L 0.585938 -6.398438 C 0.664063 -7.238281 0.953125 -7.878906 1.457031 -8.320313 C 1.960938 -8.761719 2.640625 -8.980469 3.492188 -8.984375 C 4.347656 -8.980469 5.023438 -8.742188 5.527344 -8.269531 C 6.027344 -7.789063 6.28125 -7.199219 6.28125 -6.5 C 6.28125 -6.140625 6.207031 -5.789063 6.058594 -5.445313 C 5.910156 -5.09375 5.664063 -4.730469 5.328125 -4.351563 C 4.984375 -3.964844 4.421875 -3.441406 3.636719 -2.777344 C 2.976563 -2.222656 2.554688 -1.84375 2.367188 -1.648438 C 2.179688 -1.449219 2.023438 -1.253906 1.90625 -1.054688 Z M 6.292969 -1.054688 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph0-3\">\n <path style=\"stroke:none;\" d=\"M 4.039063 0 L 4.039063 -2.140625 L 0.160156 -2.140625 L 0.160156 -3.148438 L 4.242188 -8.949219 L 5.140625 -8.949219 L 5.140625 -3.148438 L 6.347656 -3.148438 L 6.347656 -2.140625 L 5.140625 -2.140625 L 5.140625 0 Z M 4.039063 -3.148438 L 4.039063 -7.183594 L 1.238281 -3.148438 Z M 4.039063 -3.148438 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph0-4\">\n <path style=\"stroke:none;\" d=\"M 6.21875 -6.757813 L 5.125 -6.671875 C 5.027344 -7.097656 4.890625 -7.410156 4.710938 -7.609375 C 4.414063 -7.921875 4.046875 -8.078125 3.613281 -8.082031 C 3.261719 -8.078125 2.953125 -7.980469 2.691406 -7.789063 C 2.339844 -7.53125 2.066406 -7.164063 1.871094 -6.683594 C 1.667969 -6.195313 1.566406 -5.503906 1.5625 -4.613281 C 1.824219 -5.011719 2.148438 -5.3125 2.53125 -5.511719 C 2.914063 -5.703125 3.3125 -5.800781 3.734375 -5.804688 C 4.464844 -5.800781 5.089844 -5.53125 5.605469 -4.996094 C 6.117188 -4.453125 6.375 -3.757813 6.378906 -2.90625 C 6.375 -2.34375 6.253906 -1.820313 6.015625 -1.339844 C 5.769531 -0.855469 5.4375 -0.484375 5.015625 -0.230469 C 4.59375 0.0273438 4.113281 0.152344 3.578125 0.152344 C 2.660156 0.152344 1.914063 -0.183594 1.335938 -0.855469 C 0.757813 -1.527344 0.46875 -2.636719 0.46875 -4.1875 C 0.46875 -5.914063 0.789063 -7.171875 1.429688 -7.960938 C 1.984375 -8.640625 2.734375 -8.980469 3.679688 -8.984375 C 4.382813 -8.980469 4.957031 -8.785156 5.410156 -8.390625 C 5.855469 -7.996094 6.125 -7.449219 6.21875 -6.757813 Z M 1.734375 -2.898438 C 1.734375 -2.519531 1.8125 -2.15625 1.972656 -1.8125 C 2.132813 -1.460938 2.359375 -1.199219 2.648438 -1.019531 C 2.9375 -0.839844 3.238281 -0.75 3.558594 -0.75 C 4.019531 -0.75 4.417969 -0.9375 4.753906 -1.3125 C 5.082031 -1.6875 5.25 -2.195313 5.253906 -2.839844 C 5.25 -3.453125 5.085938 -3.941406 4.757813 -4.300781 C 4.429688 -4.65625 4.015625 -4.832031 3.515625 -4.835938 C 3.015625 -4.832031 2.59375 -4.65625 2.25 -4.300781 C 1.90625 -3.941406 1.734375 -3.472656 1.734375 -2.898438 Z M 1.734375 -2.898438 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph0-5\">\n <path style=\"stroke:none;\" d=\"M 2.210938 -4.851563 C 1.75 -5.015625 1.414063 -5.253906 1.195313 -5.566406 C 0.976563 -5.875 0.867188 -6.242188 0.867188 -6.675781 C 0.867188 -7.324219 1.097656 -7.871094 1.566406 -8.316406 C 2.03125 -8.757813 2.65625 -8.980469 3.4375 -8.984375 C 4.214844 -8.980469 4.84375 -8.753906 5.320313 -8.304688 C 5.796875 -7.847656 6.035156 -7.296875 6.035156 -6.648438 C 6.035156 -6.230469 5.925781 -5.867188 5.707031 -5.5625 C 5.488281 -5.25 5.15625 -5.015625 4.71875 -4.851563 C 5.265625 -4.671875 5.683594 -4.382813 5.972656 -3.984375 C 6.253906 -3.585938 6.398438 -3.109375 6.402344 -2.558594 C 6.398438 -1.789063 6.128906 -1.144531 5.589844 -0.628906 C 5.046875 -0.105469 4.332031 0.152344 3.453125 0.152344 C 2.566406 0.152344 1.855469 -0.105469 1.316406 -0.628906 C 0.773438 -1.148438 0.503906 -1.800781 0.507813 -2.585938 C 0.503906 -3.164063 0.652344 -3.652344 0.949219 -4.050781 C 1.242188 -4.441406 1.660156 -4.710938 2.210938 -4.851563 Z M 1.988281 -6.714844 C 1.984375 -6.289063 2.121094 -5.941406 2.398438 -5.675781 C 2.667969 -5.40625 3.023438 -5.273438 3.460938 -5.273438 C 3.878906 -5.273438 4.226563 -5.40625 4.5 -5.671875 C 4.769531 -5.9375 4.902344 -6.261719 4.90625 -6.652344 C 4.902344 -7.050781 4.765625 -7.390625 4.488281 -7.667969 C 4.207031 -7.941406 3.859375 -8.078125 3.449219 -8.082031 C 3.027344 -8.078125 2.679688 -7.945313 2.402344 -7.675781 C 2.125 -7.40625 1.984375 -7.085938 1.988281 -6.714844 Z M 1.636719 -2.582031 C 1.632813 -2.265625 1.707031 -1.960938 1.859375 -1.671875 C 2.003906 -1.375 2.226563 -1.148438 2.519531 -0.992188 C 2.8125 -0.828125 3.128906 -0.75 3.46875 -0.75 C 3.992188 -0.75 4.421875 -0.917969 4.765625 -1.257813 C 5.105469 -1.59375 5.277344 -2.023438 5.28125 -2.546875 C 5.277344 -3.074219 5.101563 -3.511719 4.75 -3.855469 C 4.394531 -4.199219 3.953125 -4.371094 3.429688 -4.375 C 2.910156 -4.371094 2.484375 -4.199219 2.144531 -3.863281 C 1.804688 -3.519531 1.632813 -3.09375 1.636719 -2.582031 Z M 1.636719 -2.582031 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph0-6\">\n <path style=\"stroke:none;\" d=\"M 4.65625 0 L 3.558594 0 L 3.558594 -7 C 3.289063 -6.746094 2.941406 -6.492188 2.515625 -6.242188 C 2.085938 -5.988281 1.703125 -5.800781 1.359375 -5.675781 L 1.359375 -6.738281 C 1.972656 -7.027344 2.507813 -7.375 2.972656 -7.789063 C 3.429688 -8.195313 3.757813 -8.59375 3.949219 -8.984375 L 4.65625 -8.984375 Z M 4.65625 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph1-0\">\n <path style=\"stroke:none;\" d=\"M -4.414063 -0.519531 C -5.46875 -0.515625 -6.320313 -0.625 -6.964844 -0.84375 C -7.609375 -1.0625 -8.105469 -1.386719 -8.457031 -1.816406 C -8.804688 -2.246094 -8.980469 -2.785156 -8.984375 -3.4375 C -8.980469 -3.914063 -8.886719 -4.335938 -8.695313 -4.699219 C -8.5 -5.058594 -8.21875 -5.355469 -7.859375 -5.59375 C -7.492188 -5.828125 -7.050781 -6.015625 -6.527344 -6.152344 C -6.003906 -6.285156 -5.296875 -6.351563 -4.414063 -6.355469 C -3.359375 -6.351563 -2.511719 -6.242188 -1.871094 -6.03125 C -1.222656 -5.8125 -0.726563 -5.492188 -0.375 -5.0625 C -0.0234375 -4.632813 0.152344 -4.089844 0.152344 -3.4375 C 0.152344 -2.570313 -0.15625 -1.890625 -0.773438 -1.402344 C -1.515625 -0.808594 -2.726563 -0.515625 -4.414063 -0.519531 Z M -4.414063 -1.648438 C -2.941406 -1.644531 -1.964844 -1.816406 -1.480469 -2.164063 C -0.992188 -2.503906 -0.75 -2.929688 -0.75 -3.4375 C -0.75 -3.9375 -0.992188 -4.359375 -1.480469 -4.707031 C -1.96875 -5.050781 -2.945313 -5.226563 -4.414063 -5.226563 C -5.882813 -5.226563 -6.863281 -5.050781 -7.347656 -4.707031 C -7.832031 -4.359375 -8.074219 -3.933594 -8.074219 -3.425781 C -8.074219 -2.917969 -7.859375 -2.515625 -7.433594 -2.214844 C -6.886719 -1.835938 -5.878906 -1.644531 -4.414063 -1.648438 Z M -4.414063 -1.648438 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph1-1\">\n <path style=\"stroke:none;\" d=\"M 0 -1.136719 L -1.25 -1.136719 L -1.25 -2.386719 L 0 -2.386719 Z M 0 -1.136719 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph1-2\">\n <path style=\"stroke:none;\" d=\"M -1.054688 -6.292969 L 0 -6.292969 L 0 -0.378906 C -0.265625 -0.367188 -0.519531 -0.410156 -0.761719 -0.507813 C -1.164063 -0.65625 -1.558594 -0.898438 -1.953125 -1.230469 C -2.339844 -1.558594 -2.792969 -2.035156 -3.308594 -2.667969 C -4.101563 -3.636719 -4.734375 -4.292969 -5.203125 -4.636719 C -5.667969 -4.976563 -6.105469 -5.148438 -6.523438 -5.152344 C -6.957031 -5.148438 -7.324219 -4.992188 -7.625 -4.683594 C -7.921875 -4.371094 -8.074219 -3.96875 -8.074219 -3.46875 C -8.074219 -2.9375 -7.914063 -2.511719 -7.597656 -2.195313 C -7.277344 -1.878906 -6.839844 -1.71875 -6.28125 -1.714844 L -6.398438 -0.585938 C -7.238281 -0.664063 -7.878906 -0.953125 -8.320313 -1.457031 C -8.761719 -1.960938 -8.980469 -2.640625 -8.984375 -3.492188 C -8.980469 -4.347656 -8.742188 -5.023438 -8.269531 -5.527344 C -7.789063 -6.027344 -7.199219 -6.28125 -6.5 -6.28125 C -6.140625 -6.28125 -5.789063 -6.207031 -5.445313 -6.058594 C -5.09375 -5.910156 -4.730469 -5.664063 -4.351563 -5.328125 C -3.964844 -4.984375 -3.441406 -4.421875 -2.777344 -3.636719 C -2.222656 -2.976563 -1.84375 -2.554688 -1.648438 -2.367188 C -1.449219 -2.179688 -1.253906 -2.023438 -1.054688 -1.90625 Z M -1.054688 -6.292969 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph1-3\">\n <path style=\"stroke:none;\" d=\"M -2.34375 -0.519531 L -2.441406 -1.671875 C -1.875 -1.753906 -1.453125 -1.953125 -1.171875 -2.265625 C -0.890625 -2.574219 -0.75 -2.949219 -0.75 -3.394531 C -0.75 -3.917969 -0.949219 -4.367188 -1.347656 -4.734375 C -1.746094 -5.101563 -2.273438 -5.285156 -2.9375 -5.285156 C -3.558594 -5.285156 -4.054688 -5.109375 -4.417969 -4.757813 C -4.777344 -4.40625 -4.957031 -3.945313 -4.960938 -3.375 C -4.957031 -3.019531 -4.875 -2.699219 -4.71875 -2.414063 C -4.554688 -2.128906 -4.347656 -1.90625 -4.09375 -1.746094 L -4.230469 -0.714844 L -8.824219 -1.582031 L -8.824219 -6.03125 L -7.777344 -6.03125 L -7.777344 -2.460938 L -5.371094 -1.976563 C -5.742188 -2.511719 -5.929688 -3.078125 -5.933594 -3.667969 C -5.929688 -4.449219 -5.660156 -5.105469 -5.121094 -5.644531 C -4.578125 -6.179688 -3.882813 -6.449219 -3.035156 -6.453125 C -2.222656 -6.449219 -1.519531 -6.214844 -0.933594 -5.742188 C -0.207031 -5.167969 0.152344 -4.382813 0.152344 -3.394531 C 0.152344 -2.574219 -0.0742188 -1.910156 -0.53125 -1.398438 C -0.984375 -0.882813 -1.589844 -0.589844 -2.34375 -0.519531 Z M -2.34375 -0.519531 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph1-4\">\n <path style=\"stroke:none;\" d=\"M -2.363281 -0.523438 L -2.507813 -1.625 C -1.882813 -1.746094 -1.433594 -1.960938 -1.160156 -2.265625 C -0.886719 -2.566406 -0.75 -2.9375 -0.75 -3.375 C -0.75 -3.890625 -0.925781 -4.324219 -1.285156 -4.683594 C -1.640625 -5.035156 -2.085938 -5.214844 -2.617188 -5.21875 C -3.121094 -5.214844 -3.539063 -5.050781 -3.867188 -4.722656 C -4.195313 -4.394531 -4.359375 -3.976563 -4.359375 -3.46875 C -4.359375 -3.257813 -4.316406 -2.996094 -4.234375 -2.691406 L -5.199219 -2.8125 C -5.1875 -2.882813 -5.183594 -2.941406 -5.1875 -2.992188 C -5.183594 -3.457031 -5.308594 -3.878906 -5.554688 -4.253906 C -5.796875 -4.628906 -6.171875 -4.816406 -6.683594 -4.816406 C -7.085938 -4.816406 -7.417969 -4.679688 -7.683594 -4.40625 C -7.945313 -4.132813 -8.078125 -3.78125 -8.082031 -3.351563 C -8.078125 -2.921875 -7.945313 -2.5625 -7.675781 -2.28125 C -7.40625 -1.992188 -7.003906 -1.8125 -6.46875 -1.734375 L -6.664063 -0.636719 C -7.398438 -0.765625 -7.96875 -1.070313 -8.375 -1.550781 C -8.777344 -2.023438 -8.980469 -2.617188 -8.984375 -3.328125 C -8.980469 -3.8125 -8.875 -4.261719 -8.667969 -4.675781 C -8.457031 -5.085938 -8.171875 -5.398438 -7.8125 -5.617188 C -7.445313 -5.832031 -7.0625 -5.941406 -6.660156 -5.945313 C -6.269531 -5.941406 -5.917969 -5.835938 -5.601563 -5.632813 C -5.28125 -5.421875 -5.027344 -5.117188 -4.847656 -4.710938 C -4.722656 -5.238281 -4.46875 -5.648438 -4.085938 -5.941406 C -3.695313 -6.234375 -3.214844 -6.378906 -2.644531 -6.382813 C -1.859375 -6.378906 -1.199219 -6.09375 -0.65625 -5.527344 C -0.113281 -4.957031 0.15625 -4.238281 0.160156 -3.367188 C 0.15625 -2.582031 -0.0742188 -1.929688 -0.542969 -1.414063 C -1.007813 -0.890625 -1.613281 -0.59375 -2.363281 -0.523438 Z M -2.363281 -0.523438 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph1-5\">\n <path style=\"stroke:none;\" d=\"M 0 -4.039063 L -2.140625 -4.039063 L -2.140625 -0.160156 L -3.148438 -0.160156 L -8.949219 -4.242188 L -8.949219 -5.140625 L -3.148438 -5.140625 L -3.148438 -6.347656 L -2.140625 -6.347656 L -2.140625 -5.140625 L 0 -5.140625 Z M -3.148438 -4.039063 L -7.183594 -4.039063 L -3.148438 -1.238281 Z M -3.148438 -4.039063 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-0\">\n <path style=\"stroke:none;\" d=\"M 2.507813 0 L 0.0390625 -6.371094 L 0.953125 -6.371094 L 2.605469 -1.742188 C 2.738281 -1.367188 2.851563 -1.019531 2.941406 -0.699219 C 3.039063 -1.042969 3.152344 -1.390625 3.285156 -1.742188 L 5.007813 -6.371094 L 5.867188 -6.371094 L 3.371094 0 Z M 2.507813 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-1\">\n <path style=\"stroke:none;\" d=\"M 0.730469 0 L 0.730469 -6.371094 L 5.027344 -6.371094 L 5.027344 -5.617188 L 1.574219 -5.617188 L 1.574219 -3.644531 L 4.5625 -3.644531 L 4.5625 -2.894531 L 1.574219 -2.894531 L 1.574219 0 Z M 0.730469 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-2\">\n <path style=\"stroke:none;\" d=\"M 0.828125 0 L 0.828125 -6.371094 L 1.671875 -6.371094 L 1.671875 0 Z M 0.828125 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-3\">\n <path style=\"stroke:none;\" d=\"M 0.679688 0 L 0.679688 -6.371094 L 1.542969 -6.371094 L 4.890625 -1.367188 L 4.890625 -6.371094 L 5.695313 -6.371094 L 5.695313 0 L 4.832031 0 L 1.484375 -5.007813 L 1.484375 0 Z M 0.679688 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-4\">\n <path style=\"stroke:none;\" d=\"M 0.0390625 0 L 2.503906 -3.320313 L 0.332031 -6.371094 L 1.335938 -6.371094 L 2.488281 -4.738281 C 2.726563 -4.394531 2.898438 -4.132813 3.003906 -3.953125 C 3.140625 -4.183594 3.308594 -4.425781 3.507813 -4.679688 L 4.789063 -6.371094 L 5.707031 -6.371094 L 3.46875 -3.367188 L 5.878906 0 L 4.835938 0 L 3.234375 -2.273438 C 3.140625 -2.402344 3.046875 -2.542969 2.953125 -2.699219 C 2.8125 -2.464844 2.710938 -2.304688 2.652344 -2.21875 L 1.050781 0 Z M 0.0390625 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-5\">\n <path style=\"stroke:none;\" d=\"M 0.703125 0 L 0.703125 -6.371094 L 5.308594 -6.371094 L 5.308594 -5.617188 L 1.546875 -5.617188 L 1.546875 -3.667969 L 5.070313 -3.667969 L 5.070313 -2.921875 L 1.546875 -2.921875 L 1.546875 -0.75 L 5.457031 -0.75 L 5.457031 0 Z M 0.703125 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-6\">\n <path style=\"stroke:none;\" d=\"M -0.0117188 0 L 2.433594 -6.371094 L 3.34375 -6.371094 L 5.949219 0 L 4.988281 0 L 4.246094 -1.929688 L 1.582031 -1.929688 L 0.882813 0 Z M 1.824219 -2.617188 L 3.984375 -2.617188 L 3.320313 -4.378906 C 3.113281 -4.910156 2.960938 -5.351563 2.867188 -5.703125 C 2.78125 -5.289063 2.667969 -4.882813 2.523438 -4.484375 Z M 1.824219 -2.617188 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-7\">\n <path style=\"stroke:none;\" d=\"M 0.652344 0 L 0.652344 -6.371094 L 3.042969 -6.371094 C 3.527344 -6.367188 3.917969 -6.304688 4.210938 -6.175781 C 4.503906 -6.046875 4.734375 -5.847656 4.902344 -5.582031 C 5.066406 -5.3125 5.148438 -5.03125 5.152344 -4.742188 C 5.148438 -4.464844 5.074219 -4.207031 4.929688 -3.96875 C 4.78125 -3.726563 4.558594 -3.535156 4.261719 -3.390625 C 4.644531 -3.273438 4.941406 -3.078125 5.148438 -2.808594 C 5.355469 -2.535156 5.460938 -2.214844 5.460938 -1.847656 C 5.460938 -1.542969 5.398438 -1.265625 5.273438 -1.011719 C 5.148438 -0.753906 4.992188 -0.558594 4.804688 -0.421875 C 4.617188 -0.28125 4.382813 -0.175781 4.109375 -0.105469 C 3.828125 -0.0351563 3.488281 0 3.082031 0 Z M 1.496094 -3.695313 L 2.871094 -3.695313 C 3.246094 -3.691406 3.511719 -3.714844 3.675781 -3.769531 C 3.886719 -3.828125 4.050781 -3.933594 4.160156 -4.082031 C 4.269531 -4.226563 4.324219 -4.414063 4.324219 -4.640625 C 4.324219 -4.851563 4.273438 -5.035156 4.171875 -5.199219 C 4.070313 -5.355469 3.921875 -5.464844 3.734375 -5.527344 C 3.542969 -5.582031 3.222656 -5.613281 2.769531 -5.617188 L 1.496094 -5.617188 Z M 1.496094 -0.75 L 3.082031 -0.75 C 3.351563 -0.75 3.542969 -0.757813 3.65625 -0.78125 C 3.847656 -0.8125 4.007813 -0.871094 4.140625 -0.957031 C 4.269531 -1.035156 4.375 -1.152344 4.460938 -1.308594 C 4.542969 -1.460938 4.585938 -1.640625 4.589844 -1.847656 C 4.585938 -2.082031 4.527344 -2.289063 4.40625 -2.464844 C 4.28125 -2.640625 4.109375 -2.765625 3.898438 -2.835938 C 3.679688 -2.90625 3.371094 -2.941406 2.96875 -2.941406 L 1.496094 -2.941406 Z M 1.496094 -0.75 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-8\">\n <path style=\"stroke:none;\" d=\"M 0.660156 0 L 0.660156 -6.371094 L 1.929688 -6.371094 L 3.4375 -1.859375 C 3.574219 -1.4375 3.675781 -1.125 3.742188 -0.917969 C 3.8125 -1.148438 3.925781 -1.488281 4.082031 -1.9375 L 5.605469 -6.371094 L 6.738281 -6.371094 L 6.738281 0 L 5.925781 0 L 5.925781 -5.332031 L 4.078125 0 L 3.316406 0 L 1.472656 -5.421875 L 1.472656 0 Z M 0.660156 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-9\">\n <path style=\"stroke:none;\" d=\"M 1.800781 0 L 0.109375 -6.371094 L 0.972656 -6.371094 L 1.941406 -2.195313 C 2.042969 -1.753906 2.132813 -1.320313 2.210938 -0.890625 C 2.371094 -1.570313 2.46875 -1.960938 2.5 -2.070313 L 3.710938 -6.371094 L 4.726563 -6.371094 L 5.640625 -3.144531 C 5.867188 -2.34375 6.03125 -1.59375 6.136719 -0.890625 C 6.214844 -1.292969 6.320313 -1.753906 6.453125 -2.277344 L 7.453125 -6.371094 L 8.300781 -6.371094 L 6.554688 0 L 5.742188 0 L 4.398438 -4.855469 C 4.28125 -5.257813 4.214844 -5.507813 4.199219 -5.601563 C 4.128906 -5.308594 4.066406 -5.058594 4.011719 -4.855469 L 2.660156 0 Z M 1.800781 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-10\">\n <path style=\"stroke:none;\" d=\"M 3.667969 -2.5 L 3.667969 -3.246094 L 6.367188 -3.25 L 6.367188 -0.886719 C 5.949219 -0.550781 5.523438 -0.304688 5.085938 -0.140625 C 4.644531 0.0234375 4.191406 0.105469 3.730469 0.109375 C 3.101563 0.105469 2.53125 -0.0273438 2.023438 -0.292969 C 1.507813 -0.558594 1.121094 -0.945313 0.863281 -1.453125 C 0.597656 -1.960938 0.46875 -2.527344 0.472656 -3.15625 C 0.46875 -3.773438 0.597656 -4.351563 0.859375 -4.890625 C 1.117188 -5.425781 1.492188 -5.824219 1.980469 -6.085938 C 2.464844 -6.347656 3.023438 -6.480469 3.664063 -6.480469 C 4.121094 -6.480469 4.539063 -6.402344 4.914063 -6.253906 C 5.285156 -6.101563 5.578125 -5.894531 5.789063 -5.628906 C 6 -5.359375 6.160156 -5.011719 6.269531 -4.589844 L 5.511719 -4.378906 C 5.414063 -4.699219 5.292969 -4.957031 5.152344 -5.144531 C 5.007813 -5.328125 4.804688 -5.476563 4.542969 -5.589844 C 4.277344 -5.699219 3.988281 -5.753906 3.667969 -5.757813 C 3.28125 -5.753906 2.945313 -5.695313 2.667969 -5.582031 C 2.382813 -5.460938 2.15625 -5.304688 1.988281 -5.117188 C 1.8125 -4.921875 1.679688 -4.714844 1.585938 -4.488281 C 1.421875 -4.09375 1.339844 -3.664063 1.34375 -3.207031 C 1.339844 -2.636719 1.4375 -2.164063 1.636719 -1.78125 C 1.828125 -1.398438 2.113281 -1.113281 2.488281 -0.929688 C 2.859375 -0.742188 3.257813 -0.648438 3.679688 -0.652344 C 4.042969 -0.648438 4.398438 -0.71875 4.746094 -0.863281 C 5.09375 -1 5.355469 -1.152344 5.539063 -1.3125 L 5.539063 -2.5 Z M 3.667969 -2.5 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-11\">\n <path style=\"stroke:none;\" d=\"M 2.308594 0 L 2.308594 -5.617188 L 0.207031 -5.617188 L 0.207031 -6.371094 L 5.257813 -6.371094 L 5.257813 -5.617188 L 3.152344 -5.617188 L 3.152344 0 Z M 2.308594 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-12\">\n <path style=\"stroke:none;\" d=\"M 0.699219 0 L 0.699219 -6.371094 L 3.523438 -6.371094 C 4.085938 -6.367188 4.519531 -6.3125 4.816406 -6.199219 C 5.113281 -6.082031 5.347656 -5.878906 5.527344 -5.59375 C 5.699219 -5.300781 5.789063 -4.980469 5.792969 -4.632813 C 5.789063 -4.175781 5.640625 -3.792969 5.351563 -3.488281 C 5.054688 -3.175781 4.605469 -2.980469 3.996094 -2.898438 C 4.21875 -2.789063 4.386719 -2.683594 4.507813 -2.582031 C 4.75 -2.351563 4.984375 -2.070313 5.207031 -1.734375 L 6.3125 0 L 5.253906 0 L 4.410156 -1.324219 C 4.164063 -1.707031 3.960938 -2 3.800781 -2.203125 C 3.640625 -2.40625 3.496094 -2.546875 3.371094 -2.628906 C 3.242188 -2.707031 3.117188 -2.761719 2.988281 -2.796875 C 2.894531 -2.8125 2.738281 -2.824219 2.519531 -2.828125 L 1.542969 -2.828125 L 1.542969 0 Z M 1.542969 -3.558594 L 3.355469 -3.558594 C 3.738281 -3.554688 4.039063 -3.59375 4.257813 -3.675781 C 4.472656 -3.753906 4.636719 -3.882813 4.753906 -4.058594 C 4.863281 -4.234375 4.921875 -4.425781 4.921875 -4.632813 C 4.921875 -4.933594 4.8125 -5.179688 4.59375 -5.375 C 4.375 -5.566406 4.027344 -5.664063 3.558594 -5.667969 L 1.542969 -5.667969 Z M 1.542969 -3.558594 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-13\">\n <path style=\"stroke:none;\" d=\"M 3.527344 1.769531 L 3.527344 -0.492188 C 3.40625 -0.320313 3.234375 -0.175781 3.019531 -0.0625 C 2.796875 0.0507813 2.566406 0.105469 2.320313 0.105469 C 1.773438 0.105469 1.300781 -0.113281 0.90625 -0.550781 C 0.507813 -0.988281 0.308594 -1.585938 0.3125 -2.351563 C 0.308594 -2.8125 0.390625 -3.230469 0.554688 -3.597656 C 0.714844 -3.964844 0.949219 -4.242188 1.253906 -4.433594 C 1.558594 -4.621094 1.890625 -4.714844 2.257813 -4.71875 C 2.828125 -4.714844 3.277344 -4.476563 3.605469 -3.996094 L 3.605469 -4.613281 L 4.3125 -4.613281 L 4.3125 1.769531 Z M 1.117188 -2.320313 C 1.113281 -1.726563 1.238281 -1.28125 1.488281 -0.984375 C 1.738281 -0.6875 2.035156 -0.539063 2.386719 -0.539063 C 2.714844 -0.539063 3.003906 -0.679688 3.246094 -0.960938 C 3.484375 -1.242188 3.601563 -1.671875 3.605469 -2.25 C 3.601563 -2.863281 3.476563 -3.324219 3.226563 -3.636719 C 2.972656 -3.945313 2.675781 -4.101563 2.332031 -4.101563 C 1.992188 -4.101563 1.703125 -3.957031 1.46875 -3.667969 C 1.230469 -3.378906 1.113281 -2.929688 1.117188 -2.320313 Z M 1.117188 -2.320313 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-14\">\n <path style=\"stroke:none;\" d=\"M 3.609375 0 L 3.609375 -0.679688 C 3.25 -0.15625 2.761719 0.105469 2.148438 0.105469 C 1.871094 0.105469 1.617188 0.0546875 1.382813 -0.0507813 C 1.148438 -0.152344 0.972656 -0.285156 0.859375 -0.445313 C 0.742188 -0.601563 0.660156 -0.792969 0.617188 -1.027344 C 0.582031 -1.175781 0.566406 -1.417969 0.570313 -1.753906 L 0.570313 -4.613281 L 1.351563 -4.613281 L 1.351563 -2.054688 C 1.347656 -1.644531 1.363281 -1.371094 1.398438 -1.230469 C 1.445313 -1.023438 1.550781 -0.859375 1.710938 -0.746094 C 1.871094 -0.625 2.066406 -0.566406 2.304688 -0.570313 C 2.535156 -0.566406 2.757813 -0.628906 2.964844 -0.75 C 3.167969 -0.867188 3.3125 -1.027344 3.398438 -1.238281 C 3.484375 -1.441406 3.527344 -1.742188 3.527344 -2.140625 L 3.527344 -4.613281 L 4.3125 -4.613281 L 4.3125 0 Z M 3.609375 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-15\">\n <path style=\"stroke:none;\" d=\"M 3.597656 -0.570313 C 3.308594 -0.320313 3.027344 -0.148438 2.761719 -0.046875 C 2.488281 0.0546875 2.203125 0.105469 1.898438 0.105469 C 1.390625 0.105469 1 -0.015625 0.726563 -0.265625 C 0.453125 -0.511719 0.316406 -0.828125 0.320313 -1.214844 C 0.316406 -1.4375 0.367188 -1.644531 0.472656 -1.835938 C 0.574219 -2.019531 0.710938 -2.171875 0.878906 -2.285156 C 1.042969 -2.398438 1.230469 -2.484375 1.441406 -2.542969 C 1.59375 -2.582031 1.824219 -2.621094 2.136719 -2.660156 C 2.765625 -2.734375 3.230469 -2.824219 3.53125 -2.929688 C 3.535156 -3.035156 3.539063 -3.101563 3.539063 -3.132813 C 3.539063 -3.449219 3.464844 -3.675781 3.316406 -3.808594 C 3.113281 -3.980469 2.816406 -4.066406 2.425781 -4.070313 C 2.054688 -4.066406 1.78125 -4 1.609375 -3.875 C 1.433594 -3.742188 1.304688 -3.515625 1.222656 -3.195313 L 0.457031 -3.296875 C 0.527344 -3.621094 0.640625 -3.886719 0.800781 -4.089844 C 0.957031 -4.292969 1.1875 -4.445313 1.488281 -4.554688 C 1.789063 -4.660156 2.136719 -4.714844 2.539063 -4.71875 C 2.929688 -4.714844 3.25 -4.667969 3.496094 -4.578125 C 3.742188 -4.484375 3.921875 -4.371094 4.039063 -4.230469 C 4.152344 -4.089844 4.234375 -3.910156 4.285156 -3.699219 C 4.308594 -3.5625 4.324219 -3.324219 4.324219 -2.976563 L 4.324219 -1.933594 C 4.324219 -1.207031 4.339844 -0.746094 4.375 -0.554688 C 4.40625 -0.359375 4.472656 -0.175781 4.570313 0 L 3.753906 0 C 3.671875 -0.160156 3.621094 -0.347656 3.597656 -0.570313 Z M 3.53125 -2.316406 C 3.246094 -2.195313 2.820313 -2.097656 2.253906 -2.019531 C 1.929688 -1.972656 1.703125 -1.921875 1.574219 -1.863281 C 1.4375 -1.804688 1.335938 -1.71875 1.265625 -1.609375 C 1.191406 -1.496094 1.152344 -1.371094 1.15625 -1.238281 C 1.152344 -1.027344 1.230469 -0.855469 1.390625 -0.714844 C 1.546875 -0.574219 1.78125 -0.503906 2.085938 -0.507813 C 2.386719 -0.503906 2.652344 -0.570313 2.890625 -0.703125 C 3.121094 -0.835938 3.292969 -1.015625 3.40625 -1.246094 C 3.484375 -1.421875 3.527344 -1.683594 3.53125 -2.03125 Z M 3.53125 -2.316406 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-16\">\n <path style=\"stroke:none;\" d=\"M 0.570313 0 L 0.570313 -6.371094 L 1.351563 -6.371094 L 1.351563 0 Z M 0.570313 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-17\">\n <path style=\"stroke:none;\" d=\"M 0.28125 -1.910156 L 0.28125 -2.699219 L 2.6875 -2.699219 L 2.6875 -1.910156 Z M 0.28125 -1.910156 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-18\">\n <path style=\"stroke:none;\" d=\"M 3.746094 -1.484375 L 4.554688 -1.386719 C 4.421875 -0.914063 4.1875 -0.546875 3.84375 -0.285156 C 3.5 -0.0234375 3.058594 0.105469 2.523438 0.105469 C 1.847656 0.105469 1.3125 -0.101563 0.917969 -0.519531 C 0.519531 -0.933594 0.320313 -1.515625 0.324219 -2.269531 C 0.320313 -3.042969 0.519531 -3.644531 0.921875 -4.074219 C 1.320313 -4.5 1.839844 -4.714844 2.480469 -4.71875 C 3.09375 -4.714844 3.597656 -4.507813 3.992188 -4.089844 C 4.382813 -3.667969 4.582031 -3.074219 4.582031 -2.316406 C 4.582031 -2.265625 4.578125 -2.199219 4.574219 -2.109375 L 1.132813 -2.109375 C 1.15625 -1.601563 1.300781 -1.210938 1.5625 -0.941406 C 1.820313 -0.671875 2.140625 -0.539063 2.527344 -0.539063 C 2.8125 -0.539063 3.058594 -0.613281 3.261719 -0.765625 C 3.460938 -0.914063 3.621094 -1.152344 3.746094 -1.484375 Z M 1.175781 -2.75 L 3.753906 -2.75 C 3.71875 -3.132813 3.621094 -3.425781 3.460938 -3.625 C 3.207031 -3.925781 2.882813 -4.078125 2.488281 -4.078125 C 2.128906 -4.078125 1.828125 -3.957031 1.582031 -3.714844 C 1.335938 -3.472656 1.199219 -3.148438 1.175781 -2.75 Z M 1.175781 -2.75 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-19\">\n <path style=\"stroke:none;\" d=\"M 0.589844 -5.472656 L 0.589844 -6.371094 L 1.375 -6.371094 L 1.375 -5.472656 Z M 0.589844 0 L 0.589844 -4.613281 L 1.375 -4.613281 L 1.375 0 Z M 0.589844 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-20\">\n <path style=\"stroke:none;\" d=\"M 0.441406 0.382813 L 1.203125 0.496094 C 1.230469 0.726563 1.320313 0.898438 1.46875 1.007813 C 1.660156 1.152344 1.925781 1.222656 2.265625 1.226563 C 2.625 1.222656 2.902344 1.152344 3.101563 1.007813 C 3.296875 0.859375 3.433594 0.65625 3.503906 0.398438 C 3.542969 0.238281 3.558594 -0.09375 3.558594 -0.605469 C 3.214844 -0.199219 2.789063 0 2.28125 0 C 1.640625 0 1.148438 -0.226563 0.804688 -0.6875 C 0.453125 -1.140625 0.28125 -1.691406 0.285156 -2.332031 C 0.28125 -2.773438 0.359375 -3.179688 0.523438 -3.550781 C 0.679688 -3.921875 0.914063 -4.207031 1.21875 -4.414063 C 1.519531 -4.613281 1.875 -4.714844 2.285156 -4.71875 C 2.828125 -4.714844 3.277344 -4.496094 3.632813 -4.058594 L 3.632813 -4.613281 L 4.355469 -4.613281 L 4.355469 -0.625 C 4.351563 0.09375 4.277344 0.601563 4.132813 0.902344 C 3.984375 1.199219 3.753906 1.433594 3.4375 1.609375 C 3.121094 1.78125 2.730469 1.867188 2.269531 1.871094 C 1.714844 1.867188 1.269531 1.746094 0.933594 1.5 C 0.589844 1.25 0.425781 0.875 0.441406 0.382813 Z M 1.089844 -2.390625 C 1.089844 -1.78125 1.207031 -1.335938 1.449219 -1.0625 C 1.6875 -0.78125 1.992188 -0.644531 2.355469 -0.648438 C 2.714844 -0.644531 3.015625 -0.78125 3.257813 -1.0625 C 3.5 -1.335938 3.621094 -1.769531 3.625 -2.363281 C 3.621094 -2.925781 3.496094 -3.351563 3.246094 -3.640625 C 2.996094 -3.921875 2.695313 -4.066406 2.34375 -4.070313 C 1.992188 -4.066406 1.695313 -3.925781 1.453125 -3.644531 C 1.210938 -3.363281 1.089844 -2.945313 1.089844 -2.390625 Z M 1.089844 -2.390625 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-21\">\n <path style=\"stroke:none;\" d=\"M 0.585938 0 L 0.585938 -6.371094 L 1.367188 -6.371094 L 1.367188 -4.085938 C 1.730469 -4.503906 2.191406 -4.714844 2.75 -4.71875 C 3.085938 -4.714844 3.382813 -4.648438 3.640625 -4.515625 C 3.890625 -4.378906 4.070313 -4.191406 4.179688 -3.957031 C 4.285156 -3.714844 4.339844 -3.371094 4.34375 -2.925781 L 4.34375 0 L 3.5625 0 L 3.5625 -2.925781 C 3.5625 -3.3125 3.476563 -3.597656 3.308594 -3.777344 C 3.136719 -3.953125 2.898438 -4.042969 2.589844 -4.046875 C 2.355469 -4.042969 2.136719 -3.980469 1.933594 -3.863281 C 1.730469 -3.738281 1.582031 -3.578125 1.496094 -3.375 C 1.40625 -3.167969 1.363281 -2.882813 1.367188 -2.523438 L 1.367188 0 Z M 0.585938 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph2-22\">\n <path style=\"stroke:none;\" d=\"M 2.292969 -0.699219 L 2.40625 -0.0078125 C 2.183594 0.0390625 1.988281 0.0585938 1.816406 0.0625 C 1.53125 0.0585938 1.308594 0.015625 1.15625 -0.0703125 C 0.996094 -0.160156 0.886719 -0.277344 0.824219 -0.425781 C 0.757813 -0.570313 0.726563 -0.878906 0.730469 -1.351563 L 0.730469 -4.007813 L 0.15625 -4.007813 L 0.15625 -4.613281 L 0.730469 -4.613281 L 0.730469 -5.757813 L 1.507813 -6.226563 L 1.507813 -4.613281 L 2.292969 -4.613281 L 2.292969 -4.007813 L 1.507813 -4.007813 L 1.507813 -1.308594 C 1.503906 -1.082031 1.519531 -0.9375 1.546875 -0.875 C 1.574219 -0.808594 1.617188 -0.757813 1.683594 -0.722656 C 1.742188 -0.683594 1.832031 -0.667969 1.953125 -0.667969 C 2.035156 -0.667969 2.148438 -0.675781 2.292969 -0.699219 Z M 2.292969 -0.699219 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-0\">\n <path style=\"stroke:none;\" d=\"M 1.085938 0 L 1.085938 -10.664063 L 8.992188 -10.664063 L 8.992188 -8.863281 L 3.238281 -8.863281 L 3.238281 -6.496094 L 8.59375 -6.496094 L 8.59375 -4.699219 L 3.238281 -4.699219 L 3.238281 -1.796875 L 9.195313 -1.796875 L 9.195313 0 Z M 1.085938 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-1\">\n <path style=\"stroke:none;\" d=\"M 0.175781 -7.726563 L 1.308594 -7.726563 L 1.308594 -8.308594 C 1.304688 -8.957031 1.375 -9.441406 1.515625 -9.761719 C 1.652344 -10.082031 1.90625 -10.339844 2.277344 -10.542969 C 2.648438 -10.742188 3.117188 -10.84375 3.6875 -10.847656 C 4.265625 -10.84375 4.835938 -10.757813 5.398438 -10.585938 L 5.121094 -9.160156 C 4.792969 -9.234375 4.480469 -9.273438 4.183594 -9.277344 C 3.886719 -9.273438 3.671875 -9.207031 3.546875 -9.070313 C 3.414063 -8.929688 3.351563 -8.664063 3.355469 -8.273438 L 3.355469 -7.726563 L 4.882813 -7.726563 L 4.882813 -6.117188 L 3.355469 -6.117188 L 3.355469 0 L 1.308594 0 L 1.308594 -6.117188 L 0.175781 -6.117188 Z M 0.175781 -7.726563 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-2\">\n <path style=\"stroke:none;\" d=\"M 1.070313 -8.773438 L 1.070313 -10.664063 L 3.113281 -10.664063 L 3.113281 -8.773438 Z M 1.070313 0 L 1.070313 -7.726563 L 3.113281 -7.726563 L 3.113281 0 Z M 1.070313 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-3\">\n <path style=\"stroke:none;\" d=\"M 7.804688 -5.441406 L 5.792969 -5.078125 C 5.71875 -5.480469 5.5625 -5.785156 5.328125 -5.988281 C 5.085938 -6.191406 4.777344 -6.292969 4.394531 -6.292969 C 3.882813 -6.292969 3.476563 -6.117188 3.175781 -5.765625 C 2.871094 -5.414063 2.71875 -4.824219 2.722656 -4 C 2.71875 -3.082031 2.871094 -2.433594 3.183594 -2.058594 C 3.488281 -1.675781 3.902344 -1.488281 4.421875 -1.492188 C 4.808594 -1.488281 5.125 -1.597656 5.375 -1.820313 C 5.617188 -2.039063 5.792969 -2.417969 5.898438 -2.960938 L 7.910156 -2.617188 C 7.699219 -1.695313 7.296875 -1 6.707031 -0.53125 C 6.113281 -0.0585938 5.320313 0.175781 4.328125 0.175781 C 3.195313 0.175781 2.292969 -0.179688 1.625 -0.894531 C 0.949219 -1.605469 0.613281 -2.59375 0.617188 -3.855469 C 0.613281 -5.128906 0.953125 -6.121094 1.628906 -6.835938 C 2.300781 -7.542969 3.210938 -7.898438 4.367188 -7.902344 C 5.304688 -7.898438 6.054688 -7.695313 6.609375 -7.292969 C 7.164063 -6.886719 7.5625 -6.269531 7.804688 -5.441406 Z M 7.804688 -5.441406 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-4\">\n <path style=\"stroke:none;\" d=\"M 5.542969 -2.460938 L 7.582031 -2.117188 C 7.316406 -1.367188 6.902344 -0.800781 6.339844 -0.410156 C 5.773438 -0.0195313 5.066406 0.175781 4.21875 0.175781 C 2.875 0.175781 1.878906 -0.261719 1.238281 -1.140625 C 0.722656 -1.839844 0.46875 -2.726563 0.472656 -3.804688 C 0.46875 -5.082031 0.804688 -6.085938 1.476563 -6.8125 C 2.144531 -7.535156 2.988281 -7.898438 4.015625 -7.902344 C 5.164063 -7.898438 6.074219 -7.519531 6.738281 -6.761719 C 7.402344 -6.003906 7.71875 -4.839844 7.691406 -3.273438 L 2.566406 -3.273438 C 2.582031 -2.664063 2.746094 -2.191406 3.0625 -1.855469 C 3.375 -1.515625 3.769531 -1.347656 4.242188 -1.351563 C 4.5625 -1.347656 4.828125 -1.433594 5.046875 -1.613281 C 5.261719 -1.785156 5.429688 -2.070313 5.542969 -2.460938 Z M 5.660156 -4.523438 C 5.644531 -5.117188 5.488281 -5.566406 5.199219 -5.875 C 4.90625 -6.179688 4.554688 -6.332031 4.140625 -6.335938 C 3.691406 -6.332031 3.324219 -6.171875 3.035156 -5.847656 C 2.742188 -5.523438 2.597656 -5.082031 2.605469 -4.523438 Z M 5.660156 -4.523438 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-5\">\n <path style=\"stroke:none;\" d=\"M 8.097656 0 L 6.054688 0 L 6.054688 -3.941406 C 6.050781 -4.773438 6.007813 -5.3125 5.921875 -5.5625 C 5.832031 -5.804688 5.691406 -5.996094 5.496094 -6.132813 C 5.300781 -6.265625 5.0625 -6.332031 4.789063 -6.335938 C 4.429688 -6.332031 4.113281 -6.234375 3.835938 -6.042969 C 3.550781 -5.847656 3.355469 -5.59375 3.253906 -5.273438 C 3.144531 -4.953125 3.09375 -4.359375 3.097656 -3.5 L 3.097656 0 L 1.054688 0 L 1.054688 -7.726563 L 2.953125 -7.726563 L 2.953125 -6.589844 C 3.625 -7.460938 4.472656 -7.898438 5.5 -7.902344 C 5.949219 -7.898438 6.359375 -7.816406 6.734375 -7.65625 C 7.105469 -7.492188 7.390625 -7.285156 7.582031 -7.035156 C 7.773438 -6.78125 7.90625 -6.496094 7.984375 -6.175781 C 8.058594 -5.855469 8.097656 -5.394531 8.097656 -4.800781 Z M 8.097656 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-6\">\n <path style=\"stroke:none;\" d=\"M 4.613281 -7.726563 L 4.613281 -6.097656 L 3.214844 -6.097656 L 3.214844 -2.984375 C 3.210938 -2.351563 3.222656 -1.984375 3.253906 -1.878906 C 3.277344 -1.773438 3.339844 -1.6875 3.4375 -1.621094 C 3.527344 -1.550781 3.640625 -1.515625 3.78125 -1.519531 C 3.96875 -1.515625 4.246094 -1.582031 4.605469 -1.71875 L 4.78125 -0.132813 C 4.304688 0.0742188 3.765625 0.175781 3.164063 0.175781 C 2.796875 0.175781 2.464844 0.117188 2.167969 -0.0078125 C 1.871094 -0.128906 1.652344 -0.289063 1.515625 -0.488281 C 1.375 -0.683594 1.28125 -0.953125 1.230469 -1.289063 C 1.183594 -1.523438 1.160156 -2 1.164063 -2.726563 L 1.164063 -6.097656 L 0.226563 -6.097656 L 0.226563 -7.726563 L 1.164063 -7.726563 L 1.164063 -9.261719 L 3.214844 -10.453125 L 3.214844 -7.726563 Z M 4.613281 -7.726563 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-7\">\n <path style=\"stroke:none;\" d=\"\"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-8\">\n <path style=\"stroke:none;\" d=\"M 1.097656 0 L 1.097656 -10.664063 L 8.410156 -10.664063 L 8.410156 -8.863281 L 3.253906 -8.863281 L 3.253906 -6.335938 L 7.703125 -6.335938 L 7.703125 -4.53125 L 3.253906 -4.53125 L 3.253906 0 Z M 1.097656 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-9\">\n <path style=\"stroke:none;\" d=\"M 3.027344 0 L 0.980469 0 L 0.980469 -7.726563 L 2.882813 -7.726563 L 2.882813 -6.628906 C 3.203125 -7.144531 3.492188 -7.488281 3.757813 -7.652344 C 4.015625 -7.816406 4.3125 -7.898438 4.640625 -7.902344 C 5.105469 -7.898438 5.554688 -7.769531 5.988281 -7.515625 L 5.355469 -5.734375 C 5.011719 -5.953125 4.691406 -6.0625 4.394531 -6.066406 C 4.105469 -6.0625 3.859375 -5.984375 3.664063 -5.828125 C 3.460938 -5.667969 3.304688 -5.382813 3.195313 -4.976563 C 3.078125 -4.5625 3.023438 -3.699219 3.027344 -2.386719 Z M 3.027344 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-10\">\n <path style=\"stroke:none;\" d=\"M 0.597656 -3.972656 C 0.597656 -4.652344 0.761719 -5.308594 1.097656 -5.945313 C 1.429688 -6.578125 1.90625 -7.0625 2.519531 -7.398438 C 3.132813 -7.730469 3.816406 -7.898438 4.578125 -7.902344 C 5.742188 -7.898438 6.699219 -7.519531 7.449219 -6.761719 C 8.191406 -6.003906 8.566406 -5.042969 8.570313 -3.886719 C 8.566406 -2.714844 8.1875 -1.746094 7.4375 -0.976563 C 6.679688 -0.207031 5.730469 0.175781 4.589844 0.175781 C 3.878906 0.175781 3.203125 0.015625 2.5625 -0.304688 C 1.917969 -0.625 1.429688 -1.09375 1.097656 -1.710938 C 0.761719 -2.328125 0.597656 -3.082031 0.597656 -3.972656 Z M 2.691406 -3.863281 C 2.6875 -3.09375 2.871094 -2.507813 3.234375 -2.101563 C 3.597656 -1.691406 4.046875 -1.488281 4.582031 -1.492188 C 5.113281 -1.488281 5.558594 -1.691406 5.925781 -2.101563 C 6.285156 -2.507813 6.46875 -3.101563 6.46875 -3.878906 C 6.46875 -4.632813 6.285156 -5.210938 5.925781 -5.621094 C 5.558594 -6.027344 5.113281 -6.234375 4.582031 -6.234375 C 4.046875 -6.234375 3.597656 -6.027344 3.234375 -5.621094 C 2.871094 -5.210938 2.6875 -4.625 2.691406 -3.863281 Z M 2.691406 -3.863281 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-11\">\n <path style=\"stroke:none;\" d=\"M 3.804688 0 L -0.0078125 -10.664063 L 2.328125 -10.664063 L 5.027344 -2.773438 L 7.640625 -10.664063 L 9.921875 -10.664063 L 6.105469 0 Z M 3.804688 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-12\">\n <path style=\"stroke:none;\" d=\"M 2.597656 -5.371094 L 0.742188 -5.703125 C 0.949219 -6.445313 1.308594 -7 1.816406 -7.363281 C 2.324219 -7.71875 3.082031 -7.898438 4.089844 -7.902344 C 5 -7.898438 5.675781 -7.789063 6.125 -7.578125 C 6.570313 -7.359375 6.886719 -7.085938 7.066406 -6.753906 C 7.246094 -6.421875 7.335938 -5.8125 7.339844 -4.925781 L 7.320313 -2.539063 C 7.316406 -1.855469 7.351563 -1.355469 7.417969 -1.035156 C 7.480469 -0.710938 7.601563 -0.367188 7.785156 0 L 5.761719 0 C 5.707031 -0.132813 5.644531 -0.332031 5.566406 -0.605469 C 5.53125 -0.722656 5.503906 -0.804688 5.492188 -0.84375 C 5.140625 -0.503906 4.769531 -0.246094 4.371094 -0.078125 C 3.972656 0.09375 3.546875 0.175781 3.097656 0.175781 C 2.300781 0.175781 1.675781 -0.0390625 1.21875 -0.472656 C 0.757813 -0.902344 0.527344 -1.449219 0.53125 -2.109375 C 0.527344 -2.546875 0.632813 -2.933594 0.84375 -3.277344 C 1.050781 -3.613281 1.339844 -3.875 1.71875 -4.0625 C 2.09375 -4.242188 2.636719 -4.402344 3.347656 -4.539063 C 4.300781 -4.714844 4.964844 -4.882813 5.332031 -5.042969 L 5.332031 -5.246094 C 5.332031 -5.636719 5.234375 -5.917969 5.039063 -6.085938 C 4.84375 -6.25 4.476563 -6.332031 3.941406 -6.335938 C 3.578125 -6.332031 3.292969 -6.261719 3.089844 -6.121094 C 2.882813 -5.976563 2.71875 -5.726563 2.597656 -5.371094 Z M 5.332031 -3.710938 C 5.070313 -3.617188 4.65625 -3.511719 4.089844 -3.394531 C 3.519531 -3.269531 3.148438 -3.152344 2.976563 -3.042969 C 2.707031 -2.847656 2.570313 -2.609375 2.574219 -2.320313 C 2.570313 -2.03125 2.679688 -1.78125 2.894531 -1.578125 C 3.105469 -1.367188 3.375 -1.265625 3.710938 -1.265625 C 4.074219 -1.265625 4.425781 -1.386719 4.765625 -1.628906 C 5.007813 -1.8125 5.171875 -2.035156 5.253906 -2.304688 C 5.304688 -2.476563 5.332031 -2.8125 5.332031 -3.304688 Z M 5.332031 -3.710938 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-13\">\n <path style=\"stroke:none;\" d=\"M 0.878906 0.507813 L 3.214844 0.792969 C 3.25 1.058594 3.339844 1.246094 3.484375 1.351563 C 3.675781 1.496094 3.980469 1.570313 4.402344 1.570313 C 4.933594 1.570313 5.335938 1.488281 5.601563 1.332031 C 5.78125 1.222656 5.914063 1.050781 6.007813 0.816406 C 6.070313 0.640625 6.105469 0.332031 6.105469 -0.125 L 6.105469 -1.25 C 5.492188 -0.414063 4.71875 0 3.789063 0 C 2.75 0 1.929688 -0.4375 1.324219 -1.316406 C 0.847656 -2.007813 0.609375 -2.871094 0.609375 -3.90625 C 0.609375 -5.199219 0.917969 -6.1875 1.542969 -6.875 C 2.164063 -7.554688 2.941406 -7.898438 3.871094 -7.902344 C 4.824219 -7.898438 5.613281 -7.476563 6.234375 -6.640625 L 6.234375 -7.726563 L 8.148438 -7.726563 L 8.148438 -0.792969 C 8.144531 0.121094 8.070313 0.796875 7.921875 1.25 C 7.773438 1.699219 7.5625 2.054688 7.289063 2.3125 C 7.015625 2.566406 6.652344 2.769531 6.203125 2.917969 C 5.746094 3.0625 5.171875 3.132813 4.480469 3.136719 C 3.167969 3.132813 2.238281 2.910156 1.691406 2.460938 C 1.140625 2.011719 0.867188 1.441406 0.871094 0.757813 C 0.867188 0.6875 0.871094 0.605469 0.878906 0.507813 Z M 2.707031 -4.023438 C 2.707031 -3.199219 2.863281 -2.597656 3.183594 -2.222656 C 3.496094 -1.839844 3.890625 -1.652344 4.359375 -1.652344 C 4.855469 -1.652344 5.273438 -1.847656 5.621094 -2.238281 C 5.964844 -2.628906 6.140625 -3.207031 6.140625 -3.972656 C 6.140625 -4.769531 5.972656 -5.363281 5.644531 -5.753906 C 5.3125 -6.140625 4.898438 -6.332031 4.394531 -6.335938 C 3.902344 -6.332031 3.496094 -6.144531 3.183594 -5.765625 C 2.863281 -5.382813 2.707031 -4.800781 2.707031 -4.023438 Z M 2.707031 -4.023438 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-14\">\n <path style=\"stroke:none;\" d=\"M 6.15625 0 L 6.15625 -1.15625 C 5.871094 -0.742188 5.5 -0.417969 5.046875 -0.179688 C 4.585938 0.0585938 4.101563 0.175781 3.59375 0.175781 C 3.070313 0.175781 2.605469 0.0625 2.195313 -0.164063 C 1.78125 -0.390625 1.484375 -0.710938 1.300781 -1.125 C 1.117188 -1.539063 1.023438 -2.109375 1.027344 -2.835938 L 1.027344 -7.726563 L 3.070313 -7.726563 L 3.070313 -4.175781 C 3.070313 -3.085938 3.105469 -2.421875 3.183594 -2.179688 C 3.253906 -1.933594 3.390625 -1.738281 3.59375 -1.597656 C 3.789063 -1.453125 4.042969 -1.382813 4.351563 -1.382813 C 4.699219 -1.382813 5.011719 -1.476563 5.289063 -1.667969 C 5.5625 -1.859375 5.75 -2.097656 5.855469 -2.382813 C 5.953125 -2.664063 6.003906 -3.359375 6.007813 -4.46875 L 6.007813 -7.726563 L 8.054688 -7.726563 L 8.054688 0 Z M 6.15625 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-15\">\n <path style=\"stroke:none;\" d=\"M 8.15625 0 L 6.257813 0 L 6.257813 -1.136719 C 5.941406 -0.691406 5.566406 -0.359375 5.140625 -0.148438 C 4.707031 0.0703125 4.273438 0.175781 3.839844 0.175781 C 2.949219 0.175781 2.191406 -0.179688 1.558594 -0.898438 C 0.925781 -1.609375 0.609375 -2.609375 0.609375 -3.890625 C 0.609375 -5.199219 0.917969 -6.195313 1.535156 -6.878906 C 2.152344 -7.558594 2.929688 -7.898438 3.871094 -7.902344 C 4.730469 -7.898438 5.476563 -7.539063 6.109375 -6.824219 L 6.109375 -10.664063 L 8.15625 -10.664063 Z M 2.699219 -4.03125 C 2.695313 -3.203125 2.808594 -2.605469 3.042969 -2.242188 C 3.367188 -1.707031 3.828125 -1.441406 4.421875 -1.441406 C 4.890625 -1.441406 5.289063 -1.640625 5.621094 -2.039063 C 5.949219 -2.4375 6.117188 -3.035156 6.117188 -3.835938 C 6.117188 -4.71875 5.957031 -5.355469 5.636719 -5.75 C 5.316406 -6.136719 4.90625 -6.332031 4.410156 -6.335938 C 3.921875 -6.332031 3.515625 -6.140625 3.1875 -5.757813 C 2.859375 -5.371094 2.695313 -4.796875 2.699219 -4.03125 Z M 2.699219 -4.03125 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-16\">\n <path style=\"stroke:none;\" d=\"M 0.347656 -2.203125 L 2.402344 -2.515625 C 2.488281 -2.117188 2.664063 -1.816406 2.929688 -1.609375 C 3.195313 -1.402344 3.566406 -1.300781 4.050781 -1.300781 C 4.574219 -1.300781 4.972656 -1.398438 5.246094 -1.59375 C 5.421875 -1.726563 5.511719 -1.90625 5.515625 -2.140625 C 5.511719 -2.289063 5.464844 -2.417969 5.371094 -2.523438 C 5.265625 -2.621094 5.035156 -2.710938 4.683594 -2.792969 C 3.03125 -3.15625 1.988281 -3.488281 1.550781 -3.789063 C 0.9375 -4.207031 0.632813 -4.785156 0.632813 -5.527344 C 0.632813 -6.195313 0.894531 -6.761719 1.425781 -7.21875 C 1.949219 -7.671875 2.769531 -7.898438 3.886719 -7.902344 C 4.941406 -7.898438 5.726563 -7.726563 6.242188 -7.382813 C 6.75 -7.039063 7.105469 -6.527344 7.304688 -5.855469 L 5.375 -5.5 C 5.289063 -5.800781 5.132813 -6.03125 4.90625 -6.191406 C 4.671875 -6.347656 4.34375 -6.425781 3.921875 -6.429688 C 3.378906 -6.425781 2.996094 -6.351563 2.765625 -6.207031 C 2.609375 -6.097656 2.53125 -5.960938 2.53125 -5.792969 C 2.53125 -5.644531 2.597656 -5.519531 2.734375 -5.421875 C 2.917969 -5.28125 3.554688 -5.089844 4.644531 -4.84375 C 5.730469 -4.59375 6.492188 -4.292969 6.925781 -3.9375 C 7.351563 -3.570313 7.5625 -3.0625 7.566406 -2.414063 C 7.5625 -1.703125 7.269531 -1.09375 6.679688 -0.585938 C 6.085938 -0.078125 5.207031 0.175781 4.050781 0.175781 C 2.996094 0.175781 2.164063 -0.0351563 1.550781 -0.464844 C 0.9375 -0.886719 0.535156 -1.46875 0.347656 -2.203125 Z M 0.347656 -2.203125 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-17\">\n <path style=\"stroke:none;\" d=\"M 7.539063 -1.898438 L 7.539063 0 L 0.371094 0 C 0.445313 -0.71875 0.679688 -1.398438 1.070313 -2.039063 C 1.457031 -2.679688 2.222656 -3.53125 3.367188 -4.597656 C 4.285156 -5.453125 4.851563 -6.035156 5.0625 -6.34375 C 5.34375 -6.761719 5.484375 -7.179688 5.484375 -7.59375 C 5.484375 -8.050781 5.359375 -8.402344 5.117188 -8.648438 C 4.867188 -8.890625 4.53125 -9.011719 4.101563 -9.015625 C 3.675781 -9.011719 3.335938 -8.882813 3.085938 -8.628906 C 2.832031 -8.367188 2.6875 -7.941406 2.648438 -7.347656 L 0.609375 -7.550781 C 0.730469 -8.671875 1.109375 -9.480469 1.753906 -9.972656 C 2.390625 -10.464844 3.191406 -10.710938 4.152344 -10.710938 C 5.203125 -10.710938 6.03125 -10.425781 6.636719 -9.859375 C 7.234375 -9.289063 7.535156 -8.582031 7.539063 -7.742188 C 7.535156 -7.257813 7.449219 -6.800781 7.277344 -6.367188 C 7.105469 -5.933594 6.832031 -5.480469 6.460938 -5.003906 C 6.210938 -4.6875 5.765625 -4.234375 5.121094 -3.644531 C 4.472656 -3.050781 4.0625 -2.65625 3.894531 -2.464844 C 3.71875 -2.269531 3.578125 -2.082031 3.476563 -1.898438 Z M 7.539063 -1.898438 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-18\">\n <path style=\"stroke:none;\" d=\"M 4.089844 -10.710938 C 5.121094 -10.710938 5.925781 -10.339844 6.511719 -9.601563 C 7.199219 -8.726563 7.546875 -7.28125 7.550781 -5.261719 C 7.546875 -3.242188 7.199219 -1.789063 6.503906 -0.910156 C 5.925781 -0.179688 5.121094 0.179688 4.089844 0.183594 C 3.050781 0.179688 2.210938 -0.214844 1.578125 -1.011719 C 0.9375 -1.808594 0.621094 -3.230469 0.625 -5.28125 C 0.621094 -7.285156 0.96875 -8.730469 1.671875 -9.617188 C 2.246094 -10.34375 3.054688 -10.710938 4.089844 -10.710938 Z M 4.089844 -9.015625 C 3.839844 -9.011719 3.617188 -8.933594 3.425781 -8.777344 C 3.230469 -8.621094 3.082031 -8.335938 2.976563 -7.929688 C 2.835938 -7.398438 2.765625 -6.511719 2.765625 -5.261719 C 2.765625 -4.007813 2.828125 -3.144531 2.953125 -2.679688 C 3.078125 -2.210938 3.234375 -1.902344 3.429688 -1.746094 C 3.617188 -1.589844 3.839844 -1.511719 4.089844 -1.511719 C 4.335938 -1.511719 4.554688 -1.589844 4.75 -1.746094 C 4.941406 -1.902344 5.09375 -2.183594 5.203125 -2.597656 C 5.34375 -3.117188 5.414063 -4.007813 5.414063 -5.261719 C 5.414063 -6.511719 5.347656 -7.371094 5.222656 -7.839844 C 5.09375 -8.308594 4.9375 -8.621094 4.746094 -8.777344 C 4.554688 -8.933594 4.335938 -9.011719 4.089844 -9.015625 Z M 4.089844 -9.015625 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-19\">\n <path style=\"stroke:none;\" d=\"M 5.863281 0 L 3.820313 0 L 3.820313 -7.703125 C 3.070313 -7.003906 2.1875 -6.488281 1.179688 -6.15625 L 1.179688 -8.011719 C 1.710938 -8.183594 2.292969 -8.515625 2.917969 -9.003906 C 3.542969 -9.488281 3.972656 -10.058594 4.207031 -10.710938 L 5.863281 -10.710938 Z M 5.863281 0 \"/>\n </symbol>\n <symbol overflow=\"visible\" id=\"glyph3-20\">\n <path style=\"stroke:none;\" d=\"M 0.660156 -2.742188 L 2.699219 -2.953125 C 2.753906 -2.492188 2.925781 -2.125 3.214844 -1.855469 C 3.5 -1.585938 3.832031 -1.453125 4.207031 -1.453125 C 4.628906 -1.453125 4.988281 -1.625 5.289063 -1.972656 C 5.582031 -2.320313 5.730469 -2.84375 5.734375 -3.542969 C 5.730469 -4.195313 5.582031 -4.6875 5.292969 -5.015625 C 4.996094 -5.34375 4.617188 -5.507813 4.148438 -5.507813 C 3.558594 -5.507813 3.03125 -5.246094 2.566406 -4.730469 L 0.910156 -4.96875 L 1.957031 -10.519531 L 7.363281 -10.519531 L 7.363281 -8.605469 L 3.507813 -8.605469 L 3.1875 -6.796875 C 3.640625 -7.023438 4.105469 -7.136719 4.582031 -7.136719 C 5.488281 -7.136719 6.257813 -6.804688 6.890625 -6.148438 C 7.519531 -5.484375 7.832031 -4.628906 7.835938 -3.578125 C 7.832031 -2.699219 7.578125 -1.917969 7.070313 -1.230469 C 6.375 -0.289063 5.414063 0.179688 4.183594 0.183594 C 3.199219 0.179688 2.394531 -0.0820313 1.773438 -0.609375 C 1.152344 -1.136719 0.78125 -1.847656 0.660156 -2.742188 Z M 0.660156 -2.742188 \"/>\n </symbol>\n </g>\n <clipPath id=\"clip1\">\n <path d=\"M 59.039063 59.039063 L 1122.757813 59.039063 L 1122.757813 647.558594 L 59.039063 647.558594 Z M 59.039063 59.039063 \"/>\n </clipPath>\n <clipPath id=\"clip2\">\n <path d=\"M 59.039063 59.039063 L 1122.757813 59.039063 L 1122.757813 647.558594 L 59.039063 647.558594 Z M 59.039063 59.039063 \"/>\n </clipPath>\n </defs>\n <g id=\"surface41\">\n <rect x=\"0\" y=\"0\" width=\"1152\" height=\"720\" style=\"fill: rgb(100%,100%,100%); fill-opacity: 1; stroke: none;\"/>\n <g clip-path=\"url(#clip1)\" clip-rule=\"nonzero\">\n <path style=\"fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 124.246094 624.800781 L 98.398438 613.699219 L 99.148438 602.597656 L 101.597656 591.492188 L 105.566406 580.390625 L 111.265625 569.289063 L 119.445313 558.1875 L 129.882813 547.085938 L 142.265625 535.984375 L 156.5 524.882813 L 172.410156 513.78125 L 189.703125 502.675781 L 208.136719 491.574219 L 227.511719 480.472656 L 247.65625 469.371094 L 268.445313 458.269531 L 289.769531 447.167969 L 311.542969 436.066406 L 333.691406 424.964844 L 356.167969 413.859375 L 378.917969 402.757813 L 401.902344 391.65625 L 425.09375 380.554688 L 448.460938 369.453125 L 471.984375 358.351563 L 495.644531 347.25 L 519.425781 336.148438 L 543.316406 325.042969 L 567.300781 313.941406 L 591.367188 302.839844 L 615.511719 291.738281 L 639.726563 280.636719 L 664.003906 269.535156 L 688.335938 258.433594 L 712.71875 247.332031 L 737.148438 236.230469 L 761.617188 225.125 L 786.128906 214.023438 L 810.675781 202.921875 L 835.257813 191.820313 L 859.867188 180.71875 L 884.503906 169.617188 L 909.167969 158.515625 L 933.855469 147.414063 L 958.566406 136.308594 L 983.296875 125.207031 L 1008.046875 114.105469 L 1032.8125 103.003906 L 1057.597656 91.902344 L 1082.398438 80.800781 \"/>\n </g>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 71.707031 646.558594 L 1013.339844 646.558594 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 71.707031 646.558594 L 71.707031 653.761719 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 228.644531 646.558594 L 228.644531 653.761719 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 385.585938 646.558594 L 385.585938 653.761719 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 542.523438 646.558594 L 542.523438 653.761719 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 699.460938 646.558594 L 699.460938 653.761719 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 856.398438 646.558594 L 856.398438 653.761719 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 1013.339844 646.558594 L 1013.339844 653.761719 \"/>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph0-0\" x=\"56.066406\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-1\" x=\"63.018311\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"66.491211\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"73.443115\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-2\" x=\"80.39502\" y=\"673.921875\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph0-0\" x=\"213.003906\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-1\" x=\"219.955811\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"223.428711\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"230.380615\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-3\" x=\"237.33252\" y=\"673.921875\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph0-0\" x=\"369.945313\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-1\" x=\"376.897217\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"380.370117\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"387.322021\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-4\" x=\"394.273926\" y=\"673.921875\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph0-0\" x=\"526.882813\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-1\" x=\"533.834717\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"537.307617\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"544.259521\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-5\" x=\"551.211426\" y=\"673.921875\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph0-0\" x=\"683.820313\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-1\" x=\"690.772217\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"694.245117\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-6\" x=\"701.197021\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"708.148926\" y=\"673.921875\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph0-0\" x=\"840.757813\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-1\" x=\"847.709717\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"851.182617\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-6\" x=\"858.134521\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-2\" x=\"865.086426\" y=\"673.921875\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph0-0\" x=\"997.699219\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-1\" x=\"1004.651123\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-0\" x=\"1008.124023\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-6\" x=\"1015.075928\" y=\"673.921875\"/>\n <use xlink:href=\"#glyph0-3\" x=\"1022.027832\" y=\"673.921875\"/>\n </g>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 645.054688 L 59.039063 59.394531 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 645.054688 L 51.839844 645.054688 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 547.445313 L 51.839844 547.445313 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 449.835938 L 51.839844 449.835938 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 352.226563 L 51.839844 352.226563 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 254.617188 L 51.839844 254.617188 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 157.003906 L 51.839844 157.003906 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 59.394531 L 51.839844 59.394531 \"/>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"667.648438\"/>\n <use xlink:href=\"#glyph1-1\" x=\"43.199219\" y=\"660.696533\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"657.223633\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"650.271729\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"643.319824\"/>\n <use xlink:href=\"#glyph1-2\" x=\"43.199219\" y=\"636.36792\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"629.416016\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"570.039063\"/>\n <use xlink:href=\"#glyph1-1\" x=\"43.199219\" y=\"563.087158\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"559.614258\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"552.662354\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"545.710449\"/>\n <use xlink:href=\"#glyph1-2\" x=\"43.199219\" y=\"538.758545\"/>\n <use xlink:href=\"#glyph1-3\" x=\"43.199219\" y=\"531.806641\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"472.429688\"/>\n <use xlink:href=\"#glyph1-1\" x=\"43.199219\" y=\"465.477783\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"462.004883\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"455.052979\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"448.101074\"/>\n <use xlink:href=\"#glyph1-4\" x=\"43.199219\" y=\"441.14917\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"434.197266\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"374.820313\"/>\n <use xlink:href=\"#glyph1-1\" x=\"43.199219\" y=\"367.868408\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"364.395508\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"357.443604\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"350.491699\"/>\n <use xlink:href=\"#glyph1-4\" x=\"43.199219\" y=\"343.539795\"/>\n <use xlink:href=\"#glyph1-3\" x=\"43.199219\" y=\"336.587891\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"277.210938\"/>\n <use xlink:href=\"#glyph1-1\" x=\"43.199219\" y=\"270.259033\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"266.786133\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"259.834229\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"252.882324\"/>\n <use xlink:href=\"#glyph1-5\" x=\"43.199219\" y=\"245.93042\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"238.978516\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"179.597656\"/>\n <use xlink:href=\"#glyph1-1\" x=\"43.199219\" y=\"172.645752\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"169.172852\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"162.220947\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"155.269043\"/>\n <use xlink:href=\"#glyph1-5\" x=\"43.199219\" y=\"148.317139\"/>\n <use xlink:href=\"#glyph1-3\" x=\"43.199219\" y=\"141.365234\"/>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"81.988281\"/>\n <use xlink:href=\"#glyph1-1\" x=\"43.199219\" y=\"75.036377\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"71.563477\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"64.611572\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"57.659668\"/>\n <use xlink:href=\"#glyph1-3\" x=\"43.199219\" y=\"50.707764\"/>\n <use xlink:href=\"#glyph1-0\" x=\"43.199219\" y=\"43.755859\"/>\n </g>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 59.039063 59.039063 L 59.039063 646.558594 L 1121.761719 646.558594 \"/>\n <g clip-path=\"url(#clip2)\" clip-rule=\"nonzero\">\n <path style=\"fill-rule:nonzero;fill:rgb(100%,0%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 101.59375 612.753906 C 101.59375 617.019531 95.191406 617.019531 95.191406 612.753906 C 95.191406 608.488281 101.59375 608.488281 101.59375 612.753906 \"/>\n <path style=\"fill-rule:nonzero;fill:rgb(0%,0%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 108.609375 580.765625 C 108.609375 585.03125 102.207031 585.03125 102.207031 580.765625 C 102.207031 576.5 108.609375 576.5 108.609375 580.765625 \"/>\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(74.509804%,74.509804%,74.509804%);fill-opacity:1;\" d=\"M 749.3125 409.5 L 754.710938 409.5 L 754.710938 404.101563 L 749.3125 404.101563 Z M 749.3125 409.5 \"/>\n <path style=\"fill-rule:nonzero;fill:rgb(89.411765%,10.196078%,10.980392%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(89.411765%,10.196078%,10.980392%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 920.03125 506.828125 C 920.03125 512.894531 910.929688 512.894531 910.929688 506.828125 C 910.929688 500.761719 920.03125 500.761719 920.03125 506.828125 \"/>\n <path style=\"fill-rule:nonzero;fill:rgb(21.568627%,49.411765%,72.156863%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(21.568627%,49.411765%,72.156863%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 1081.890625 332.945313 C 1081.890625 339.011719 1072.789063 339.011719 1072.789063 332.945313 C 1072.789063 326.878906 1081.890625 326.878906 1081.890625 332.945313 \"/>\n <path style=\"fill-rule:nonzero;fill:rgb(30.196078%,68.627451%,29.019608%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(30.196078%,68.627451%,29.019608%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 128.796875 624.800781 C 128.796875 630.867188 119.699219 630.867188 119.699219 624.800781 C 119.699219 618.734375 128.796875 618.734375 128.796875 624.800781 \"/>\n <path style=\"fill-rule:nonzero;fill:rgb(59.607843%,30.588235%,63.921569%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(59.607843%,30.588235%,63.921569%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 993.90625 455.15625 C 993.90625 461.222656 984.804688 461.222656 984.804688 455.15625 C 984.804688 449.089844 993.90625 449.089844 993.90625 455.15625 \"/>\n <path style=\"fill-rule:nonzero;fill:rgb(100%,49.803922%,0%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(100%,49.803922%,0%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 955.480469 440.277344 C 955.480469 446.34375 946.382813 446.34375 946.382813 440.277344 C 946.382813 434.210938 955.480469 434.210938 955.480469 440.277344 \"/>\n <path style=\"fill-rule:nonzero;fill:rgb(65.098039%,33.72549%,15.686275%);fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(65.098039%,33.72549%,15.686275%);stroke-opacity:1;stroke-miterlimit:10;\" d=\"M 1086.949219 80.800781 C 1086.949219 86.867188 1077.851563 86.867188 1077.851563 80.800781 C 1077.851563 74.734375 1086.949219 74.734375 1086.949219 80.800781 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 915.480469 506.828125 L 916.992188 503.28125 L 918.585938 499.730469 L 920.261719 496.183594 L 922.023438 492.636719 L 923.863281 489.085938 L 925.789063 485.539063 L 927.792969 481.988281 L 929.875 478.441406 L 932.039063 474.890625 L 934.285156 471.34375 L 936.609375 467.792969 L 939.011719 464.246094 L 941.492188 460.699219 L 944.046875 457.148438 L 946.683594 453.601563 L 949.390625 450.050781 L 952.179688 446.503906 L 955.039063 442.953125 L 957.976563 439.40625 L 960.984375 435.855469 L 964.066406 432.308594 L 967.222656 428.757813 L 970.449219 425.210938 L 973.746094 421.664063 L 977.113281 418.113281 L 980.554688 414.566406 L 984.0625 411.015625 L 987.636719 407.46875 L 991.28125 403.917969 L 994.992188 400.371094 L 998.769531 396.820313 L 1002.613281 393.273438 L 1006.519531 389.726563 L 1010.496094 386.175781 L 1014.53125 382.628906 L 1018.628906 379.078125 L 1022.792969 375.53125 L 1027.015625 371.980469 L 1031.300781 368.433594 L 1035.644531 364.882813 L 1040.046875 361.335938 L 1044.511719 357.785156 L 1049.03125 354.238281 L 1053.609375 350.691406 L 1058.246094 347.140625 L 1062.9375 343.59375 L 1067.683594 340.042969 L 1072.484375 336.496094 L 1077.339844 332.945313 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 124.246094 624.800781 L 114.542969 622.390625 L 106.910156 619.984375 L 101.601563 617.578125 L 98.820313 615.167969 L 98.679688 612.761719 L 101.183594 610.355469 L 106.230469 607.945313 L 113.625 605.539063 L 123.121094 603.132813 L 134.441406 600.722656 L 147.324219 598.316406 L 161.523438 595.910156 L 176.824219 593.5 L 193.046875 591.09375 L 210.035156 588.6875 L 227.671875 586.277344 L 245.84375 583.871094 L 264.476563 581.464844 L 283.496094 579.054688 L 302.84375 576.648438 L 322.476563 574.242188 L 342.351563 571.832031 L 362.441406 569.425781 L 382.714844 567.019531 L 403.148438 564.609375 L 423.722656 562.203125 L 444.425781 559.796875 L 465.238281 557.386719 L 486.152344 554.980469 L 507.152344 552.574219 L 528.234375 550.164063 L 549.386719 547.757813 L 570.601563 545.351563 L 591.878906 542.941406 L 613.207031 540.535156 L 634.582031 538.128906 L 656.003906 535.71875 L 677.46875 533.3125 L 698.96875 530.90625 L 720.5 528.496094 L 742.066406 526.089844 L 763.660156 523.683594 L 785.28125 521.273438 L 806.929688 518.867188 L 828.597656 516.460938 L 850.289063 514.050781 L 872.003906 511.644531 L 893.734375 509.238281 L 915.480469 506.828125 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 915.480469 506.828125 L 913.191406 505.773438 L 911.054688 504.71875 L 909.078125 503.664063 L 907.257813 502.609375 L 905.597656 501.558594 L 904.09375 500.503906 L 902.753906 499.449219 L 901.574219 498.394531 L 900.554688 497.339844 L 899.699219 496.285156 L 899.003906 495.230469 L 898.472656 494.175781 L 898.101563 493.121094 L 897.898438 492.066406 L 897.855469 491.011719 L 897.976563 489.957031 L 898.261719 488.902344 L 898.707031 487.847656 L 899.320313 486.792969 L 900.09375 485.738281 L 901.027344 484.683594 L 902.125 483.628906 L 903.382813 482.574219 L 904.800781 481.519531 L 906.382813 480.464844 L 908.117188 479.410156 L 910.015625 478.355469 L 912.070313 477.300781 L 914.28125 476.246094 L 916.644531 475.191406 L 919.164063 474.136719 L 921.839844 473.082031 L 924.664063 472.027344 L 927.640625 470.972656 L 930.765625 469.917969 L 934.039063 468.863281 L 937.457031 467.8125 L 941.023438 466.757813 L 944.730469 465.703125 L 948.582031 464.648438 L 952.570313 463.59375 L 956.699219 462.539063 L 960.96875 461.484375 L 965.371094 460.429688 L 969.90625 459.375 L 974.574219 458.320313 L 979.375 457.265625 L 984.300781 456.210938 L 989.355469 455.15625 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 915.480469 506.828125 L 912.628906 505.472656 L 909.917969 504.113281 L 907.351563 502.753906 L 904.929688 501.398438 L 902.652344 500.039063 L 900.523438 498.679688 L 898.539063 497.324219 L 896.707031 495.964844 L 895.019531 494.605469 L 893.484375 493.246094 L 892.097656 491.890625 L 890.863281 490.53125 L 889.78125 489.171875 L 888.847656 487.816406 L 888.070313 486.457031 L 887.445313 485.097656 L 886.972656 483.742188 L 886.65625 482.382813 L 886.492188 481.023438 L 886.480469 479.664063 L 886.625 478.308594 L 886.921875 476.949219 L 887.371094 475.589844 L 887.976563 474.234375 L 888.730469 472.875 L 889.640625 471.515625 L 890.703125 470.160156 L 891.917969 468.800781 L 893.28125 467.441406 L 894.796875 466.085938 L 896.460938 464.726563 L 898.277344 463.367188 L 900.238281 462.007813 L 902.351563 460.652344 L 904.605469 459.292969 L 907.007813 457.933594 L 909.554688 456.578125 L 912.246094 455.21875 L 915.078125 453.859375 L 918.050781 452.503906 L 921.164063 451.144531 L 924.414063 449.785156 L 927.800781 448.429688 L 931.328125 447.070313 L 934.984375 445.710938 L 938.777344 444.351563 L 942.699219 442.996094 L 946.75 441.636719 L 950.933594 440.277344 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 915.480469 506.828125 L 913.320313 498.136719 L 911.402344 489.441406 L 909.722656 480.746094 L 908.289063 472.050781 L 907.097656 463.355469 L 906.148438 454.664063 L 905.445313 445.96875 L 904.992188 437.273438 L 904.78125 428.578125 L 904.816406 419.882813 L 905.097656 411.191406 L 905.628906 402.496094 L 906.402344 393.800781 L 907.421875 385.105469 L 908.683594 376.414063 L 910.191406 367.71875 L 911.9375 359.023438 L 913.929688 350.328125 L 916.160156 341.632813 L 918.625 332.941406 L 921.332031 324.246094 L 924.269531 315.550781 L 927.4375 306.855469 L 930.839844 298.160156 L 934.46875 289.46875 L 938.320313 280.773438 L 942.398438 272.078125 L 946.695313 263.382813 L 951.210938 254.691406 L 955.9375 245.996094 L 960.878906 237.300781 L 966.027344 228.605469 L 971.382813 219.910156 L 976.941406 211.21875 L 982.699219 202.523438 L 988.652344 193.828125 L 994.796875 185.132813 L 1001.132813 176.4375 L 1007.65625 167.746094 L 1014.359375 159.050781 L 1021.246094 150.355469 L 1028.308594 141.660156 L 1035.542969 132.96875 L 1042.945313 124.273438 L 1050.519531 115.578125 L 1058.253906 106.882813 L 1066.144531 98.1875 L 1074.195313 89.496094 L 1082.398438 80.800781 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 124.246094 624.800781 L 114.464844 618.84375 L 107.523438 612.886719 L 103.734375 606.929688 L 103.292969 600.976563 L 106.222656 595.019531 L 112.367188 589.0625 L 121.441406 583.105469 L 133.085938 577.152344 L 146.910156 571.195313 L 162.550781 565.238281 L 179.683594 559.28125 L 198.042969 553.324219 L 217.402344 547.371094 L 237.578125 541.414063 L 258.4375 535.457031 L 279.851563 529.5 L 301.734375 523.542969 L 324.011719 517.589844 L 346.617188 511.632813 L 369.507813 505.675781 L 392.640625 499.71875 L 415.976563 493.765625 L 439.5 487.808594 L 463.175781 481.851563 L 486.988281 475.894531 L 510.925781 469.9375 L 534.96875 463.984375 L 559.109375 458.027344 L 583.332031 452.070313 L 607.628906 446.113281 L 631.996094 440.15625 L 656.425781 434.203125 L 680.910156 428.246094 L 705.445313 422.289063 L 730.027344 416.332031 L 754.648438 410.378906 L 779.308594 404.421875 L 804.007813 398.464844 L 828.734375 392.507813 L 853.492188 386.550781 L 878.277344 380.597656 L 903.089844 374.640625 L 927.921875 368.683594 L 952.78125 362.726563 L 977.65625 356.769531 L 1002.550781 350.816406 L 1027.464844 344.859375 L 1052.394531 338.902344 L 1077.339844 332.945313 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 989.355469 455.15625 L 986.277344 452.660156 L 983.402344 450.167969 L 980.722656 447.671875 L 978.246094 445.179688 L 975.972656 442.683594 L 973.90625 440.191406 L 972.039063 437.699219 L 970.382813 435.203125 L 968.929688 432.710938 L 967.6875 430.214844 L 966.652344 427.722656 L 965.828125 425.226563 L 965.214844 422.734375 L 964.808594 420.238281 L 964.617188 417.746094 L 964.632813 415.25 L 964.859375 412.757813 L 965.296875 410.261719 L 965.945313 407.769531 L 966.804688 405.273438 L 967.871094 402.78125 L 969.148438 400.285156 L 970.632813 397.792969 L 972.324219 395.296875 L 974.222656 392.804688 L 976.324219 390.308594 L 978.632813 387.816406 L 981.140625 385.320313 L 983.851563 382.828125 L 986.757813 380.332031 L 989.867188 377.839844 L 993.167969 375.347656 L 996.667969 372.851563 L 1000.359375 370.359375 L 1004.238281 367.863281 L 1008.308594 365.371094 L 1012.5625 362.875 L 1017.003906 360.382813 L 1021.625 357.886719 L 1026.425781 355.394531 L 1031.40625 352.898438 L 1036.5625 350.40625 L 1041.886719 347.910156 L 1047.386719 345.417969 L 1053.050781 342.921875 L 1058.882813 340.429688 L 1064.875 337.933594 L 1071.027344 335.441406 L 1077.339844 332.945313 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 950.933594 440.277344 L 948.570313 438.089844 L 946.417969 435.898438 L 944.472656 433.707031 L 942.738281 431.515625 L 941.214844 429.328125 L 939.90625 427.136719 L 938.808594 424.945313 L 937.925781 422.753906 L 937.257813 420.566406 L 936.804688 418.375 L 936.566406 416.183594 L 936.542969 413.992188 L 936.734375 411.804688 L 937.140625 409.613281 L 937.761719 407.421875 L 938.597656 405.230469 L 939.648438 403.042969 L 940.914063 400.851563 L 942.390625 398.660156 L 944.078125 396.46875 L 945.976563 394.277344 L 948.085938 392.089844 L 950.402344 389.898438 L 952.925781 387.707031 L 955.652344 385.515625 L 958.585938 383.328125 L 961.71875 381.136719 L 965.050781 378.945313 L 968.585938 376.753906 L 972.3125 374.566406 L 976.234375 372.375 L 980.351563 370.183594 L 984.65625 367.992188 L 989.148438 365.804688 L 993.824219 363.613281 L 998.683594 361.421875 L 1003.722656 359.230469 L 1008.941406 357.042969 L 1014.335938 354.851563 L 1019.902344 352.660156 L 1025.640625 350.46875 L 1031.542969 348.28125 L 1037.613281 346.089844 L 1043.84375 343.898438 L 1050.234375 341.707031 L 1056.78125 339.519531 L 1063.484375 337.328125 L 1070.335938 335.136719 L 1077.339844 332.945313 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 1077.339844 332.945313 L 1071.59375 327.800781 L 1066.066406 322.65625 L 1060.757813 317.507813 L 1055.671875 312.363281 L 1050.8125 307.21875 L 1046.183594 302.070313 L 1041.785156 296.925781 L 1037.621094 291.78125 L 1033.691406 286.632813 L 1030.003906 281.488281 L 1026.558594 276.34375 L 1023.359375 271.195313 L 1020.402344 266.050781 L 1017.699219 260.90625 L 1015.242188 255.757813 L 1013.035156 250.613281 L 1011.085938 245.46875 L 1009.390625 240.320313 L 1007.949219 235.175781 L 1006.765625 230.03125 L 1005.839844 224.882813 L 1005.175781 219.738281 L 1004.765625 214.59375 L 1004.617188 209.445313 L 1004.726563 204.300781 L 1005.097656 199.15625 L 1005.726563 194.007813 L 1006.613281 188.863281 L 1007.757813 183.71875 L 1009.160156 178.570313 L 1010.820313 173.425781 L 1012.730469 168.28125 L 1014.898438 163.132813 L 1017.316406 157.988281 L 1019.988281 152.84375 L 1022.90625 147.695313 L 1026.070313 142.550781 L 1029.476563 137.40625 L 1033.128906 132.257813 L 1037.019531 127.113281 L 1041.152344 121.964844 L 1045.515625 116.820313 L 1050.109375 111.675781 L 1054.9375 106.527344 L 1059.988281 101.382813 L 1065.261719 96.238281 L 1070.757813 91.089844 L 1076.472656 85.945313 L 1082.398438 80.800781 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 124.246094 624.800781 L 115.851563 621.335938 L 109.898438 617.875 L 106.613281 614.414063 L 106.140625 610.953125 L 108.492188 607.488281 L 113.570313 604.027344 L 121.179688 600.566406 L 131.046875 597.101563 L 142.878906 593.640625 L 156.390625 590.179688 L 171.316406 586.714844 L 187.421875 583.253906 L 204.511719 579.792969 L 222.425781 576.332031 L 241.019531 572.867188 L 260.191406 569.40625 L 279.847656 565.945313 L 299.910156 562.480469 L 320.324219 559.019531 L 341.035156 555.558594 L 362.007813 552.09375 L 383.199219 548.632813 L 404.585938 545.171875 L 426.144531 541.707031 L 447.847656 538.246094 L 469.6875 534.785156 L 491.640625 531.324219 L 513.699219 527.859375 L 535.847656 524.398438 L 558.082031 520.9375 L 580.390625 517.472656 L 602.765625 514.011719 L 625.203125 510.550781 L 647.695313 507.085938 L 670.238281 503.625 L 692.824219 500.164063 L 715.457031 496.703125 L 738.128906 493.238281 L 760.832031 489.777344 L 783.574219 486.316406 L 806.339844 482.851563 L 829.136719 479.390625 L 851.960938 475.929688 L 874.808594 472.464844 L 897.679688 469.003906 L 920.570313 465.542969 L 943.480469 462.078125 L 966.410156 458.617188 L 989.355469 455.15625 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 124.246094 624.800781 L 115.925781 621.035156 L 109.875 617.269531 L 106.304688 613.503906 L 105.355469 609.738281 L 107.066406 605.972656 L 111.371094 602.207031 L 118.101563 598.441406 L 127.027344 594.675781 L 137.882813 590.910156 L 150.40625 587.144531 L 164.347656 583.375 L 179.476563 579.609375 L 195.605469 575.84375 L 212.574219 572.078125 L 230.242188 568.3125 L 248.5 564.546875 L 267.257813 560.78125 L 286.4375 557.015625 L 305.976563 553.25 L 325.828125 549.484375 L 345.945313 545.71875 L 366.292969 541.953125 L 386.84375 538.1875 L 407.566406 534.421875 L 428.449219 530.65625 L 449.464844 526.890625 L 470.601563 523.125 L 491.847656 519.359375 L 513.191406 515.59375 L 534.617188 511.828125 L 556.125 508.0625 L 577.699219 504.296875 L 599.339844 500.53125 L 621.035156 496.765625 L 642.785156 493 L 664.585938 489.234375 L 686.425781 485.46875 L 708.308594 481.703125 L 730.226563 477.9375 L 752.179688 474.171875 L 774.164063 470.40625 L 796.175781 466.640625 L 818.21875 462.875 L 840.285156 459.109375 L 862.371094 455.339844 L 884.484375 451.574219 L 906.613281 447.808594 L 928.765625 444.042969 L 950.933594 440.277344 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 124.246094 624.800781 L 115.855469 613.699219 L 110.363281 602.597656 L 108.011719 591.492188 L 108.917969 580.390625 L 113.039063 569.289063 L 120.179688 558.1875 L 130.039063 547.085938 L 142.265625 535.984375 L 156.5 524.882813 L 172.410156 513.78125 L 189.703125 502.675781 L 208.136719 491.574219 L 227.511719 480.472656 L 247.65625 469.371094 L 268.445313 458.269531 L 289.769531 447.167969 L 311.542969 436.066406 L 333.691406 424.964844 L 356.167969 413.859375 L 378.917969 402.757813 L 401.902344 391.65625 L 425.09375 380.554688 L 448.460938 369.453125 L 471.984375 358.351563 L 495.644531 347.25 L 519.425781 336.148438 L 543.316406 325.042969 L 567.300781 313.941406 L 591.367188 302.839844 L 615.511719 291.738281 L 639.726563 280.636719 L 664.003906 269.535156 L 688.335938 258.433594 L 712.71875 247.332031 L 737.148438 236.230469 L 761.617188 225.125 L 786.128906 214.023438 L 810.675781 202.921875 L 835.257813 191.820313 L 859.867188 180.71875 L 884.503906 169.617188 L 909.167969 158.515625 L 933.855469 147.414063 L 958.566406 136.308594 L 983.296875 125.207031 L 1008.046875 114.105469 L 1032.8125 103.003906 L 1057.597656 91.902344 L 1082.398438 80.800781 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 989.355469 455.15625 L 988.226563 454.851563 L 987.109375 454.546875 L 986.007813 454.246094 L 984.917969 453.941406 L 983.84375 453.636719 L 982.78125 453.335938 L 981.734375 453.03125 L 980.703125 452.726563 L 979.683594 452.421875 L 978.679688 452.121094 L 977.691406 451.816406 L 976.714844 451.511719 L 975.753906 451.207031 L 974.804688 450.90625 L 973.875 450.601563 L 972.953125 450.296875 L 972.050781 449.996094 L 971.160156 449.691406 L 970.285156 449.386719 L 969.425781 449.082031 L 968.578125 448.78125 L 967.75 448.476563 L 966.929688 448.171875 L 966.128906 447.867188 L 965.339844 447.566406 L 964.570313 447.261719 L 963.8125 446.957031 L 963.066406 446.65625 L 962.339844 446.351563 L 961.625 446.046875 L 960.929688 445.742188 L 960.246094 445.441406 L 959.574219 445.136719 L 958.921875 444.832031 L 958.28125 444.53125 L 957.660156 444.226563 L 957.050781 443.921875 L 956.457031 443.617188 L 955.878906 443.316406 L 955.316406 443.011719 L 954.769531 442.707031 L 954.234375 442.402344 L 953.71875 442.101563 L 953.214844 441.796875 L 952.726563 441.492188 L 952.253906 441.191406 L 951.800781 440.886719 L 951.359375 440.582031 L 950.933594 440.277344 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 989.355469 455.15625 L 988.484375 447.515625 L 987.730469 439.875 L 987.097656 432.234375 L 986.582031 424.597656 L 986.1875 416.957031 L 985.910156 409.316406 L 985.75 401.675781 L 985.710938 394.035156 L 985.792969 386.398438 L 985.992188 378.757813 L 986.3125 371.117188 L 986.75 363.476563 L 987.304688 355.835938 L 987.980469 348.195313 L 988.773438 340.558594 L 989.6875 332.917969 L 990.714844 325.277344 L 991.863281 317.636719 L 993.128906 309.996094 L 994.507813 302.359375 L 996.007813 294.71875 L 997.621094 287.078125 L 999.347656 279.4375 L 1001.191406 271.796875 L 1003.148438 264.15625 L 1005.222656 256.519531 L 1007.40625 248.878906 L 1009.703125 241.238281 L 1012.109375 233.597656 L 1014.628906 225.957031 L 1017.257813 218.320313 L 1019.996094 210.679688 L 1022.84375 203.039063 L 1025.796875 195.398438 L 1028.859375 187.757813 L 1032.023438 180.117188 L 1035.296875 172.480469 L 1038.671875 164.839844 L 1042.152344 157.199219 L 1045.734375 149.558594 L 1049.414063 141.917969 L 1053.199219 134.28125 L 1057.082031 126.640625 L 1061.0625 119 L 1065.136719 111.359375 L 1069.3125 103.71875 L 1073.582031 96.078125 L 1077.945313 88.441406 L 1082.398438 80.800781 \"/>\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(74.509804%,74.509804%,74.509804%);stroke-opacity:1;stroke-dasharray:1,3;stroke-miterlimit:10;\" d=\"M 950.933594 440.277344 L 950.710938 432.941406 L 950.621094 425.605469 L 950.65625 418.269531 L 950.824219 410.933594 L 951.117188 403.597656 L 951.535156 396.261719 L 952.085938 388.925781 L 952.761719 381.589844 L 953.5625 374.253906 L 954.492188 366.914063 L 955.550781 359.578125 L 956.734375 352.242188 L 958.042969 344.90625 L 959.476563 337.570313 L 961.035156 330.234375 L 962.71875 322.898438 L 964.523438 315.5625 L 966.453125 308.226563 L 968.507813 300.890625 L 970.679688 293.554688 L 972.976563 286.214844 L 975.390625 278.878906 L 977.925781 271.542969 L 980.578125 264.207031 L 983.347656 256.871094 L 986.234375 249.535156 L 989.238281 242.199219 L 992.355469 234.863281 L 995.585938 227.527344 L 998.929688 220.191406 L 1002.386719 212.851563 L 1005.953125 205.515625 L 1009.628906 198.179688 L 1013.410156 190.84375 L 1017.304688 183.507813 L 1021.300781 176.171875 L 1025.402344 168.835938 L 1029.609375 161.5 L 1033.917969 154.164063 L 1038.332031 146.828125 L 1042.84375 139.492188 L 1047.453125 132.152344 L 1052.160156 124.816406 L 1056.964844 117.480469 L 1061.867188 110.144531 L 1066.863281 102.808594 L 1071.949219 95.472656 L 1077.128906 88.136719 L 1082.398438 80.800781 \"/>\n <g style=\"fill:rgb(89.411765%,10.196078%,10.980392%);fill-opacity:1;\">\n <use xlink:href=\"#glyph2-0\" x=\"922.679688\" y=\"508.953125\"/>\n <use xlink:href=\"#glyph2-1\" x=\"928.615918\" y=\"508.953125\"/>\n <use xlink:href=\"#glyph2-2\" x=\"934.052393\" y=\"508.953125\"/>\n <use xlink:href=\"#glyph2-3\" x=\"936.525098\" y=\"508.953125\"/>\n <use xlink:href=\"#glyph2-4\" x=\"942.952393\" y=\"508.953125\"/>\n </g>\n <g style=\"fill:rgb(21.568627%,49.411765%,72.156863%);fill-opacity:1;\">\n <use xlink:href=\"#glyph2-0\" x=\"1084.539063\" y=\"335.070313\"/>\n <use xlink:href=\"#glyph2-5\" x=\"1090.475293\" y=\"335.070313\"/>\n <use xlink:href=\"#glyph2-4\" x=\"1096.411523\" y=\"335.070313\"/>\n <use xlink:href=\"#glyph2-6\" x=\"1102.347754\" y=\"335.070313\"/>\n <use xlink:href=\"#glyph2-4\" x=\"1108.283984\" y=\"335.070313\"/>\n </g>\n <g style=\"fill:rgb(30.196078%,68.627451%,29.019608%);fill-opacity:1;\">\n <use xlink:href=\"#glyph2-0\" x=\"131.449219\" y=\"626.921875\"/>\n <use xlink:href=\"#glyph2-7\" x=\"137.385449\" y=\"626.921875\"/>\n <use xlink:href=\"#glyph2-8\" x=\"143.32168\" y=\"626.921875\"/>\n <use xlink:href=\"#glyph2-1\" x=\"150.735449\" y=\"626.921875\"/>\n <use xlink:href=\"#glyph2-4\" x=\"156.171924\" y=\"626.921875\"/>\n </g>\n <g style=\"fill:rgb(59.607843%,30.588235%,63.921569%);fill-opacity:1;\">\n <use xlink:href=\"#glyph2-0\" x=\"996.554688\" y=\"457.277344\"/>\n <use xlink:href=\"#glyph2-9\" x=\"1002.490918\" y=\"457.277344\"/>\n <use xlink:href=\"#glyph2-2\" x=\"1010.891162\" y=\"457.277344\"/>\n <use xlink:href=\"#glyph2-10\" x=\"1013.363867\" y=\"457.277344\"/>\n <use xlink:href=\"#glyph2-4\" x=\"1020.286572\" y=\"457.277344\"/>\n </g>\n <g style=\"fill:rgb(100%,49.803922%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph2-0\" x=\"958.132813\" y=\"442.402344\"/>\n <use xlink:href=\"#glyph2-11\" x=\"964.069043\" y=\"442.402344\"/>\n <use xlink:href=\"#glyph2-12\" x=\"969.505518\" y=\"442.402344\"/>\n <use xlink:href=\"#glyph2-2\" x=\"975.932812\" y=\"442.402344\"/>\n <use xlink:href=\"#glyph2-4\" x=\"978.405518\" y=\"442.402344\"/>\n </g>\n <g style=\"fill:rgb(65.098039%,33.72549%,15.686275%);fill-opacity:1;\">\n <use xlink:href=\"#glyph2-0\" x=\"1089.601563\" y=\"82.921875\"/>\n <use xlink:href=\"#glyph2-5\" x=\"1095.537793\" y=\"82.921875\"/>\n <use xlink:href=\"#glyph2-2\" x=\"1101.474023\" y=\"82.921875\"/>\n <use xlink:href=\"#glyph2-5\" x=\"1103.946729\" y=\"82.921875\"/>\n <use xlink:href=\"#glyph2-4\" x=\"1109.882959\" y=\"82.921875\"/>\n </g>\n <g style=\"fill:rgb(74.509804%,74.509804%,74.509804%);fill-opacity:1;\">\n <use xlink:href=\"#glyph2-5\" x=\"759.210938\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-13\" x=\"765.147168\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-14\" x=\"770.096924\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-15\" x=\"775.04668\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-16\" x=\"779.996436\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-17\" x=\"781.97373\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-9\" x=\"784.9375\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-18\" x=\"793.337744\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-19\" x=\"798.2875\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-20\" x=\"800.264795\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-21\" x=\"805.214551\" y=\"408.925781\"/>\n <use xlink:href=\"#glyph2-22\" x=\"810.164307\" y=\"408.925781\"/>\n </g>\n </g>\n <g style=\"fill:rgb(0%,0%,0%);fill-opacity:1;\">\n <use xlink:href=\"#glyph3-0\" x=\"423.5625\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-1\" x=\"433.500684\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-1\" x=\"438.4625\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-2\" x=\"443.424316\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-3\" x=\"447.564014\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-2\" x=\"455.850684\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-4\" x=\"459.990381\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-5\" x=\"468.277051\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-6\" x=\"477.378564\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-7\" x=\"482.340381\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-8\" x=\"486.480078\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-9\" x=\"495.581592\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-10\" x=\"501.380078\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-5\" x=\"510.481592\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-6\" x=\"519.583105\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-2\" x=\"524.544922\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-4\" x=\"528.684619\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-9\" x=\"536.971289\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-7\" x=\"542.769775\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-11\" x=\"546.909473\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-12\" x=\"556.847656\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-5\" x=\"565.134326\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-13\" x=\"574.23584\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-14\" x=\"583.337354\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-12\" x=\"592.438867\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-9\" x=\"600.725537\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-15\" x=\"606.524023\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-7\" x=\"615.625537\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-8\" x=\"619.765234\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-14\" x=\"628.866748\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-5\" x=\"637.968262\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-15\" x=\"647.069775\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-16\" x=\"656.171289\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-7\" x=\"664.457959\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-17\" x=\"668.597656\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-18\" x=\"676.884326\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-18\" x=\"685.170996\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-18\" x=\"693.457666\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-7\" x=\"701.744336\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-6\" x=\"705.884033\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-10\" x=\"710.84585\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-7\" x=\"719.947363\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-17\" x=\"724.087061\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-18\" x=\"732.37373\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-19\" x=\"740.6604\" y=\"34.851563\"/>\n <use xlink:href=\"#glyph3-20\" x=\"748.94707\" y=\"34.851563\"/>\n </g>\n </g>\n</svg>\n", "config": [] },"evals": [ ] }</script> <script type="application/htmlwidget-sizing" data-for="htmlwidget-3332">{ "viewer": { "width": 450, "height": 350, "padding": 15, "fill": true },"browser": { "width": 960, "height": 500, "padding": 40, "fill": false } }</script> </body> </html>" width="100%" height="500" style="border-width:0px ;"></iframe> |