DonatShell
Server IP : 180.180.241.3  /  Your IP : 216.73.216.252
Web Server : Microsoft-IIS/7.5
System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586
User : IUSR ( 0)
PHP Version : 5.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Windows/SysWOW64/en-US/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /Windows/SysWOW64/en-US//mshtml.dll.mui
MZ@	!L!This program cannot be run in DOS mode.

$Rؕ3}3}3}H̴3}H̱3}Rich3}PEL!L`;@xJ.rsrcPL@@Ph	@Xp 8E`P8hlRw(!@1X3p5689:?@A0_H``x	 	8	P	h	&	:	F	L	U		
(
@
X
p





30rH`x()* 8Ph
(
@
!X
1p
4
5
6
7
8
9AE0FHG`HxQRVWabg h8iPmhqrt(@Xp-



0
H
`
x
!
"
&
'
(
a
 q
8Ph()*+,-./(0@1X2p345. \ p 0 H ` x  !8!X!x!! !8	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p											 	0	@	P	`	p	124;0?h?X?@ACL<G`HI4PJ`NTOOP8T*dTUD8VvV*VWXnY~Y4Y\ Z$^_`PadphmHq.xr@rsDt~vj0wDtw4x}~؊D܍\đP^tjԖLԝH>tLHF4bPd:@d:>XvJ,	Hpd"d| 

Df*\#	-0R418:^H;<BDG
MRpX\	ejrt8udvw{>{N$2,:ht@DD(lL(t|hH4hh,<ܒl	|4}I|Zxu0%,>&?*
'@MUIIDD_ADDTOSAVE_DIALOG_MSHTMLPERFWIDGETACCELERATORSWEBPLATFORMACCELERATORSABOUT-COMPAT-ICONS.SVG	ABOUT.MOZABOUTCOMPAT.CSSABOUTCOMPAT.JSABOUTCOMPATDATA.JS	BLANK.HTM
COMPAT.HTM
GLOBAL.CSSHTML5ENTITIES.DTDICON-SEARCH.SVGPERFWIDGET.HTMLPHISHSITE_WEBVIEW.HTMTABLE.JSXMLTREEVIEW.JSy,Yߌ烈
wBg2(MUI	en-US&Edit+&Undo	Ctrl+Z&Redo	Ctrl+YCu&t	Ctrl+X&Copy	Ctrl+C&Paste	Ctrl+VCle&ar	DelSelect al&l	Ctrl+AC&Find...	Ctrl+F&Go to...	Ctrl+GL&Link...	Ctrl+KPRemove book&markMRemove li&nk&ViewR&ToolbarS&Status barT&Format marksUTe&xt onlyFo&ntsaLar&gest`&Larger_&Medium^&Smaller]Sm&allest&Refresh	F5[Sour&ceOpen &linkXIn &current window	In ne&w tabYIn &new window&Properties...W&Options...&InsertfHori&zontal line&Line breakg&Normal line breakhClear &left marginiClear &right marginjClear &both marginsk&Non-breaking space	Ctrl+Shift+SpacePage &breakl&Special character...&Marquee...z&HTML text&Controlq&Text boxrText &areas&Check boxt&Radio buttonu&Dropdown boxv&List boxw&Buttonx&Image...n&Frame...&Object...F&ormatZ&Characters...&Increase indent&Decrease indent&HelpTrident Help topics Trident Readme fileAbout Microsoft TridentHelp for Microsoft TridentTrident Help topics Trident Readme fileAbout Microsoft Trident&EditCu&t	Ctrl+X&Copy	Ctrl+C&Paste	Ctrl+VSelect &all	Ctrl+AC&Find (on this page)...	Ctrl+F&ViewR&ToolbarS&Status bar&FontsaLar&gest`&Larger_&Medium^&Smaller]Sm&allest&LanguageZSto&p	Esc&Refresh	F5[Sour&ce&Debugger	&Launch debugger	&Break at nextW&Options...&HelpTrident Help Topics Trident Readme fileAbout Microsoft TridentHelp for Microsoft TridentTrident Help Topics Trident Readme fileAbout Microsoft TridentPA.	Left-to-right document/	Right-to-left documentDragMove hereCopy hereCancelControl+&UndoCu&t&Copy&Paste&DeleteSelect &allPADTMS Shell DlgP2
&Language:!P5F ȀZInternet ExplorerMS Shell DlgP{C2NoP`P* nActive Content might harm your computer or disclose personal information. Are you sure you want to allow Active Content to access your computer?P*1mSysLink<A ID="ShowLMZLUnlockHelp">More information about Local Machine Lockdown</A>P<C2YesPAȀWebpage ErrorMS Shell DlgPiyP%!Do you want to debug this webpage?
This webpage contains errors that might prevent it from displaying or working correctly. If you are not testing this webpage, click No. P%+
&Do not show this message againP%8
Use the &built-in script debugger in Internet ExplorerPL2&YesPL2&NoPb2Ȑ}Tab OrderMS Shell DlgP2OKP$2CancelPB2Move &upPT2Move &downP
&Tab Order:	Pe@B6MS Shell DlgPXSP$TȀA>Explorer User PromptMS Shell DlgP*3
P2OKP2CancelP
Script Prompt:PȐd2ActiveX Viewer Not InstalledMS Shell DlgPP"
The page you are about to view contains an embedded object of the following type:P3&YesP3&NoP"q&Always check before displaying this type of objectPU0P"TYour computer does not have an ActiveX viewer for this type of object. Do you want to download and install an ActiveX viewer automatically?P"#+Embedded object typeP(0)Extension:P(=)MIME type:PU=
HTML Document
HTML DocumentSSL secured (40 Bit)SSL Secured (128 Bit)SSL secured (Fortezza)SSL secured (56 Bit)PA-30s+30sPlayPauseMuteUnmuteSave video as...Save audio as...Copy video URLCopy audio URL%sX%.3fXPAErrorAborted
Network ErrorDecode ErrorInvalid Source
Unknown Error!Error: Video playback was aborted'Network Error: Unable to retrieve videoNetwork Error: Unable to PlayTo!Error: Video could not be decoded2Error: Unsupported video type or invalid file path Error: An unknown error occurred!Error: Audio playback was aborted'Network Error: Unable to retrieve audio!Error: Audio could not be decoded2Error: Unsupported audio type or invalid file pathPA.....PAPlayPauseSeekVolumeMuteUnmuteTime elapsed/Skip backTime remaining/Skip aheadShow audio selection menuShow captioning selection menuVolume/MuteFull screenExit full screenZoom inZoom outuntitledOff%1 (On)+Media element power request for full screenPAResetPANormal	FormattedAddress	Heading 1	Heading 2	Heading 3	Heading 4	Heading 5PA	Heading 6
Numbered List
Bulleted ListDirectory List	Menu ListDefinition Term
Definition	Paragraph<pre>	<address><h1><h2><h3><h4><h5><h6><ol><ul><dir><menu><dt><dd><p><div>PA/Internet Explorer <0d>.<1d2>.<2d4>.<3d><4s><5s>PA
(untitled)This command is not supported.&Edit&Properties...Windows Internet ExplorerSolution:
<0s>3Could not complete the operation due to error <0x>. Could not set the <0s> property. Could not get the <0s> property.5The value entered for the <0s> property is not valid.oHTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)$Enter a value between <0d> and <1d>. Enter a value greater than zero.,Enter a value greater than or equal to zero.1The object has changed. Do you want to update it?Parser Terminated Early#Parser Terminated Early around <0s>Microsoft Internet ExplorerThe picture type is not valid.Control Properties<0s> PropertiesCould not paste the control.Could not insert the control.PA	Undo <0s>	Redo <0s>
Can't Undo
Can't Redo
Insert Object
Delete ObjectProperty ChangeMoveWeb BrowserDropPasteTypingText OperationAutocorrectionSpelling Change Can not set property at runtime.rCan't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus.*This method can't be used in this context.Enter a proper value.Could not call the <0s> method.$The control needs to have the focus.-Unexpected call to method or property access.Unspecified error."The value is not a picture object.Invalid property array index.Invalid property value.	Overflow.Permission denied.Invalid argument.EThe control could not be created because it is not properly licensed.*Invalid target element for this operation.'Invalid source HTML for this operation.Unknown<This address is not valid. Check the address, and try again.HThe site was not found. Make sure the address is correct, and try again.Stack overflow at line: <0d>Out of memory at line: <0d>LThis document was not completely loaded because it contains mismatched tags.0Incompatible markup pointers for this operation./Unpositioned markup pointer for this operation.(Unpositioned element for this operation.Stack overflowMessage from webpageUnable to add dynamic content. A script attempted to inject dynamic content, or elements previously modified dynamically, that might be unsafe. For example, using the innerHTML property to add script or malformed HTML will generate this exception. Use the toStaticHTML method to filter dynamic content, or explicitly create elements and attributes with a method such as createElement.  For more information, see http://go.microsoft.com/fwlink/?LinkID=247104.&Click to activate and use this control8Press SPACEBAR or ENTER to activate and use this controlInactive Control<Click here to load the following control: '<0s>' from '<1s>'/Click to run an ActiveX control on this webpageQAn unknown error has occurred while attempting to determine the current position.>This site does not have permission to use the Geolocation API.-The current position could not be determined.JThe current position could not be determined within the timeout specified.PAInternet Explorer4Specify Internet Explorer power management settings.JavaScript Timer FrequencyMaximum Power SavingsMaximum PerformancePAUnknown ProtocolE<0s>, <1s> with <2d> bit encryption <3i>; <5s> with <6d> bit exchange(Low)(Medium)(High)	EncryptedPAMy ComputerLocal intranet
Trusted sitesInternetRestricted sites&MorePALoad Picture|bmp|All Picture Files|*.bmp;*.wmf;*.emf;*.ico;*.dib;*.cur;*.gif;*.jpg|Bitmaps(*.Bmp;*.Dib)|*.bmp;*.dib|Metafiles(*.Wmf;*.Emf)|*.wmf;*.emf|Icons(*.Ico;*.Cur)|*.ico;*.cur|GIF(*.Gif)|*.gif|JPEG(*.Jpg)|*.jpg|All Files(*.*)|*.*|CLoad Picture|bmp|Icons(*.Ico;*.Cur)|*.ico;*.cur|All Files(*.*)|*.*|PAAll PropertiesInline Style PropertiesPA -- Webpage DialogChoose File to Upload|*|All Files (*.*)|*.*|Pictures (*.gif;*.jpg;*.jpeg;*.png)|*.gif;*.jpg;*.jpeg;*.png|HTML (*.htm;*.html)|*.htm;*.html|Times New RomanCould not save the picture.Could not set the wallpaper.Stop running this script?

A script on this page is causing your web browser to run slowly.
If it continues to run, your computer might become
unresponsive.

An ActiveX control on this page is not safe.  
Your current security settings prohibit running unsafe controls on this page.  
As a result, this page might not display as intended.This page provides potentially unsafe information to an ActiveX control.  Your current security settings prohibit running controls in this manner.  As a result, this page might not display correctly.PATo display the webpage again, the web browser needs to
resend the information you've previously submitted.

If you were making a purchase, you should click Cancel to
avoid a duplicate transaction. Otherwise, click Retry to display
the webpage again.One or more ActiveX controls could not be displayed because either:

1) Your current security settings prohibit running ActiveX controls on this page, or
2) You have blocked a publisher of one of the controls.

As a result, the page might not display correctly.CMismatched or improperly closed XML tag at "<1s><2s>" on line <0d>.Line: <1d>

Error: <2s>Could not set the desktop item.Could not print the picture.Could not email the picture.PAUSave HTML Document|htm|HTML File (*.htm;*.html)|*.htm;*.html|Text File (*.txt)|*.txt|8Save Picture|gif|GIF (*.gif)|*.gif|Bitmap (*.bmp)|*.bmp|9Save Picture|jpg|JPEG (*.jpg)|*.jpg|Bitmap (*.bmp)|*.bmp|&Save Picture|bmp|Bitmap (*.bmp)|*.bmp|8Save Picture|wmf|WMF (*.wmf)|*.wmf|Bitmap (*.bmp)|*.bmp|8Save Picture|emf|EMF (*.emf)|*.emf|Bitmap (*.bmp)|*.bmp|#Save Picture|avi|AVI (*.avi)|*.avi|$Save Picture|mpg|MPEG (*.mpg)|*.mpg|#Save Picture|mov|MOV (*.mov)|*.mov|!Save Picture||Original (*.*)|*.*|untitled.bmpPA
untitled.html$<0s>\Internet Explorer Wallpaper.bmp;This type of document does not have a security certificate.%s needs some information8Save Picture|png|PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|;Save Picture|tif|TIFF (*.tiff)|*.tiff|Bitmap (*.bmp)|*.bmp|8Save Picture|jxr|JXR (*.jxr)|*.jxr|Bitmap (*.bmp)|*.bmp|_Save Picture|svg|Scalable Vector Graphics (*.svg)|*.svg|PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|untitled.svg8Save Picture|ico|ICO (*.ico)|*.ico|Bitmap (*.bmp)|*.bmp|PAuntitled.pngAudio FilesImage FilesVideo FilesCustom Files8Save Picture|dds|DDS (*.dds)|*.dds|Bitmap (*.bmp)|*.bmp|(<0d> item(s) remaining) Downloading picture <0s>...Generating page <0s>...Waiting for <0s>...PAInstalling components...<0s>Downloading data <0s>...DoneLoading dataset...Databinding...Shortcut to <0s> <1s><0s> at <1s>Sends mail to <0s>(local)(Gopher)(FTP)(secure website)Document Load Error,Unable to open the Internet site <0s>.

<1s>6Are you sure you want to navigate away from this page?FYou can search this index. Type the keyword(s) you want to search for:<Press OK to continue, or Cancel to stay on the current page.3This is a searchable index. Enter search keywords: FontNameFontSizeFontBold
FontItalic	FontUnder	BackColorPABorderColorBorderStyle	TextAlign
SpecialEffectFontSuperscript
FontSubscript<undefined>nulltruefalse/This document contains the following shortcuts:
Shortcut TextInternet Address&w&bPage &p of &P&u&b&d0.7500000.7500000.7500000.750000XPS Documents (*.xps)|*.xps|PAResetSubmit Query	Browse...Clear valuePAForm posted from web browser.[Could not perform this operation because the default mail client is not properly installed.This form is being submitted using e-mail.
Submitting this form will reveal your e-mail address to the recipient,
and will send the form data without encrypting it for privacy.

You may continue or cancel this submission.Mail client not found\A value could not be saved into the data source's '<0s>' field.
<1s>

Discard changed value?!A type conversion error occurred..The data source record was previously deleted.#The data source field is read-only.?The value is not consistent with the data source's constraints.Operation was cancelled."Operation failed with status <1d>.PAEContains commands for the clipboard, finding text, and editing links.;Contains commands for controlling the display of your page.7Contains commands for inserting elements into the page.CContains commands for formatting the selected elements on the page.JClick here to install the following ActiveX control: '<0s>' from '<1s>'...WThe webpage you are viewing is trying to close the tab.

Do you want to close this tab?]The webpage you are viewing is trying to close the window.

Do you want to close this window? (Mixed)Unknown ZoneProtected Mode: OnProtected Mode: OffProtected Mode: EnhancedPA%1!ls! | %2!ls!PABrowse for file to uploadCheckUncheckJumpPressSelectCloseOpenDouble ClickPAEnter name of file to uploadlink region type: PLUGIN: type=ObjectPLUGIN: type=EmbedMSAAHTML Registered Handler%d%%Alt+Down ArrowDThis control is inactive. Select the control to activate and use it.<0d> of <1d>	Ascending
DescendingExpandCollapseToggleClickDeselectAudioVideoPlayPause	Volume upVolume downBackForwardGo to start	Go to end	Audio: %1	Video: %1!Plays the current media selection"Pauses the current media selectionSeek Seeks to any position in a trackPAAt %1 of %2 totalVolume%1%%Time elapsed/Skip back%1Time remaining/Skip ahead%1Show audio selection menuShow captioning selection menuErrorLoadingLoading media...Full screenExit full screenSpace\Left and right arrow keys skip 10 seconds; SHIFT + left or right arrow key skips 30 seconds.,Up and down arrow keys raise or lower volumeMAU)SHIFT + left arrow skips back 30 seconds.+SHIFT + right arrow skips ahead 30 seconds.	Alt+EnterPAEscZoom inZoom outZPAAThe security certificate protecting this url is not secure : <0s>PAF12The F12 developer tools in the main Internet Explorer window must be closed before opening in this dialog



To close the existing F12 developer tools window and open them here, click OK. Otherwise, click Cancel.%HTTPS security is compromised by <0s>]The window.name property was not set because the target window belongs to a different domain."Codepage restart from <0s> to <1s>6Script from <0s> was blocked due to mime type mismatch)CSS was ignored due to mime type mismatchICodepage <0s> from (<1s>) overrides conflicting codepage <2s> from (<3s>)META tag<Codepage <0s> is not allowed, only codepage <1s> is allowed.dSecurity of a sandboxed iframe is potentially compromised by allowing script and same origin access.PA@charsetUNICODE byte order markHTTP headerB<0s> is on the Internet Explorer Compatibility View List ('<1s>').5<0s> is a website you've added to Compatibility View.h<0s> is running in Compatibility View because 'Display intranet sites in Compatibility View' is checked.K<0s> has been configured to run in Compatibility View through Group Policy.The code on this page disabled back and forward caching. For more information, see: http://go.microsoft.com/fwlink/?LinkID=291337%@font-face encountered unknown error.'@font-face failed WOFF integrity check.PAA@font-face mistmatch between document origin and EOT root string.V@font-face failed OpenType embedding permission check. Permission must be Installable.0@font-face unable to load invalid OpenType font.]:visited and :link styles can only differ by color. Some styles were not applied to :visited.UX-UA-Compatible META tag ('<0s>') ignored because document mode is already finalized._X-UA-Compatible META tag ('<0s>') ignored because of earlier X-UA-Compatible META tag ('<1s>').AA download in this page was blocked by Tracking Protection.

<0s>N@font-face failed cross-origin request. No Access-Control-Allow-Origin header.F@font-face failed cross-origin request. Resource access is restricted.VFailed to create new stylesheet. There are more than <0d> stylesheets in the document.cx-UA-compatible processing instruction ('<0s>') ignored because document mode is already finalized.Navigation occurred.:Invalid argument 'url'. Failed to revoke Blob URL: '<0s>'.9Access Denied. Failed to revoke cross-origin URL: '<0s>'.Resource '<0s>' not found.PAuNetwork request to <0s> did not succeed.

Your application manifest does not declare the following capabilities: <1s>xNetwork request to <0s> did not succeed.

This Internet Explorer instance does not have the following capabilities: <1s>JAccess Denied. Resource access is restricted for cross-origin URL: '<0s>'.cPotential cross-site scripting detected in '<0s>'. The content has been modified by the XSS Filter.,Resource doesn t exist in the cache: '<0s>'.-Resource doesn t exist on the server: '<0s>'.-Manifest doesn t exist on the server: '<0s>'.!Manifest parsing failure: '<0s>'.4Manifest changed while update was being run: '<0s>'.AppCache Fatal Error(Creating AppCache with manifest: '<0s>'.HIndexed DB is only available on websites with http or https URL schemes.)One or more blob URLs were not revoked prior to navigating to a new document. Because unrevoked blob URLs can continue consuming system resources,

revoke the blob URLs manually by calling URL.revokeObjectURL or use the {oneTimeOnly} flag when you call URL.createObjectURL to create the blob URLs.B3rd party Blob object discovered with incompatible threading modelOne or more blob URLs were revoked by closing the blob for which they were created. These URLs will no longer resolve as the data backing the URL has been freed.Resource '<0s>' not found.8Failed to retrieve IUriToStreamResolver for url: '<0s>'.JAccess Denied. Resource access is restricted for cross-origin URL: '<0s>'.QCall to UriToStreamAsync succeeded but returned a null operation for url: '<0s>'.&Unable to decode image at URL: '<0s>'.Unable to receive a ScriptNotify event from: '<0s>'. The website attempted to send a ScriptNotify event to the app from a WebView URI that is not included in the ApplicationContentUriRules for this app. To permit this event, add the URI to the ApplicationContentUriRules section of the package manifest. (In Visual Studio, add this URI to the Content URIs tab of the Manifest Designer.)Unable to receive a ScriptNotify event from: '<0s>'. The website attempted to send a ScriptNotify event to the app from a WebView URI that is not included in the AllowedNotifyUris property. Add this URI to the AllowedNotifyUris property of the WebView.The DDS image format isn't supported in Internet Explorer on Windows 7. Get more info at http://go.microsoft.com/fwlink/?LinkId=291257The image '<0s>' uses an unsupported encoding format. See the list of supported formats at http://go.microsoft.com/fwlink/?LinkId=291257.The image '<0s>' has ambiguous alpha-channel values. Only DDS images that explicitly specify the alpha behavior can be displayed. Get more info at http://go.microsoft.com/fwlink/?LinkId=291257.R'<0s>' is on the Internet Explorer Compatibility View List with SPDY restrictions.The media query -ms-view-state has been deprecated. -ms-view-state media queries may be altered or unavailable for releases after Windows 8.1. Instead, use max-width and min-width queries.>Internet Explorer is running in Enterprise Mode emulating IE8.FSVG Path data has incorrect format and could not be completely parsed.GSVG Point list has incorrect format and could not be completely parsed.PA"Applying Integrated XSLT Handling.XSLT processing failed.)Request for cross-domain XSLT was denied.-XML+XSLT is not allowed in restricted frames.PAMX_E_MXUnexpected end of input.Unrecognized encoding.Unable to switch the encoding.&Unrecognized input encoding signature.WC_E_WCWhitespace expected.Semicolon expected.
Expected ">".Quote character expected.
Expected "=".6The "<" character is not allowed in attributes values.Hexadecimal digit expected.Decimal digit expected
Expected "[".
Expected "(".PAIllegal XML character.Illegal name character.Incorrect document syntax.Incorrect CDATA section syntax.Incorrect comment syntax.%Incorrect conditional section syntax.%Incorrect ATTLIST declaration syntax.%Incorrect DOCTYPE declaration syntax.%Incorrect ELEMENT declaration syntax.$Incorrect ENTITY declaration syntax.&Incorrect NOTATION declaration syntax.Expected "NDATA".Expected "PUBLIC".Expected "SYSTEM".
Invalid name.!Only one root element is allowed.=End-tag name does not match the corresponding start-tag name.?An attribute with the same name already exists on this element.@An XML declaration is only allowed at the beginning of the file.Leading "xml"."Incorrect text declaration syntax.!Incorrect XML declaration syntax.Incorrect encoding name syntax.#Incorrect public identifier syntax.aParameter entity references are not allowed within markup declarations in an internal DTD subset.The replacement text for parameter entity references used between markup declarations must itself contain a series of complete markup declarations.JA parsed entity must not contain a direct or indirect reference to itself.7The content of the specified entity is not well-formed.+The specified entity has not been declared.?Entity reference cannot contain the name of an unparsed entity.UAttribute values must not contain direct or indirect references to external entities.(Incorrect processing instruction syntax.PA#Incorrect system identifier syntax.Expected a question mark (?).LThe CDATA-section-close delimiter "]]>" must not be used in element content.&Not all chunks of data have been read. DTD was found but is prohibited.WFound xml:space attribute with invalid value. Valid values are "preserve" or "default".NC_E_NC!Illegal qualified name character.7Multiple colons ":" must not occur in a qualified name.%A colon ":" must not occur in a name.Declared prefix.+The specified prefix has not been declared.>Non-default namespace declarations must not have an empty URI.ZThe "xml" prefix is reserved and must have the URI "http://www.w3.org/XML/1998/namespace"..The "xmlns" prefix is reserved for use by XML.gThe xml namespace URI (http://www.w3.org/XML/1998/namespace) must only be assigned to the prefix "xml".PAYThe xmlns namespace URI (http://www.w3.org/2000/xmlns/) is reserved and must not be used.SC_E_SC*Exceeded maximum depth of nested elements.-Exceeded maximum number of entity expansions.WR_E_WR>WR_E_NONWHITESPACE: writer: specified string is not whitespace^WR_E_NSPREFIXDECLARED: writer: namespace prefix is already declared with a different namespaceOWR_E_NSPREFIXWITHEMPTYNSURI: writer: cannot use prefix with empty namespace URI4WR_E_DUPLICATEATTRIBUTE: writer: duplicate attributeFWR_E_XMLNSPREFIXDECLARATION: writer: can not redefine the xmlns prefixdWR_E_XMLPREFIXDECLARATION: writer: xml prefix must have the http://www.w3.org/XML/1998/namespace URI~WR_E_XMLURIDECLARATION: writer: xml namespace URI (http://www.w3.org/XML/1998/namespace) must be assigned only to prefix 'xml'vWR_E_XMLNSURIDECLARATION: writer: xmlns namespace URI (http://www.w3.org/2000/xmlns/) is reserved and must not be used;WR_E_NAMESPACEUNDECLARED: writer: namespace is not declaredpWR_E_INVALIDXMLSPACE: writer: invalid value of xml:space attribute (allowed values are 'default' and 'preserve')`WR_E_INVALIDACTION: writer: performing the requested action would result in invalid XML documentVWR_E_INVALIDSURROGATEPAIR: writer: input contains invalid or incomplete surrogate pairCUnexpected character in character entity. Expected a decimal digit.GUnexpected character in character entity. Expected a hexadecimal digit.?The Unicode value of the specified character entity is invalid.Invalid encoding.Unspecified XML error.internetClientprivateNetworkClientServerInvalid sessionId format#Could not navigate to specified urlGUID creation failedGUID string conversion failed!Could not find installation of IE6Current version of IE is not supported by IE WebDriverMJSON format error: For %1 command, %2 object must contain pair with name "%3"HJSON format error: For %1, pair with name "%2" must have %s as its value%Could not load IE WebDriver interfaceSession does not exist:Command must be handled by WebDriver Manager not IE window0Could not allocate memory for required operation
Parsing errorCould not initialize parser'Could not meet required capability "%1"5JSON format error: command string must begin with "{"PACould not start IE instanceUnknown commandInternal Error&IWebBrowser2 command failed to executeUnknown locatorLocator not implementedWebDriver id creation failedCould not get list of anchors!Anchor collection cache not builtCould not get element by id/Could not get list of elements by css selectors?Action could not be performed on element, element not displayedOAction could not be performed on element, element completely obscured from view+Could not determine if element is displayed*Could not determine if element is obscuredCould not click element*Could not determine if element is selected:An error occurred while executing user supplied JavaScript{"message":"%1"}YAn element command failed because the referenced element is no longer attached to the DOMHAn unknown error occurred in the remote end while processing the command#Could not get screenshot of element!Width and height are out of rangeLocator strategy required5Action could not be performed, window is not in focus$Could not get IWebBrowser2 interfaceOJSON format error: For all commands, %1 object must contain pair with name "%2"VJSON format error: For all commands, pair with name "%1" must have a null as its valueXJSON format error: For all commands, pair with name "%1" must have a string as its valueYJSON format error: For all commands, pair with name "%1" must have an object as its valueVJSON format error: For %1 command, pair with name "%2" must have an array as its valueTJSON format error: For %1 command, pair with name "%2" must have a bool as its valuePAUJSON format error: For %1 command, pair with name "%2" must have a float as its valueXJSON format error: For %1 command, pair with name "%2" must have an integer as its valueTJSON format error: For %1 command, pair with name "%2" must have a null as its valueWJSON format error: For %1 command, pair with name "%2" must have an object as its valueVJSON format error: For %1 command, pair with name "%2" must have a string as its valueunknownEmulate IE9Emulate IE8Emulate IE7Not SetQuirks
IE7 Standards
IE8 Standards
IE9 StandardsVia F12 developer toolbarVia X-UA-compatible meta tagVia X-UA-compatible HTTP header%Via local compatibility view settingsVia compatibility view listVia web platform versioning#Via intranet compatibility settingsFXMLHttpRequest for <0s> required Cross Origin Resource Sharing (CORS).0XMLHttpRequest for <0s> required CORS preflight.<Origin <0s> not found in Access-Control-Allow-Origin header.YWildcard in Access-Control-Allow-Origin not allowed when credentials flag is set to true.pCredentials flag was set to true, but Access-Control-Allow-Credentials was not present or was not set to "true".MRequest header <0s> was not present in the Access-Control-Allow-Headers list.MRequest method <0s> was not present in the Access-Control-Allow-Methods list.BXMLHttpRequest for <0s> caused a response headers parsing failure.6Redirects are not allowed for CORS preflight requests.&Redirect was blocked for CORS request.PAOMultiple Access-Control-Allow-Origin headers are not allowed for CORS response.TMultiple Access-Control-Allow-Credentials headers are not allowed for CORS response.PAMUnexpected character at start of numeric character reference. Expected [0-9].jUnexpected character at start of hexadecimal numeric character reference. Expected [0-9], [a-f], or [A-F].7Character reference is missing an ending semicolon ";".BNumeric character reference does not resolve to a valid character.'Unrecognized named character reference.CInvalid character: U+0000 NULL. Null characters should not be used.>Invalid tag start: "<?". Question marks should not start tags.8Invalid tag name. First character should match [a-zA-Z].4Invalid end tag "</>". End tags should not be empty.YInvalid attribute name character. Attribute names should not contain ("),('),(<), or (=).jInvalid unquoted attribute value. Unquoted attribute values should not contain ("), ('), (<), (=), or (`).Unexpected end of file.6Malformed comment. Comments should start with "<!-- ".2Unexpected character: U+003E GREATER-THAN SIGN (>)1Unexpected character: U+0021 EXCLAMATION MARK (!)-Unexpected character: U+002D HYPHEN-MINUS (-)4Unexpected character in comment end. Expected "-->".?Empty DOCTYPE. The shortest valid doctype is "<!DOCTYPE html>". Unexpected character in DOCTYPE.=Unexpected keyword in DOCTYPE. Expected "PUBLIC" or "SYSTEM".IUnexpected quote after "PUBLIC" or "SYSTEM" keyword. Expected whitespace.:Malformed end tag. End tags should not contain attributes._Malformed start tag. A self closing slash should be followed by a U+003E GREATER-THAN SIGN (>).BMalformed start tag. Attributes should be separated by whitespace.Invalid characterPA8Tag cannot be self-closing. Use an explicit closing tag.Unexpected end of file.VUnexpected DOCTYPE. Only one DOCTYPE is allowed and it must occur before any elements.Unexpected start tag.Unexpected end tag.Unexpected character token.Unexpected token.FUnexpected character: U+0000 NULL. Null characters should not be used.Unmatched end tag.Unmatched end tag.Required nodes not in scope.>Unexpected head-level element encountered outside of "<head>".PAUnmatched end tag.JExtra "<html>" tag found. Only one "<html>" tag should exist per document.JExtra "<body>" tag found. Only one "<body>" tag should exist per document.dFound "<frameset>" too far down in the document. This tag should occur before a "<body>" is created.fInvalid nesting. A header tag such as "<h1>" or "<h2>" should not be placed within another header tag.MInvalid nesting. A "<form>" tag should not be placed within another "<form>".QInvalid nesting. A "<button>" tag should not be placed within another "<button>".HInvalid nesting. An "<a>" tag should not be placed within another "<a>".SUnexpected start tag: The "<isindex>" element is deprecated and should not be used.gUnexpected "</body>" or end of file. All open elements should be closed before the end of the document.8Invalid end tag: "</br>". Use "<br>" or "<br/>" instead.aOverlapping end tag. Tags should be structured like "<b><i></i></b>" instead of "<b><i></b></i>".OInvalid HTML5 DOCTYPE. Consider using the interoperable form "<!DOCTYPE html>".>Unexpected HTML tag found inside foreign content (MathML/SVG).MInvalid nesting. A "<nobr>" tag should not be placed within another "<nobr>".KDOCTYPE expected. Consider adding a valid HTML5 doctype: "<!DOCTYPE html>".:Unexpected "<image>" in HTML content. Use "<img>" instead.VInvalid xmlns:xlink attribute value. The value must be "http://www.w3.org/1999/xlink".{Text found within a structural table element. Table text may only be placed inside "<caption>", "<td>", or "<th>" elements._Invalid xmlns attribute value. For SVG elements the value must be "http://www.w3.org/2000/svg".jInvalid xmlns attribute value. For MathML elements the value must be "http://www.w3.org/1998/Math/MathML".Diagnostics Script EnginePA'Text Track: Invalid timestamp. hr=<0x>.#Text Track: Out of memory. hr=<0x>.&Text Track: Unexpected error. hr=<0x>.'Text Track: Unknown MIME type. hr=<0x>.3WebVTT Text Track: Unexpected end of file. hr=<0x>.3WebVTT Text Track: Invalid file signature. hr=<0x>.SWebVTT Text Track: Expect 2 or more line terminators after file signature. hr=<0x>.@WebVTT Text Track: Timestamp signature should be '-->'. hr=<0x>.CWebVTT Text Track: Expect 2 line terminators after Cue Id. hr=<0x>.PWebVTT Text Track: Unexpected error when trying to find a Cue to parse. hr=<0x>.2WebVTT Text Track: Unexpected empty line. hr=<0x>.@WebVTT Text Track: Whitespace error in Cue's timestamp. hr=<0x>.SWebVTT Text Track: Unexpected error when trying to find cue text to parse. hr=<0x>.8TTML Text Track: Unexpected ttp:tickRate value. hr=<0x>.9TTML Text Track: Unexpected ttp:frameRate value. hr=<0x>.PACTTML Text Track: Unexpected ttp:frameRateMultiplier value. hr=<0x>.hTTML Text Track: Unexpected element encountered - this includes element with invalid namespace. hr=<0x>.8TTML Text Track: Unmatched element encountered. hr=<0x>.6TTML Text Track: Error in processing styling. hr=<0x>.FTTML Text Track: Invalid XML encountered. XmlLite error code is: <0x>.PAAUDIO/VIDEO: Unknown MIME type.PA<0s>INVALID_ENUM: <0s>INVALID_VALUE: <0s>INVALID_OPERATION: <0s>OUT_OF_MEMORY: <0s>CONTEXT_LOST_WEBGL: <0s>#INVALID_FRAMEBUFFER_OPERATION: <0s>;Too many errors encountered - no more errors will be loggedPA<0s>: Invalid draw mode.-<0s>: Shader attachment already has a shader.:<0s>: Uniform type does not match type declared in shader.1<0s>: Uniform size does not match uniform method.<0s>: Invalid blend function<0s>: Invalid blend equation=<0s>: Desired resource size is greater than max texture size.&<0s>: Viewport size cannot be negative<0s>: Negative count or offset.?<0s>: Bound element array too small for given count and offset.G<0s>: Invalid byte offset for UNSIGNED_SHORT (must be a multiple of 2).-<0s>: Must have element array buffer binding.^<0s>: A uniform in both the vertex and fragment shaders has the same name but different types. <0s>: Invalid buffer target enum0<0s>: Buffer already bound to a different targetPA<0s>: Invalid buffer usage enum<0s>: Invalid shader type*<0s>: Cannot compile shader without source<0s>: Invalid mask bits*<0s>: Cannot have negative height or width<0s>: Insufficient buffer sizeS<0s>: Only the exact combination of RGBA format and UNSIGNED_BYTE type is supported2<0s>: This context does not have a current program)<0s>: Cannot have negative start or count!<0s>: Parameter outside of bounds<0s>: Program not linked1<0s>: Variable is not part of the current program+<0s>: Near value cannot be greater than farF<0s>: Cannot be less than 0 or greater than maximum number of textures+<0s>: Invalid or unsupported texture target<0s>: A texture must be bound<0s>: Invalid format<0s>: Invalid type'<0s>: Format must match internal format)<0s>: Invalid format and type combination&<0s>: Level of detail outside of range<0s>: Invalid internal format<0s>: Border must be 0X<0s>: Texture height and width cannot be negative and cannot exceed maximum texture size#<0s>: An enabled buffer is required+<0s>: Only UNSIGNED_SHORT type is supported!<0s>: Cannot have negative stride1<0s>: Vertex attribute size must be 1, 2, 3, or 4<0s>: A buffer must be bound+<0s>: Invalid or unsupported precision type!<0s>: Shader needs to be compiledF<0s>: Cannot be less than 0 or greater than maximum number of texturesPA4<0s>: Start or count goes past the end of the buffer?<0s>: The provided parameters overflow with the provided buffer!<0s>: WebGLShader object expected"<0s>: WebGLProgram object expected5<0s>: Typed array type and pixel data type must match1<0s>: Typed array expected for pixel data storage;<0s>: Only RGBA format and UNSIGNED_BYTE type are supported.<0s>: The data for this image is not available*<0s>: This texture source is not supported#<0s>: Texture filter not recognized&<0s>: Texture wrap mode not recognized<0s>: Cull mode not recognized<0s>: Vertex shader required<0s>: Fragment shader required/<0s>: Buffer size does not align with data typeC<0s>: WebGL object is associated with another WebGLRenderingContext8<0s>: Invalid parameter name for renderbuffer attachment!<0s>: Invalid renderbuffer target <0s>: Invalid framebuffer target!<0s>: A framebuffer must be bound"<0s>: A renderbuffer must be bound5<0s>: Mipmap level must be 0 when attaching a texture]<0s>: Renderbuffer width and height cannot be negative and cannot exceed maximum texture size?<0s>: Attachment type must be compatible with attachment object<0s>: No attachments present+<0s>: Unsupported framebuffer configuration1<0s>: Attachments do not have the same dimensions<0s>: Invalid attachment type:<0s>: Renderbuffer width and height must be greater than 0)<0s>: Invalid renderbuffer internalformat*<0s>: Enum <1s> is not currently supported$<0s>: Method not currently supportedPA5<0s>: The image element does not have a src specified5<0s>: The texture source violates domain restrictionsF<0s>: The texture is a non-power-of-two texture or not mipmap complete*<0s>: The current cube map is not completeG<0s>: The specified dimensions are outside of the bounds of the texture<0s>: All statically used varying variables in fragment shader need a corresponding variable of the same type in the vertex shader<0s>: Internal linker error7<0s>: Object cannot be used because it has been deleted6<0s>: Attributes that begin with 'gl_' are not allowedn<0s>: Variables of different sampler types within a program object cannot point to the same texture image unitO<0s>: Number of samplers defined in program exceeds the limit for this hardware?<0s>: Complexity for at least one shader exceeds allowed limitsM<0s>: Vertex attribute assignment has insufficient space for matrix attribute?<0s>: TEXTURE_MAX_ANISOTROPY must be greater than or equal to 1,<0s>: Unpack alignment must be 1, 2, 4, or 8b<0s>: Passed in texture target and format must match the one originally used to define the texture8<0s>: Each cubemap face must have equal width and height^<0s>: Texture is not cubemap complete. All cubemaps faces must be defined and be the same sizeE<0s>: Shader to be detached must be currently attached to the program[<0s>: Compressed texture dimensions must exactly match the dimensions of the data passed inB<0s>: Width, height, and offset parameters must be a multiple of 4:<0s>: Compressed textures do not support mipmap generationC<0s>: Compressed textures cannot be set as framebuffer destinationsT<0s>: bufferData must be passed a size or an array. Null and undefined are not valid?<0s>: bufferSubData expects an array. Null is not a valid value*<0s>: Data must be passed in a typed arrayD<0s>: Offset and stride must be a multiple of the passed in datatypeO<0s>: Floating point textures require NEAREST or NEAREST_MIPMAP_NEAREST filtersW<0s>: internal format must contain a subset of the currently bound framebuffer's formatc<0s>: Stencil reference and mask values must be the same for front facing and back facing triangles7<0s>: Context attribute <1s> is not currently supported8<0s>: Maximum varying vector count exceeded at link time@<0s>: At least one enabled attribute must have a divisor or zeroPA5<0s>: Primcount must be greater than or equal to zero`<0s>: Passed in texture format and type must match the one originally used to define the texture><0s>: Location lengths must not be greater than 256 charactersG<0s>: Vertex attributes and fragment uniforms cannot have the same nameN<0s>: Attributes that begin with 'gl_', 'webgl_', or '_webgl_' are not allowedo<0s>: Current hardware does not support having more than 65536 number of triangles in drawArrays. Call ignored.<0s>: CONSTANT_COLOR (or ONE_MINUS_CONSTANT_COLOR) and CONSTANT_ALPHA (or ONE_MINUS_CONSTANT_ALPHA) cannot be used together as source and destination factors in the blend function.M<0s>: SRC_ALPHA_SATURATE is not allowed as a blend function on your hardware.@<0s>: Only UNSIGNED_SHORT and UNSIGNED_BYTE types are supported.N<0s>: Only UNSIGNED_SHORT, UNSIGNED_BYTE and UNSIGNED_INT types are supported.@<0s>: Current hardware does not support SAMPLE_ALPHA_TO_COVERAGE><0s>: Destination blending factor cannot be SRC_ALPHA_SATURATE@GPU reset detected. Temporarily switching to software rendering.dWebGL content is taking too long to render on your GPU. Temporarily switching to software rendering.ETemporarily switching to software rendering to display WebGL content.PABack to %s (Alt+Left)Forward to %s (Alt+Right)BackForwardCurrent PagePA"Object doesn't support this actionArgument not optional)Assignment to read-only field or propertyInvalid calling objectInvalid calling objectInvalid calling objectAdd to dictionaryIgnoreStop correcting %1%2%1Delete repeated wordLanguageMoreManage settings...Manage language...PA/You must enter text with %d or fewer characters"Please enter a value greater than Please enter a value less than (You must enter a value between %1 and %2You must enter a valid valueYou must enter a valid URL$You must enter a valid email addressThis is a required fieldYou must select this checkboxYou must choose an optionYou must choose a file%You must choose an item from the listYou must use this format: %You must enter a URL in this format: 0You must enter an email address in this format: Caps Lock is onPA     <div style='color: #2a2a2a'>    <div style='position: fixed;                 top: 10.2px;                 left: 0px;                 border: solid 1px #2a2a2a;                 padding: 15px 20px 15px 15px;                 margin: 0px;                 font-size: 11pt;                 line-height: 15pt;                 color: #1a1a1a;                 min-width: 150px;                 max-width: 320px;'                 unselectable='on'                 id='contentContainer'>     </div>     <svg style='position: fixed; top: 0.5px; left: 15px' unselectable='on'>         <line x1='19.3' y1='10' x2='0.7' y2='10' stroke='window' stroke-width='2px' stroke-linecap='round'/>         <line x1='0' y1='10' x2='10' y2='0' stroke='currentColor' stroke-width='1px' stroke-linecap='round'/>         <line x1='10' y1='0' x2='20' y2='10' stroke='currentColor' stroke-width='1px' stroke-linecap='round'/>     </svg>    </div>PAWindowsWindows needs an update[Get the required update online, install it on your computer, and then use this application.
Get updateCancelUnable to add dynamic content '<0s>'. A script attempted to inject dynamic content, or elements previously modified dynamically, that might be unsafe. For example, using the innerHTML property to add script or malformed HTML will generate this exception. Use the toStaticHTML method to filter dynamic content, or explicitly create elements and attributes with a method such as createElement.  For more information, see http://go.microsoft.com/fwlink/?LinkID=247104.	Next pagePA
Preloading %1PACopyCutUndoPaste
Select allReport as safeContinue anywayCloseHosted by %1

,This web content has been reported as unsafe%1

%2

This web content has been reported to Microsoft and might contain threats to your PC that could expose your personal or financial info.Fhttp://go.microsoft.com/fwlink/?LinkID=109695&result=block&t=%1&URL=%2PAcommentsocialsharebar	sharetool
share-toolcontrolscontrolmboxdefaultbuttonsbuttonsharehiddenhideleft-ear	right-earadPAad_widget	nocontent
nocontentspromo_holderpromo-componentplaygoogleadsky_addapifbylinetitle	liveblog_sidebarfeedmaplogofiled undervotes:related stories
related posts	copyright&copy;
subscribe nowrelated articlesmore on:-| UU%'	C	-	A	e	P	OqFtt	Z++	Y	X.	C	-	V-.	.\	A	e
	P	OqF
C
V
 k
F
Pr	B4	U?	I8
B4
U?
I8
Z	 
j	E	L!	Q
N	L	SF	FCKL	X.	C	-	V-.
 kr	Z++	YA	X.	C	-	V-.
 kr	Z++	YAeeFC	SFFC
CFC
C
V
 k
F
Pr	B4	U?	I8
B4
U?
I8
Z	 
j	E	L!	Q
N	L	SF	FCKL
CFC
C
V
 k
F
Pr	B4	U?	I8
B4
U?
I8
Z	 
j	E	L!	Q
N	L	SF	FC	HI	GKL 	M	&	(	$		%	#		'	%	'	%	'	k			m		T	K	J	U	A	Z	
		 	M	&	(	$		%	#		'	%	'	%	'	k			m		T	K	J	U	A	Z	
			11p0011PP(`,҄$Response Time

Start

Stop

Info

 Information

8Microsoft-IEResp-MSHTML

8Microsoft-IE-JSDumpHeap

$Microsoft-IE

(capturing phase

at target

(bubbling phase

 setTimeout

 setInterval

$setImmediate

4requestAnimationFrame

,telephone number

None

,HostConfiguration

$LoadFromInfo

$MissingAnchor

8ScrollingToFoundAnchor

0ScrollingToPosition

4BookmarkTaskComplete

$SwitchMarkup

4ContinuationHostRules

@ContinuationIncompletePaint

0LoadStatusParseDone

4SwitchMarkupEmptyTab

@LoadStatusParseDoneEmptyTab

Unknown

$CanvasElement

$CanvasPattern

(CanvasGradient

Markup

Blob

ActiveX

$ImageElement

,MSWebViewElement

,WebGLSmallObjects

,WebGLLargeObjects

$MediaElement

None

 Concurrent

 Synchronous

None

Forced

 TotalWeight

 TotalCount

NewWeight

NewCount

Normal

 Concurrent

,default canceled

Dimmediate propagation stopped

0propagation stopped

0Child List Changed

,Attribute Changed

8Character Data Changed

4VS_VERSION_INFOL%L%?StringFileInfo040904B0LCompanyNameMicrosoft Corporation\FileDescriptionMicrosoft (R) HTML Viewer3FileVersion11.00.9600.19597 (winblue_ltsb_escrow.191216-1311).InternalNameMSHTML.LegalCopyright Microsoft Corporation. All rights reserved.FOriginalFilenameMSHTML.DLL.MUIDProductNameInternet ExplorerFProductVersion11.00.9600.19597(OleSelfRegisterDVarFileInfo$Translation	<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 40 50" xml:space="preserve">
<g id="arrow-up">
	<rect x="3" fill="#406274" width="1" height="1"/>
	<rect x="2" y="1" fill="#3C5E72" width="1" height="1"/>
	<rect x="3" y="1" fill="#569BC0" width="1" height="1"/>
	<rect x="4" y="1" fill="#5F88A1" width="1" height="1"/>
	<rect x="1" y="2" fill="#3C596C" width="1" height="1"/>
	<rect x="2" y="2" fill="#6195B6" width="1" height="1"/>
	<rect x="3" y="2" fill="#86C8EB" width="1" height="1"/>
	<rect x="4" y="2" fill="#91CBEC" width="1" height="1"/>
	<rect x="5" y="2" fill="#9AB6C5" width="1" height="1"/>
	<rect y="3" fill="#435F6F" width="1" height="1"/>
	<rect x="1" y="3" fill="#87B1C5" width="1" height="1"/>
	<rect x="2" y="3" fill="#BAE2F4" width="1" height="1"/>
	<rect x="3" y="3" fill="#B5DDF2" width="1" height="1"/>
	<rect x="4" y="3" fill="#C4E3F4" width="1" height="1"/>
	<rect x="5" y="3" fill="#CAE6F5" width="1" height="1"/>
	<rect x="6" y="3" fill="#C3E4F5" width="1" height="1"/>
</g>
<g id="arrow-down">
	<rect x="13" y="3" fill="#406274" width="1" height="1"/>
	<rect x="12" y="2" fill="#3C5E72" width="1" height="1"/>
	<rect x="13" y="2" fill="#569BC0" width="1" height="1"/>
	<rect x="14" y="2" fill="#5F88A1" width="1" height="1"/>
	<rect x="11" y="1" fill="#3C596C" width="1" height="1"/>
	<rect x="12" y="1" fill="#6195B6" width="1" height="1"/>
	<rect x="13" y="1" fill="#86C8EB" width="1" height="1"/>
	<rect x="14" y="1" fill="#91CBEC" width="1" height="1"/>
	<rect x="15" y="1" fill="#9AB6C5" width="1" height="1"/>
	<rect x="10" fill="#435F6F" width="1" height="1"/>
	<rect x="11" fill="#87B1C5" width="1" height="1"/>
	<rect x="12" fill="#BAE2F4" width="1" height="1"/>
	<rect x="13" fill="#B5DDF2" width="1" height="1"/>
	<rect x="14" fill="#C4E3F4" width="1" height="1"/>
	<rect x="15" fill="#CAE6F5" width="1" height="1"/>
	<rect x="16" fill="#C3E4F5" width="1" height="1"/>
</g>
<g id="plus">
	<rect x="1" y="11" fill="#FCFCFC" width="7" height="4"/>
	<rect x="1" y="15" fill="#EBEBEA" width="7" height="1"/>
	<rect x="1" y="16" fill="#E0E0E0" width="7" height="2"/>
	<path fill="none" stroke="#000000" stroke-opacity="0.5" stroke-miterlimit="10" d="M8.5,17.5c0,0.5-0.4,1-1,1h-6c-0.6,0-1-0.5-1-1v-6c0-0.6,0.4-1,1-1h6
		c0.6,0,1,0.4,1,1V17.5z"/>
	<line fill="none" stroke="#213867" stroke-miterlimit="10" x1="4.5" y1="17" x2="4.5" y2="12"/>
	<line fill="none" stroke="#40589E" stroke-miterlimit="10" x1="2" y1="14.5" x2="7" y2="14.5"/>
</g>
<g id="minus">
	<rect x="11" y="11" fill="#FCFCFC" width="7" height="4"/>
	<rect x="11" y="15" fill="#EBEBEA" width="7" height="1"/>
	<rect x="11" y="16" fill="#E0E0E0" width="7" height="2"/>
	<path fill="none" stroke="#000000" stroke-opacity="0.5" stroke-miterlimit="10" d="M18.5,17.5c0,0.5-0.5,1-1,1h-6c-0.6,0-1-0.5-1-1v-6c0-0.6,0.4-1,1-1
		h6c0.5,0,1,0.4,1,1V17.5z"/>
	<line fill="none" stroke="#40589E" stroke-miterlimit="10" x1="12" y1="14.5" x2="17" y2="14.5"/>
</g>
<g id="search-hover">
	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3535" y1="32.707" x2="26.3535" y2="20">
		<stop offset="0" style="stop-color:#1784CE"/>
		<stop offset="0.3023" style="stop-color:#1A87D0"/>
		<stop offset="0.5451" style="stop-color:#2490D4"/>
		<stop offset="0.7671" style="stop-color:#359FDC"/>
		<stop offset="0.9756" style="stop-color:#4DB5E7"/>
		<stop offset="1" style="stop-color:#50B8E9"/>
	</linearGradient>
	<path fill="url(#SVGID_1_)" d="M27.7,20c-2.8,0-5,2.2-5,5c0,1,0.3,2,0.8,2.8L20,31.3l1.4,1.4l3.5-3.5c0.8,0.5,1.7,0.8,2.8,0.8
		c2.8,0,5-2.2,5-5S30.5,20,27.7,20z M27.7,28c-1.7,0-3-1.3-3-3s1.3-3,3-3s3,1.3,3,3S29.4,28,27.7,28z"/>
</g>
<g id="search">
	<path fill="#8A8A8A" d="M7.7,20c-2.8,0-5,2.2-5,5c0,1,0.3,2,0.8,2.8L0,31.3l1.4,1.4L5,29.2C5.7,29.7,6.7,30,7.7,30c2.8,0,5-2.2,5-5
		S10.5,20,7.7,20z M7.7,28c-1.7,0-3-1.3-3-3s1.3-3,3-3s3,1.3,3,3S9.4,28,7.7,28z"/>
</g>
<g id="x">
	<polygon fill="#8A8A8A" points="8.7,41.7 7.3,40.3 4.5,43.1 1.7,40.3 0.3,41.7 3.1,44.5 0.3,47.3 1.7,48.7 4.5,45.9 7.3,48.7 
		8.7,47.3 5.9,44.5 "/>
</g>
<g id="x-hover">
	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="24.207" y1="48.707" x2="24.207" y2="40.293">
		<stop offset="0" style="stop-color:#EF2122"/>
		<stop offset="0.2728" style="stop-color:#F02425"/>
		<stop offset="0.4919" style="stop-color:#F12E2F"/>
		<stop offset="0.6923" style="stop-color:#F43F40"/>
		<stop offset="0.8805" style="stop-color:#F95757"/>
		<stop offset="1" style="stop-color:#FC6A6A"/>
	</linearGradient>
	<polygon fill="url(#SVGID_2_)" points="28.4,41.7 27,40.3 24.2,43.1 21.4,40.3 20,41.7 22.8,44.5 20,47.3 21.4,48.7 24.2,45.9 
		27,48.7 28.4,47.3 25.6,44.5 "/>
</g>
</svg>
PAD<HTML>
<HEAD>
<BODY bgcolor="#000080" text="#FFFFFF">
</BODY>
</HTML>PADp {
    margin: 20px 0px;
}
.sprite {
    display: inline-block;
    margin-right: 6px;
    cursor: pointer;
    width: 10px;
    height: 10px;
}
.plus {
    background: url('about-compat-icons.svg') no-repeat;
    background-position: 0px -15px;
    background-size: 40px 60px;
}
.minus {
    background: url('about-compat-icons.svg') no-repeat;
    background-position: -10px -15px;
    background-size: 40px 60px;
}
.up {
    background: url('about-compat-icons.svg') no-repeat;
    background-position: 0px 0px;
    background-size: 40px 60px;
    position: absolute;
    left: 50%;
    margin-left: -5px;
    top: 2px;
}
th {
    position: relative;
}
.down {
    background: url('about-compat-icons.svg') no-repeat;
    background-size: 40px 60px;
    background-position: -10px 0px;
    position: absolute;
    left: 50%;
    margin-left: -5px;
    top: 2px;
}
.collapsible-row {
    background: linear-gradient(#fff, #e8f1fb);
}
.applied-row td:nth-child(2):after {
    content: " (applied)";
}
.last-sub-row {
    border-bottom: 1px solid #e8f1fb;
}
.sub-row {
    background: white !important;
    opacity: 0.6;
}
.table {
    border: 1px solid #e8f1fb;
}
#wrap {
    height: 1000px;
    overflow-x:scroll;
}
#aboutcompat-description, #filters {
    max-width: 30rem;
}
.sub-list {
    font-size: 0.6875rem;
    color: rgba(0,0,0,0.6);
    line-height: 1;
    display:  block;
    margin-top: 4px;
}
.sortable-column {
    cursor: pointer;
    background: linear-gradient(to bottom,  #f2f9fc 0%,#f2f9fc 40%,#e1f1fa 41%,#d8ecf6 100%) !important;
    border: 1px solid #96d9f9 !important;
}
.list-name {
    font-weight: 600;
}
@media (min-width: 700px) {
    .table-section {
        float: left;
        width: calc(100% - 18rem);
    }
    #filters {
        float: right;
        width: 15rem;
    }
}
.invisible {
    display: none;
}PADvar table;

function updateCountOfResults() {
    'use strict';
    document.getElementById("SitesCount").innerHTML = "Included sites (" + table.countOfResults() + " number of results)";
}

function createTable(arrayObj) {
    'use strict';

    var columns = [
        new Column('Domain', 'Domain', '16em', true, true),
        new Column('List Type', 'SiteLists', '6.875em', true),
        new Column('Document Mode', 'DocMode', '6.875em', true),
        new Column('User Agent String', 'UaString', '18.75em', true),
        new Column('Additional Attributes', 'AdditionalAttributes', '12em', true),
        new Column('Enterprise Mode', 'IsEMIE', '6em', document.getElementById('checkbox-emie').checked),
        new Column('Open in Microsoft Edge', 'Transition', '6em', document.getElementById('checkbox-openedge').checked),
        new Column('Minimum layout width', 'Min', '6em', document.getElementById('checkbox-min').checked),
        new Column('Exclude from back forward cache', 'Exclude', '6em', document.getElementById('checkbox-exclude').checked),
        new Column('Override X-UA-Compatible Meta tag', 'OverrideXUA', '6em', document.getElementById('checkbox-overridexua').checked),
        new Column('Create Element with Markup', 'CreateElementMarkup', '6em', document.getElementById('checkbox-cem').checked),
        new Column('No HTTP2', 'NoHTTP2', '6em', document.getElementById('checkbox-nohttp2').checked),
        new Column('Enable UTF8 Query String', 'UTF8QS', '6em', document.getElementById('checkbox-utf8qs').checked),
        new Column('No Pre-render', 'NoPrerender', '6em', document.getElementById('checkbox-noprerender').checked),
        new Column('Allow SSL3 Fallback', 'SSL3Fallback', '6em', document.getElementById('checkbox-ssl3fallback').checked),
        new Column('No HSTS', 'NoHSTS', '6em', document.getElementById('checkbox-nohsts').checked),
        new Column('Disable Pointer Events', 'NoPointer', '6em', document.getElementById('checkbox-nopointer').checked),
    ];
    table = new GridTable('mainTable', arrayObj, 35, columns, "wrap");
    updateCountOfResults();
}

function getDomainFromArray(arrayObj, url) {
    'use strict';
    var i;
    for (i = 0; i < arrayObj.length; i++) {
        if (arrayObj[i].Domain === url) {
            return arrayObj[i];
        }
    }
    return null;
}

function loadJSON(arrayObj, apiResponse, listName) {
    'use strict';
    var i, jsonItem, DomainEntry, jsonObj;

    if (apiResponse && apiResponse.length > 0) {
        jsonObj = JSON.parse(apiResponse);
        for (i = 0; jsonObj.data && i < jsonObj.data.length; i++) {
            jsonItem = jsonObj.data[i];
            if (jsonItem.site) {
                DomainEntry = getDomainFromArray(arrayObj, jsonItem.site);
                if (DomainEntry !== null) {
                    DomainEntry.add(jsonItem, listName);
                } else {
                    arrayObj.push(new DomainRowEntry(jsonItem, listName, true));
                }
            }
        }
    }
}

function changeVisibilityOfElementWithId (id, condition) {
   'use strict';
   if(condition) {
       document.getElementById(id).className = "invisible";
   }
   else {
       document.getElementById(id).className = "";
   }
}

function updateAttributeVisibility() {
    'use strict';
    changeVisibilityOfElementWithId("li-exclude",           !GlobalAttributeTracker.IsExcludePresent);
    changeVisibilityOfElementWithId("li-overridexua",       !GlobalAttributeTracker.IsOverrideXUAPresent);
    changeVisibilityOfElementWithId("li-cem",               !GlobalAttributeTracker.IsCreateElementMarkupPresent);
    changeVisibilityOfElementWithId("li-emie",              !GlobalAttributeTracker.IsEMIEPresent);
    changeVisibilityOfElementWithId("li-openedge",          !GlobalAttributeTracker.IsTransitionPresent);
    changeVisibilityOfElementWithId("li-min",               !GlobalAttributeTracker.IsMinPresent);
    changeVisibilityOfElementWithId("li-nohttp2",           !GlobalAttributeTracker.IsNoHTTP2Present);
    changeVisibilityOfElementWithId("li-utf8qs",            !GlobalAttributeTracker.IsUTF8QSPresent);
    changeVisibilityOfElementWithId("li-noprerender",       !GlobalAttributeTracker.IsNoPrerenderPresent);
    changeVisibilityOfElementWithId("li-ssl3fallback",      !GlobalAttributeTracker.IsSSL3FallbackPresent);
    changeVisibilityOfElementWithId("li-nohsts",            !GlobalAttributeTracker.IsNoHSTSPresent);
    changeVisibilityOfElementWithId("li-nopointer",         !GlobalAttributeTracker.IsNoPointerPresent);
}

function createData() {
    'use strict';
    var localEmieData, emieData, localCVData, cvData;
    document.getElementById('search-box').value = "";

    // reset value of global object tracking which attributes are used
    GlobalAttributeTracker = new G_AttributeTracker();
    
    var arrayObj = [];
    if (document.getElementById("checkbox-emielist-local").checked) {
        
        try {
            localEmieData = window.external.GetEMIEListLocalData();
            loadJSON(arrayObj, localEmieData, "Enterprise Mode Site List (local)");    
        } catch(ex){
            // do nothing
        }
    }

    if (document.getElementById("checkbox-emielist").checked) {
        try {
            emieData = window.external.GetEMIEListData();
            loadJSON(arrayObj, emieData, "Enterprise Mode");
        } catch(ex){
            // do nothing
        }
    }

    if (document.getElementById("checkbox-cvlist-local").checked) {
        try {
            localCVData = window.external.GetCVListLocalData();
            loadJSON(arrayObj, localCVData, "Compatibility List (local)");
        } catch(ex){
            // do nothing
        }
    }

    if (document.getElementById("checkbox-cvlist").checked) {
        try {
            cvData = window.external.GetCVListData();
            loadJSON(arrayObj, cvData, "Compatibility List"); 
        }
         catch(ex){
            // do nothing
        }
    }
    createTable(arrayObj);
    
    // make unused list of attributes invsible
    updateAttributeVisibility();
}

function changeColumnVisibility(id, column) {
    'use strict';
    var isChecked = document.getElementById(id).checked;
    table.columnVisibility(column, isChecked);
}

function startSearch() {
    'use strict';
    var searchValue = document.getElementById('search-box').value;
    table.search(searchValue);
    updateCountOfResults();
}

function onClear() {
    'use strict';
    document.getElementById('search-box').value = "";
    startSearch();
}

window.addEventListener('load', createData);function G_AttributeTracker() {
    'use strict';
    this.IsExcludePresent = false;
    this.IsOverrideXUAPresent = false;
    this.IsCreateElementMarkupPresent = false;
    this.IsEMIEPresent = false;
    this.IsTransitionPresent = false;
    this.IsMinPresent = false;
    this.IsNoHTTP2Present = false;
    this.IsUTF8QSPresent = false;
    this.IsNoPrerenderPresent = false;
    this.IsSSL3FallbackPresent = false;
    this.IsNoHSTSPresent = false;
    this.IsNoPointerPresent = false;
}

var GlobalAttributeTracker = new G_AttributeTracker();

function DomainRowEntry(domainEntry, listName, isParent) {
    'use strict';
    this.Domain = domainEntry.site;
    this.SiteLists = listName;
    this.Section = domainEntry.section;
    this.NumberOfAttributes = 0;
    
    this.merge(domainEntry);

    this.SubRows = [];
    this.IsExpandRow = false;

    if (isParent) {
        this.SubRows.push(new DomainRowEntry(domainEntry, listName, false));
        if (this.NumberOfAttributes > 0) {
            this.IsExpandRow = true;
        }
        this.createStringForAdditionalAttributes(this.NumberOfAttributes);
    }
}

DomainRowEntry.prototype.add = function (domainEntry, listName) {
    'use strict';
    var i, j, totalAttributes = 0, hasMerged = false;

    for (j = 0; j < this.SubRows.length; j++) {
        if (listName === "Compatibility List" && this.SubRows[j].SiteLists === listName && this.SubRows[j].Section.indexOf(domainEntry.section) == -1) {
            // if domainEntry belongs to a different section of the same list then merge this with domainEntry
            this.merge(domainEntry);
            this.Section += domainEntry.section;
            // also merge the sub row
            this.SubRows[j].merge(domainEntry);
            hasMerged = true;
            break;
        } else if (listName === "Enterprise Mode" && this.SubRows[j].SiteLists === listName) {
            // if domainEntry belongs to a different section of the same list then merge this with domainEntry
            this.merge(domainEntry);
            this.SubRows[j].merge(domainEntry);
            hasMerged = true;
            break;
        }
    }

    if (!hasMerged) {
        // if the domainEntry cannot be merged then add the entry as a sub row.
        // This happens if domainEntry is from a different list or if the list has a duplicate value for the same site.
        this.SiteLists += "<span class='sub-list'>" + listName + "</span>";
        this.SubRows.push(new DomainRowEntry(domainEntry, listName, false));
    }

    // Count total number of additional attributes by adding the additional attributes for each sub row
    for (i = 0; i < this.SubRows.length; i++) {
        totalAttributes += this.SubRows[i].NumberOfAttributes;
    }

    if (this.SubRows.length > 1 || totalAttributes > 0) {
        this.IsExpandRow = true;
    }

    this.createStringForAdditionalAttributes(totalAttributes);
};

DomainRowEntry.prototype.merge = function (domainEntry) {
    'use strict';

    if (domainEntry.docMode) {
        this.DocMode = domainEntry.docMode;
    }

    if (domainEntry.uaString) {
        this.UaString = domainEntry.uaString;
    }

    if (domainEntry.exclude) {
        this.Exclude = domainEntry.exclude;
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsExcludePresent = true;
    }

    if (domainEntry.overrideXUACompatible) {
        this.OverrideXUA = domainEntry.overrideXUACompatible;
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsOverrideXUAPresent = true;
    }

    if (domainEntry.createElementWithMarkup) {
        this.CreateElementMarkup = domainEntry.createElementWithMarkup;
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsCreateElementMarkupPresent = true;
    }

    if (domainEntry.isEMIE) {
        this.IsEMIE = "IE" + this.DocMode + " Enterprise Mode";
        this.DocMode = "";
        GlobalAttributeTracker.IsEMIEPresent = true;
        this.NumberOfAttributes++;
    }

    if (domainEntry.transition == "Edge") {
        this.Transition = "true";
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsTransitionPresent = true;
    }

    if (domainEntry.min) {
        // convert number to string so that the user can do a string search on it.
        this.Min = domainEntry.min.toString();
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsMinPresent = true;
    }

    switch (domainEntry.section) {
    case "nohttp2":
        this.NoHTTP2 = "true";
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsNoHTTP2Present = true;
        break;
    case "enableutf8qs":
        this.UTF8QS = "true";
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsUTF8QSPresent = true;
        break;
    case "noprerender":
        this.NoPrerender = "true";
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsNoPrerenderPresent = true;
        break;
    case "allowssl3fallback":
        this.SSL3Fallback = "true";
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsSSL3FallbackPresent = true;
        break;
    case "nohsts":
        this.NoHSTS = "true";
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsNoHSTSPresent = true;
        break;
    case "disablepointerevents":
        this.NoPointer = "true";
        this.NumberOfAttributes++;
        GlobalAttributeTracker.IsNoPointerPresent = true;
        break;
    }
    
    // create Additional Attributes string
    this.AdditionalAttributes = "<ul>";
    
    if (this.Exclude) {
        this.AdditionalAttributes += "<li>Exclude from back forward cache: " + this.Exclude + "</li>";
    }
    
    if (this.OverrideXUA) {
        this.AdditionalAttributes += "<li>Override X-UA-Compatible Meta tag: " + this.OverrideXUA + "</li>";
    }
    
    if (this.CreateElementMarkup) {
        this.AdditionalAttributes += "<li>Create Element with Markup: " + this.CreateElementMarkup + "</li>";
    }
    
    if (this.IsEMIE) {
        this.AdditionalAttributes += "<li>Enterprise Mode: " + this.IsEMIE + "</li>";
    }
    
    if (this.Transition) {
        this.AdditionalAttributes += "<li>Open in: Microsoft Edge" + "</li>";
    }

    if (this.Min) {
        this.AdditionalAttributes += "<li>Minimum layout width: " + this.Min + "</li>";
    }
    
    if (this.NoHTTP2) {
        this.AdditionalAttributes += "<li>No HTTP2: true</li>";
    }
    
    if (this.UTF8QS) {
        this.AdditionalAttributes += "<li>Enable UTF8 Query String: true</li>";
    }
    
    if (this.NoPrerender) {
        this.AdditionalAttributes += "<li>No Pre-render: true</li>";
    }
    
    if (this.SSL3Fallback) {
        this.AdditionalAttributes += "<li>Allow SSL3 Fallback: true</li>";
    }
    
    if (this.NoHSTS) {
        this.AdditionalAttributes += "<li>No HSTS: true</li>";
    }
    
    if (this.NoPointer) {
        this.AdditionalAttributes += "<li>Disable Pointer Events: true</li>";
    }
    this.AdditionalAttributes += "</ul>";
};

DomainRowEntry.prototype.createStringForAdditionalAttributes = function (numberOfAttributes) {
    'use strict';
    if (numberOfAttributes > 0) {
        this.AdditionalAttributes = "<a>" + numberOfAttributes + " attribute";
        if (numberOfAttributes > 1) {
            this.AdditionalAttributes += "s";
        }
        this.AdditionalAttributes += "</a>";
    } else {
        this.AdditionalAttributes = "";
    }
};
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
</HTML>PA<!DOCTYPE html>
<html>
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
        <title>about:compat</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <link rel="stylesheet" type="text/css" href="global.css">
        <link rel="stylesheet" type="text/css" href="aboutcompat.css">
        <script src="table.js"></script>
        <script src="aboutcompatdata.js"></script>
        <script src="aboutcompat.js"></script>
    </head>
    <body>
        <h1>Compatibility Settings</h1>
        <p id="aboutcompat-description">Review all of the websites included in the Microsoft Compatibility List, which is updated and maintained by Microsoft, and in the Enterprise 
        Mode Site List, which if enabled is updated and maintained by your company. For more information please see our <a href="http://go.microsoft.com/fwlink/?LinkID=624361">test tools.</a></p>
        <div id="filters">
            <h3>Filter:</h3>
            <div class="search-container">
              <div class="form-group form-searchbox">
                 <form>
                    <label class="text-base" id="aboutcompat-search">Search for a website or attribute:</label>
                    <input type="text" id="search-box" name="focus" required="" class="form-control" placeholder="example.com" autocomplete="off" onkeyup="startSearch();">
                    <button class="clear-icon" type="reset" onclick="onClear();"><span class="win-icon win-icon-Clear"></span></button>
                    <span class="search-icon" onclick="startSearch();"></span>
                </form>
              </div>
            </div>

            <div class="form-group">
                <label class="text-base" id="aboutcompat-checkbox">Show websites, based on the list&nbsp;type:</label>
                <label class="text-caption-alt" id="aboutcompat-checkbox-description">Pick which Compatibility Settings List to view by clicking the boxes below.</label>
                <ul>
                    <li>
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-emielist" name="EMIE" checked onclick="createData();">
                                <span class="text-body list-name"><!--_locComment_text="{Locked}"-->Enterprise Mode Site List</span>
                                <div class="text-caption-alt" id="aboutcompat-emie-description">Sites on this list are rendered using a modified browser configuration that 
                                emulates IE8, IE7, and the IE8 - IE11 document modes to help avoid the common compatibility problems associated with web apps written and tested 
                                on an older version of Internet Explorer. If you feel that a site should be removed from the list then please contact your 
                                system administrator.</div>
                            </label>
                        </div>
                    </li>
                    <li>
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-emielist-local" name="EMIELocal" checked onclick="createData();">
                                <span class="text-body list-name"><!--_locComment_text="{Locked}"-->Enterprise Mode Site List (local)</span>
                                <div class="text-caption-alt" id="aboutcompat-emielocal-description">You added the sites on this list to your local Enterprise Mode Site List 
                                and they are rendered using IE8 Enterprise Mode. <a href="http://go.microsoft.com/fwlink/?LinkID=624359">Click here</a> to see how to remove a site from the list.</div>
                            </label>
                        </div>
                    </li>
                    <li>
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-cvlist" name="CVList" checked onclick="createData();">
                                <span class="text-body list-name"><!--_locComment_text="{Locked}"-->Microsoft Compatibility List</span>
                                <div class="text-caption-alt" id="aboutcompat-cv-description">Sites on this list, with known compatibility problems, automatically render as 
                                if you are viewing them in a previous version of Internet Explorer. To get your site removed from this list, please e-mail 
                                <a href="mailto:iepo@microsoft.com">IEPO@microsoft.com</a>.</div>
                            </label>
                        </div>
                    </li>
                    <li>
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-cvlist-local" name="CVListLocal" checked onclick="createData();">
                                <span class="text-body list-name"><!--_locComment_text="{Locked}"-->Compatibility List (local)</span>
                                <div class="text-caption-alt" id="aboutcompat-cvlocal-description">You added the sites on this list to your local Compatibility List and they 
                                are rendered using IE7 emulation. <a href="http://go.microsoft.com/fwlink/?LinkID=624360">Click here</a> to see how to remove a site from the list.</div>
                            </label>
                        </div>
                    </li>
                </ul>
            </div>

            <div class="form-group">
                <label class="text-base" id="aboutcompat-attr">Additional attributes:</label>
                <label class="text-caption-alt" id="aboutcompat-attr-description">Pick the additional attribute(s) you want to add as new columns.</label>
                <ul>
                    <li id="li-emie">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-emie" onclick="changeColumnVisibility('checkbox-emie', 'IsEMIE');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Enterprise Mode</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-openedge">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-openedge" onclick="changeColumnVisibility('checkbox-openedge', 'Transition');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Open in Microsoft Edge</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-min">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-min" onclick="changeColumnVisibility('checkbox-min', 'Min');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Minimum layout width</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-exclude">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-exclude" onclick="changeColumnVisibility('checkbox-exclude', 'Exclude');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Exclude from back forward cache</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-overridexua">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-overridexua" onclick="changeColumnVisibility('checkbox-overridexua', 'OverrideXUA');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Override X-UA-Compatible Meta tag</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-cem">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-cem" onclick="changeColumnVisibility('checkbox-cem', 'CreateElementMarkup');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Create Element with Markup</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-nohttp2">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-nohttp2" onclick="changeColumnVisibility('checkbox-nohttp2', 'NoHTTP2');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->No HTTP2</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-utf8qs">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-utf8qs" onclick="changeColumnVisibility('checkbox-utf8qs', 'UTF8QS');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Enable UTF8 Query String</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-noprerender">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-noprerender" onclick="changeColumnVisibility('checkbox-noprerender', 'NoPrerender');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->No Pre-render</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-ssl3fallback">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-ssl3fallback" onclick="changeColumnVisibility('checkbox-ssl3fallback', 'SSL3Fallback');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Allow SSL3 Fallback</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-nohsts">
                        <div class="new-nohsts">
                            <label>
                                <input type="checkbox" id="checkbox-nohsts" onclick="changeColumnVisibility('checkbox-nohsts', 'NoHSTS');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->No HSTS</span>
                            </label>
                        </div>
                    </li>
                    <li id="li-nopointer">
                        <div class="new-checkbox">
                            <label>
                                <input type="checkbox" id="checkbox-nopointer" onclick="changeColumnVisibility('checkbox-nopointer', 'NoPointer');">
                                <span class="text-body"><!--_locComment_text="{Locked}"-->Disable Pointer Events</span>
                            </label>
                        </div>
                    </li>
                </ul>
            </div>
        </div>
        <section class="section table-section">
            <header class="section-header">
                <h3 class="section-title" id="SitesCount">Section Title</h3>
            </header>
            <div class="section-body" id="wrap">
                <table class="table" id="mainTable"></table>
            </div>
        </section>
    </body>
</html>PADbody {
    margin: 0;
}
html {
    font-family: sans-serif;
    -ms-text-size-adjust: 100%;
}
h1 {
    font-size: 1rem;
    margin: .67em 0;
}
article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {
    display: block;
}
table {
    border-spacing: 0;
    border-collapse: collapse;
}
col {
    word-wrap: break-word;
}
td, th {
    padding: 0;
}
td {
    border-left: 1px solid #e8f1fb;
}
hr {
    box-sizing: content-box;
    height: 0px;
}
button, input, optgroup, select, textarea {
    color: inherit;
    font: inherit;
    margin: 0;
}
*, ::after, ::before {
    box-sizing: border-box;
}
a {
    background-color: transparent;
}
body {
    font-family: "Segoe UI","Segoe UI Web","Segoe UI Symbol","Helvetica Neue","BBAlpha Sans","S60 Sans",Arial,sans-serif;
    padding-bottom: 0.23px;
    padding-top: 0.23px;
    color: #000;
    background-color: #FFF;
}
html {
    font-size: 100%;
}
hr {
    border-top: 1px solid #888;
}
body, div, hr, html, span {
    outline: 0;
}
body {
    margin: 24px;
}
label, span, td {
    font-size: 0.81rem;
}
label {
    display: inline-block;
    max-width: 100%;
}
.text-base, .text-body, .text-caption, .text-caption-alt, .text-header, .text-headline, .text-subcaption, .text-subheader, .text-subtitle, .text-title, h1, h2, h3, h4, h5, h6, p {
    margin-top: 0px;
    margin-bottom: 0px;
    outline: 0;
    vertical-align: top;
}
h1, h2, h3, h4, h5, h6 {
    color: #003399;
    font-weight: 400;
}
.text-body, p {
    font-size: 0.81rem;
    line-height: 1.25;
    font-weight: 400;
}
p {
    margin: 24px 0;
}
.pull-right {
    float: right !important;
}
.list-unstyled, ul {
    padding-left: 0px;
    list-style: none;
}
ol, ul {
    margin: 0;
}
.pager, .pagination {
    display: inline-block;
    margin: 20px 0;
    border-radius: 4px;
}
.pager, .pagination {
    padding: 0;
}
ol li, ul li {
    margin-bottom: 20px;
}
/* @media all and (min-width:1400px) */
ol li, ul li {
    margin-bottom: 12px;
}
a {
    color: #0066CC;
    text-decoration: none;
}
a:hover {
    color: #3399FF;
    text-decoration: underline;
}
.section .section-header {
    margin-bottom: 20px;
}
table {
    background-color: transparent;
}
.table {
    width: 100%;
    max-width: 100%;
}
th {
    text-align: left;
    font-weight: 400;
}
.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {
    padding: 6px;
}
th, td {
    vertical-align: top;
}
.table > thead > tr > th {
    padding: 6px;
    background: linear-gradient(to bottom,  #ffffff 0%,#ffffff 40%,#f7f8fa 41%,#f1f2f4 100%);
    border-top: 1px solid #d5d5d5;
    border-bottom: 1px solid #d5d5d5;
    border-right: 1px solid rgba(0,0,0,0.06);
}
.text-caption, h3 {
    font-size: 0.94rem;
}
th {
    font-size: 0.81rem;
}
.section .section-title {
    display: block;
    margin-top: 0px;
    margin-bottom: 0px;
}
.form-group {
    margin-top: 20px;
    position: relative;
}
.form-group label {
    margin-top: 0px;
    margin-bottom: 8px;
}
.text-base {
    font-size: 0.93rem;
    line-height: 1.25;
    font-weight: 600;
}
.text-caption-alt, h6 {
    font-size: 0.68rem;
    line-height: 1.2727;
    font-weight: 400;
}
.new-checkbox label {
    margin-bottom: 0px;
    cursor: pointer;
}
.new-checkbox .text-caption-alt {
    margin-left: 1.5em;
}
.new-checkbox input {
    margin-top: 2px;
}
button, input, select, textarea {
    font-family: inherit;
    font-size: inherit;
}
button, input, option, progress, select, textarea {
    max-width: 100%;
    line-height: inherit;
}
.form-searchbox {
    display: block;
}
.form-control {
    display: block;
    width: 100%;
    background-image: none;
}
input[type=color], input[type=date], input[type=datetime-local], input[type=datetime], input[type=email], input[type=month], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=time], input[type=url], input[type=week], textarea {
    padding: 4px 8px;
    border-style: solid;
    border-width: 2px;
    border-color: rgba(0, 0, 0, .4);
    background-color: rgba(255,255,255,.4);
    height: 32px;
    height: 2rem;
}
input[type=color]:-ms-input-placeholder, input[type=date]:-ms-input-placeholder, input[type=datetime-local]:-ms-input-placeholder, input[type=datetime]:-ms-input-placeholder, input[type=email]:-ms-input-placeholder, input[type=month]:-ms-input-placeholder, input[type=number]:-ms-input-placeholder, input[type=password]:-ms-input-placeholder, input[type=search]:-ms-input-placeholder, input[type=tel]:-ms-input-placeholder, input[type=text]:-ms-input-placeholder, input[type=time]:-ms-input-placeholder, input[type=url]:-ms-input-placeholder, input[type=week]:-ms-input-placeholder, textarea:-ms-input-placeholder {
    color: rgba(0, 0, 0, 0.6);
}
.form-searchbox input[type=text] {
    background-color: rgba(255,255,255,.4);
    border-color: rgba(0, 0, 0, .6);
    border-width: 1px;
    color: #000;
    height: 36px;
    padding: .23px 35px .23px 12px;
}
.form-searchbox input[type=text] {
    font-size: 0.81rem;
    line-height: 1.3333;
    font-weight: 400;
}
.clear-icon, .search-icon {
    position: absolute;
    bottom: 0px;
    right: 0px;
    line-height: 0;
    margin: auto;
    text-align: center;
    color: rgba(0, 0, 0, 0.6);
    height: 20px;
    width: 20px;
    padding: 9px 0;
    font-size: 0.81rem;
    cursor: pointer;
    margin: 3px;
}
.search-icon {
    background: url('about-compat-icons.svg') no-repeat;
    background-size: 40px 60px;
    background-position: 0px -25px;
}
.search-icon:hover {
    background: url('about-compat-icons.svg') no-repeat;
    background-size: 40px 60px;
    background-position: -20px -25px;
}
.clear-icon {
    background: transparent;
    right: 37px;
    min-width: inherit;
    border: none;
    outline: 0;
    height: 30px;
}<!ENTITY Tab "&#x9;">
<!ENTITY NewLine "&#xA;">
<!ENTITY excl "&#x21;">
<!ENTITY quot "&#x22;">
<!ENTITY QUOT "&#x22;">
<!ENTITY num "&#x23;">
<!ENTITY dollar "&#x24;">
<!ENTITY percnt "&#x25;">
<!ENTITY amp "&#x26;">
<!ENTITY AMP "&#x26;">
<!ENTITY apos "&#x27;">
<!ENTITY lpar "&#x28;">
<!ENTITY rpar "&#x29;">
<!ENTITY ast "&#x2A;">
<!ENTITY midast "&#x2A;">
<!ENTITY plus "&#x2B;">
<!ENTITY comma "&#x2C;">
<!ENTITY period "&#x2E;">
<!ENTITY sol "&#x2F;">
<!ENTITY colon "&#x3A;">
<!ENTITY semi "&#x3B;">
<!ENTITY lt "&#x3C;">
<!ENTITY LT "&#x3C;">
<!ENTITY equals "&#x3D;">
<!ENTITY gt "&#x3E;">
<!ENTITY GT "&#x3E;">
<!ENTITY quest "&#x3F;">
<!ENTITY commat "&#x40;">
<!ENTITY lsqb "&#x5B;">
<!ENTITY lbrack "&#x5B;">
<!ENTITY bsol "&#x5C;">
<!ENTITY rsqb "&#x5D;">
<!ENTITY rbrack "&#x5D;">
<!ENTITY Hat "&#x5E;">
<!ENTITY lowbar "&#x5F;">
<!ENTITY UnderBar "&#x5F;">
<!ENTITY grave "&#x60;">
<!ENTITY DiacriticalGrave "&#x60;">
<!ENTITY lcub "&#x7B;">
<!ENTITY lbrace "&#x7B;">
<!ENTITY verbar "&#x7C;">
<!ENTITY vert "&#x7C;">
<!ENTITY VerticalLine "&#x7C;">
<!ENTITY rcub "&#x7D;">
<!ENTITY rbrace "&#x7D;">
<!ENTITY nbsp "&#xA0;">
<!ENTITY NonBreakingSpace "&#xA0;">
<!ENTITY iexcl "&#xA1;">
<!ENTITY cent "&#xA2;">
<!ENTITY pound "&#xA3;">
<!ENTITY curren "&#xA4;">
<!ENTITY yen "&#xA5;">
<!ENTITY brvbar "&#xA6;">
<!ENTITY sect "&#xA7;">
<!ENTITY Dot "&#xA8;">
<!ENTITY die "&#xA8;">
<!ENTITY DoubleDot "&#xA8;">
<!ENTITY uml "&#xA8;">
<!ENTITY copy "&#xA9;">
<!ENTITY COPY "&#xA9;">
<!ENTITY ordf "&#xAA;">
<!ENTITY laquo "&#xAB;">
<!ENTITY not "&#xAC;">
<!ENTITY shy "&#xAD;">
<!ENTITY reg "&#xAE;">
<!ENTITY circledR "&#xAE;">
<!ENTITY REG "&#xAE;">
<!ENTITY macr "&#xAF;">
<!ENTITY strns "&#xAF;">
<!ENTITY deg "&#xB0;">
<!ENTITY plusmn "&#xB1;">
<!ENTITY pm "&#xB1;">
<!ENTITY PlusMinus "&#xB1;">
<!ENTITY sup2 "&#xB2;">
<!ENTITY sup3 "&#xB3;">
<!ENTITY acute "&#xB4;">
<!ENTITY DiacriticalAcute "&#xB4;">
<!ENTITY micro "&#xB5;">
<!ENTITY para "&#xB6;">
<!ENTITY middot "&#xB7;">
<!ENTITY centerdot "&#xB7;">
<!ENTITY CenterDot "&#xB7;">
<!ENTITY cedil "&#xB8;">
<!ENTITY Cedilla "&#xB8;">
<!ENTITY sup1 "&#xB9;">
<!ENTITY ordm "&#xBA;">
<!ENTITY raquo "&#xBB;">
<!ENTITY frac14 "&#xBC;">
<!ENTITY frac12 "&#xBD;">
<!ENTITY half "&#xBD;">
<!ENTITY frac34 "&#xBE;">
<!ENTITY iquest "&#xBF;">
<!ENTITY Agrave "&#xC0;">
<!ENTITY Aacute "&#xC1;">
<!ENTITY Acirc "&#xC2;">
<!ENTITY Atilde "&#xC3;">
<!ENTITY Auml "&#xC4;">
<!ENTITY Aring "&#xC5;">
<!ENTITY angst "&#xC5;">
<!ENTITY AElig "&#xC6;">
<!ENTITY Ccedil "&#xC7;">
<!ENTITY Egrave "&#xC8;">
<!ENTITY Eacute "&#xC9;">
<!ENTITY Ecirc "&#xCA;">
<!ENTITY Euml "&#xCB;">
<!ENTITY Igrave "&#xCC;">
<!ENTITY Iacute "&#xCD;">
<!ENTITY Icirc "&#xCE;">
<!ENTITY Iuml "&#xCF;">
<!ENTITY ETH "&#xD0;">
<!ENTITY Ntilde "&#xD1;">
<!ENTITY Ograve "&#xD2;">
<!ENTITY Oacute "&#xD3;">
<!ENTITY Ocirc "&#xD4;">
<!ENTITY Otilde "&#xD5;">
<!ENTITY Ouml "&#xD6;">
<!ENTITY times "&#xD7;">
<!ENTITY Oslash "&#xD8;">
<!ENTITY Ugrave "&#xD9;">
<!ENTITY Uacute "&#xDA;">
<!ENTITY Ucirc "&#xDB;">
<!ENTITY Uuml "&#xDC;">
<!ENTITY Yacute "&#xDD;">
<!ENTITY THORN "&#xDE;">
<!ENTITY szlig "&#xDF;">
<!ENTITY agrave "&#xE0;">
<!ENTITY aacute "&#xE1;">
<!ENTITY acirc "&#xE2;">
<!ENTITY atilde "&#xE3;">
<!ENTITY auml "&#xE4;">
<!ENTITY aring "&#xE5;">
<!ENTITY aelig "&#xE6;">
<!ENTITY ccedil "&#xE7;">
<!ENTITY egrave "&#xE8;">
<!ENTITY eacute "&#xE9;">
<!ENTITY ecirc "&#xEA;">
<!ENTITY euml "&#xEB;">
<!ENTITY igrave "&#xEC;">
<!ENTITY iacute "&#xED;">
<!ENTITY icirc "&#xEE;">
<!ENTITY iuml "&#xEF;">
<!ENTITY eth "&#xF0;">
<!ENTITY ntilde "&#xF1;">
<!ENTITY ograve "&#xF2;">
<!ENTITY oacute "&#xF3;">
<!ENTITY ocirc "&#xF4;">
<!ENTITY otilde "&#xF5;">
<!ENTITY ouml "&#xF6;">
<!ENTITY divide "&#xF7;">
<!ENTITY div "&#xF7;">
<!ENTITY oslash "&#xF8;">
<!ENTITY ugrave "&#xF9;">
<!ENTITY uacute "&#xFA;">
<!ENTITY ucirc "&#xFB;">
<!ENTITY uuml "&#xFC;">
<!ENTITY yacute "&#xFD;">
<!ENTITY thorn "&#xFE;">
<!ENTITY yuml "&#xFF;">
<!ENTITY Amacr "&#x100;">
<!ENTITY amacr "&#x101;">
<!ENTITY Abreve "&#x102;">
<!ENTITY abreve "&#x103;">
<!ENTITY Aogon "&#x104;">
<!ENTITY aogon "&#x105;">
<!ENTITY Cacute "&#x106;">
<!ENTITY cacute "&#x107;">
<!ENTITY Ccirc "&#x108;">
<!ENTITY ccirc "&#x109;">
<!ENTITY Cdot "&#x10A;">
<!ENTITY cdot "&#x10B;">
<!ENTITY Ccaron "&#x10C;">
<!ENTITY ccaron "&#x10D;">
<!ENTITY Dcaron "&#x10E;">
<!ENTITY dcaron "&#x10F;">
<!ENTITY Dstrok "&#x110;">
<!ENTITY dstrok "&#x111;">
<!ENTITY Emacr "&#x112;">
<!ENTITY emacr "&#x113;">
<!ENTITY Edot "&#x116;">
<!ENTITY edot "&#x117;">
<!ENTITY Eogon "&#x118;">
<!ENTITY eogon "&#x119;">
<!ENTITY Ecaron "&#x11A;">
<!ENTITY ecaron "&#x11B;">
<!ENTITY Gcirc "&#x11C;">
<!ENTITY gcirc "&#x11D;">
<!ENTITY Gbreve "&#x11E;">
<!ENTITY gbreve "&#x11F;">
<!ENTITY Gdot "&#x120;">
<!ENTITY gdot "&#x121;">
<!ENTITY Gcedil "&#x122;">
<!ENTITY Hcirc "&#x124;">
<!ENTITY hcirc "&#x125;">
<!ENTITY Hstrok "&#x126;">
<!ENTITY hstrok "&#x127;">
<!ENTITY Itilde "&#x128;">
<!ENTITY itilde "&#x129;">
<!ENTITY Imacr "&#x12A;">
<!ENTITY imacr "&#x12B;">
<!ENTITY Iogon "&#x12E;">
<!ENTITY iogon "&#x12F;">
<!ENTITY Idot "&#x130;">
<!ENTITY imath "&#x131;">
<!ENTITY inodot "&#x131;">
<!ENTITY IJlig "&#x132;">
<!ENTITY ijlig "&#x133;">
<!ENTITY Jcirc "&#x134;">
<!ENTITY jcirc "&#x135;">
<!ENTITY Kcedil "&#x136;">
<!ENTITY kcedil "&#x137;">
<!ENTITY kgreen "&#x138;">
<!ENTITY Lacute "&#x139;">
<!ENTITY lacute "&#x13A;">
<!ENTITY Lcedil "&#x13B;">
<!ENTITY lcedil "&#x13C;">
<!ENTITY Lcaron "&#x13D;">
<!ENTITY lcaron "&#x13E;">
<!ENTITY Lmidot "&#x13F;">
<!ENTITY lmidot "&#x140;">
<!ENTITY Lstrok "&#x141;">
<!ENTITY lstrok "&#x142;">
<!ENTITY Nacute "&#x143;">
<!ENTITY nacute "&#x144;">
<!ENTITY Ncedil "&#x145;">
<!ENTITY ncedil "&#x146;">
<!ENTITY Ncaron "&#x147;">
<!ENTITY ncaron "&#x148;">
<!ENTITY napos "&#x149;">
<!ENTITY ENG "&#x14A;">
<!ENTITY eng "&#x14B;">
<!ENTITY Omacr "&#x14C;">
<!ENTITY omacr "&#x14D;">
<!ENTITY Odblac "&#x150;">
<!ENTITY odblac "&#x151;">
<!ENTITY OElig "&#x152;">
<!ENTITY oelig "&#x153;">
<!ENTITY Racute "&#x154;">
<!ENTITY racute "&#x155;">
<!ENTITY Rcedil "&#x156;">
<!ENTITY rcedil "&#x157;">
<!ENTITY Rcaron "&#x158;">
<!ENTITY rcaron "&#x159;">
<!ENTITY Sacute "&#x15A;">
<!ENTITY sacute "&#x15B;">
<!ENTITY Scirc "&#x15C;">
<!ENTITY scirc "&#x15D;">
<!ENTITY Scedil "&#x15E;">
<!ENTITY scedil "&#x15F;">
<!ENTITY Scaron "&#x160;">
<!ENTITY scaron "&#x161;">
<!ENTITY Tcedil "&#x162;">
<!ENTITY tcedil "&#x163;">
<!ENTITY Tcaron "&#x164;">
<!ENTITY tcaron "&#x165;">
<!ENTITY Tstrok "&#x166;">
<!ENTITY tstrok "&#x167;">
<!ENTITY Utilde "&#x168;">
<!ENTITY utilde "&#x169;">
<!ENTITY Umacr "&#x16A;">
<!ENTITY umacr "&#x16B;">
<!ENTITY Ubreve "&#x16C;">
<!ENTITY ubreve "&#x16D;">
<!ENTITY Uring "&#x16E;">
<!ENTITY uring "&#x16F;">
<!ENTITY Udblac "&#x170;">
<!ENTITY udblac "&#x171;">
<!ENTITY Uogon "&#x172;">
<!ENTITY uogon "&#x173;">
<!ENTITY Wcirc "&#x174;">
<!ENTITY wcirc "&#x175;">
<!ENTITY Ycirc "&#x176;">
<!ENTITY ycirc "&#x177;">
<!ENTITY Yuml "&#x178;">
<!ENTITY Zacute "&#x179;">
<!ENTITY zacute "&#x17A;">
<!ENTITY Zdot "&#x17B;">
<!ENTITY zdot "&#x17C;">
<!ENTITY Zcaron "&#x17D;">
<!ENTITY zcaron "&#x17E;">
<!ENTITY fnof "&#x192;">
<!ENTITY imped "&#x1B5;">
<!ENTITY gacute "&#x1F5;">
<!ENTITY jmath "&#x237;">
<!ENTITY circ "&#x2C6;">
<!ENTITY caron "&#x2C7;">
<!ENTITY Hacek "&#x2C7;">
<!ENTITY breve "&#x2D8;">
<!ENTITY Breve "&#x2D8;">
<!ENTITY dot "&#x2D9;">
<!ENTITY DiacriticalDot "&#x2D9;">
<!ENTITY ring "&#x2DA;">
<!ENTITY ogon "&#x2DB;">
<!ENTITY tilde "&#x2DC;">
<!ENTITY DiacriticalTilde "&#x2DC;">
<!ENTITY dblac "&#x2DD;">
<!ENTITY DiacriticalDoubleAcute "&#x2DD;">
<!ENTITY DownBreve "&#x311;">
<!ENTITY Alpha "&#x391;">
<!ENTITY Beta "&#x392;">
<!ENTITY Gamma "&#x393;">
<!ENTITY Delta "&#x394;">
<!ENTITY Epsilon "&#x395;">
<!ENTITY Zeta "&#x396;">
<!ENTITY Eta "&#x397;">
<!ENTITY Theta "&#x398;">
<!ENTITY Iota "&#x399;">
<!ENTITY Kappa "&#x39A;">
<!ENTITY Lambda "&#x39B;">
<!ENTITY Mu "&#x39C;">
<!ENTITY Nu "&#x39D;">
<!ENTITY Xi "&#x39E;">
<!ENTITY Omicron "&#x39F;">
<!ENTITY Pi "&#x3A0;">
<!ENTITY Rho "&#x3A1;">
<!ENTITY Sigma "&#x3A3;">
<!ENTITY Tau "&#x3A4;">
<!ENTITY Upsilon "&#x3A5;">
<!ENTITY Phi "&#x3A6;">
<!ENTITY Chi "&#x3A7;">
<!ENTITY Psi "&#x3A8;">
<!ENTITY Omega "&#x3A9;">
<!ENTITY ohm "&#x3A9;">
<!ENTITY alpha "&#x3B1;">
<!ENTITY beta "&#x3B2;">
<!ENTITY gamma "&#x3B3;">
<!ENTITY delta "&#x3B4;">
<!ENTITY epsi "&#x3B5;">
<!ENTITY epsilon "&#x3B5;">
<!ENTITY zeta "&#x3B6;">
<!ENTITY eta "&#x3B7;">
<!ENTITY theta "&#x3B8;">
<!ENTITY iota "&#x3B9;">
<!ENTITY kappa "&#x3BA;">
<!ENTITY lambda "&#x3BB;">
<!ENTITY mu "&#x3BC;">
<!ENTITY nu "&#x3BD;">
<!ENTITY xi "&#x3BE;">
<!ENTITY omicron "&#x3BF;">
<!ENTITY pi "&#x3C0;">
<!ENTITY rho "&#x3C1;">
<!ENTITY sigmav "&#x3C2;">
<!ENTITY varsigma "&#x3C2;">
<!ENTITY sigmaf "&#x3C2;">
<!ENTITY sigma "&#x3C3;">
<!ENTITY tau "&#x3C4;">
<!ENTITY upsi "&#x3C5;">
<!ENTITY upsilon "&#x3C5;">
<!ENTITY phi "&#x3C6;">
<!ENTITY chi "&#x3C7;">
<!ENTITY psi "&#x3C8;">
<!ENTITY omega "&#x3C9;">
<!ENTITY thetav "&#x3D1;">
<!ENTITY vartheta "&#x3D1;">
<!ENTITY thetasym "&#x3D1;">
<!ENTITY Upsi "&#x3D2;">
<!ENTITY upsih "&#x3D2;">
<!ENTITY straightphi "&#x3D5;">
<!ENTITY phiv "&#x3D5;">
<!ENTITY varphi "&#x3D5;">
<!ENTITY piv "&#x3D6;">
<!ENTITY varpi "&#x3D6;">
<!ENTITY Gammad "&#x3DC;">
<!ENTITY gammad "&#x3DD;">
<!ENTITY digamma "&#x3DD;">
<!ENTITY kappav "&#x3F0;">
<!ENTITY varkappa "&#x3F0;">
<!ENTITY rhov "&#x3F1;">
<!ENTITY varrho "&#x3F1;">
<!ENTITY epsiv "&#x3F5;">
<!ENTITY straightepsilon "&#x3F5;">
<!ENTITY varepsilon "&#x3F5;">
<!ENTITY bepsi "&#x3F6;">
<!ENTITY backepsilon "&#x3F6;">
<!ENTITY IOcy "&#x401;">
<!ENTITY DJcy "&#x402;">
<!ENTITY GJcy "&#x403;">
<!ENTITY Jukcy "&#x404;">
<!ENTITY DScy "&#x405;">
<!ENTITY Iukcy "&#x406;">
<!ENTITY YIcy "&#x407;">
<!ENTITY Jsercy "&#x408;">
<!ENTITY LJcy "&#x409;">
<!ENTITY NJcy "&#x40A;">
<!ENTITY TSHcy "&#x40B;">
<!ENTITY KJcy "&#x40C;">
<!ENTITY Ubrcy "&#x40E;">
<!ENTITY DZcy "&#x40F;">
<!ENTITY Acy "&#x410;">
<!ENTITY Bcy "&#x411;">
<!ENTITY Vcy "&#x412;">
<!ENTITY Gcy "&#x413;">
<!ENTITY Dcy "&#x414;">
<!ENTITY IEcy "&#x415;">
<!ENTITY ZHcy "&#x416;">
<!ENTITY Zcy "&#x417;">
<!ENTITY Icy "&#x418;">
<!ENTITY Jcy "&#x419;">
<!ENTITY Kcy "&#x41A;">
<!ENTITY Lcy "&#x41B;">
<!ENTITY Mcy "&#x41C;">
<!ENTITY Ncy "&#x41D;">
<!ENTITY Ocy "&#x41E;">
<!ENTITY Pcy "&#x41F;">
<!ENTITY Rcy "&#x420;">
<!ENTITY Scy "&#x421;">
<!ENTITY Tcy "&#x422;">
<!ENTITY Ucy "&#x423;">
<!ENTITY Fcy "&#x424;">
<!ENTITY KHcy "&#x425;">
<!ENTITY TScy "&#x426;">
<!ENTITY CHcy "&#x427;">
<!ENTITY SHcy "&#x428;">
<!ENTITY SHCHcy "&#x429;">
<!ENTITY HARDcy "&#x42A;">
<!ENTITY Ycy "&#x42B;">
<!ENTITY SOFTcy "&#x42C;">
<!ENTITY Ecy "&#x42D;">
<!ENTITY YUcy "&#x42E;">
<!ENTITY YAcy "&#x42F;">
<!ENTITY acy "&#x430;">
<!ENTITY bcy "&#x431;">
<!ENTITY vcy "&#x432;">
<!ENTITY gcy "&#x433;">
<!ENTITY dcy "&#x434;">
<!ENTITY iecy "&#x435;">
<!ENTITY zhcy "&#x436;">
<!ENTITY zcy "&#x437;">
<!ENTITY icy "&#x438;">
<!ENTITY jcy "&#x439;">
<!ENTITY kcy "&#x43A;">
<!ENTITY lcy "&#x43B;">
<!ENTITY mcy "&#x43C;">
<!ENTITY ncy "&#x43D;">
<!ENTITY ocy "&#x43E;">
<!ENTITY pcy "&#x43F;">
<!ENTITY rcy "&#x440;">
<!ENTITY scy "&#x441;">
<!ENTITY tcy "&#x442;">
<!ENTITY ucy "&#x443;">
<!ENTITY fcy "&#x444;">
<!ENTITY khcy "&#x445;">
<!ENTITY tscy "&#x446;">
<!ENTITY chcy "&#x447;">
<!ENTITY shcy "&#x448;">
<!ENTITY shchcy "&#x449;">
<!ENTITY hardcy "&#x44A;">
<!ENTITY ycy "&#x44B;">
<!ENTITY softcy "&#x44C;">
<!ENTITY ecy "&#x44D;">
<!ENTITY yucy "&#x44E;">
<!ENTITY yacy "&#x44F;">
<!ENTITY iocy "&#x451;">
<!ENTITY djcy "&#x452;">
<!ENTITY gjcy "&#x453;">
<!ENTITY jukcy "&#x454;">
<!ENTITY dscy "&#x455;">
<!ENTITY iukcy "&#x456;">
<!ENTITY yicy "&#x457;">
<!ENTITY jsercy "&#x458;">
<!ENTITY ljcy "&#x459;">
<!ENTITY njcy "&#x45A;">
<!ENTITY tshcy "&#x45B;">
<!ENTITY kjcy "&#x45C;">
<!ENTITY ubrcy "&#x45E;">
<!ENTITY dzcy "&#x45F;">
<!ENTITY ensp "&#x2002;">
<!ENTITY emsp "&#x2003;">
<!ENTITY emsp13 "&#x2004;">
<!ENTITY emsp14 "&#x2005;">
<!ENTITY numsp "&#x2007;">
<!ENTITY puncsp "&#x2008;">
<!ENTITY thinsp "&#x2009;">
<!ENTITY ThinSpace "&#x2009;">
<!ENTITY hairsp "&#x200A;">
<!ENTITY VeryThinSpace "&#x200A;">
<!ENTITY ZeroWidthSpace "&#x200B;">
<!ENTITY NegativeVeryThinSpace "&#x200B;">
<!ENTITY NegativeThinSpace "&#x200B;">
<!ENTITY NegativeMediumSpace "&#x200B;">
<!ENTITY NegativeThickSpace "&#x200B;">
<!ENTITY zwnj "&#x200C;">
<!ENTITY zwj "&#x200D;">
<!ENTITY lrm "&#x200E;">
<!ENTITY rlm "&#x200F;">
<!ENTITY hyphen "&#x2010;">
<!ENTITY dash "&#x2010;">
<!ENTITY ndash "&#x2013;">
<!ENTITY mdash "&#x2014;">
<!ENTITY horbar "&#x2015;">
<!ENTITY Verbar "&#x2016;">
<!ENTITY Vert "&#x2016;">
<!ENTITY lsquo "&#x2018;">
<!ENTITY OpenCurlyQuote "&#x2018;">
<!ENTITY rsquo "&#x2019;">
<!ENTITY rsquor "&#x2019;">
<!ENTITY CloseCurlyQuote "&#x2019;">
<!ENTITY lsquor "&#x201A;">
<!ENTITY sbquo "&#x201A;">
<!ENTITY ldquo "&#x201C;">
<!ENTITY OpenCurlyDoubleQuote "&#x201C;">
<!ENTITY rdquo "&#x201D;">
<!ENTITY rdquor "&#x201D;">
<!ENTITY CloseCurlyDoubleQuote "&#x201D;">
<!ENTITY ldquor "&#x201E;">
<!ENTITY bdquo "&#x201E;">
<!ENTITY dagger "&#x2020;">
<!ENTITY Dagger "&#x2021;">
<!ENTITY ddagger "&#x2021;">
<!ENTITY bull "&#x2022;">
<!ENTITY bullet "&#x2022;">
<!ENTITY nldr "&#x2025;">
<!ENTITY hellip "&#x2026;">
<!ENTITY mldr "&#x2026;">
<!ENTITY permil "&#x2030;">
<!ENTITY pertenk "&#x2031;">
<!ENTITY prime "&#x2032;">
<!ENTITY Prime "&#x2033;">
<!ENTITY tprime "&#x2034;">
<!ENTITY bprime "&#x2035;">
<!ENTITY backprime "&#x2035;">
<!ENTITY lsaquo "&#x2039;">
<!ENTITY rsaquo "&#x203A;">
<!ENTITY oline "&#x203E;">
<!ENTITY OverBar "&#x203E;">
<!ENTITY caret "&#x2041;">
<!ENTITY hybull "&#x2043;">
<!ENTITY frasl "&#x2044;">
<!ENTITY bsemi "&#x204F;">
<!ENTITY qprime "&#x2057;">
<!ENTITY MediumSpace "&#x205F;">
<!ENTITY NoBreak "&#x2060;">
<!ENTITY ApplyFunction "&#x2061;">
<!ENTITY af "&#x2061;">
<!ENTITY InvisibleTimes "&#x2062;">
<!ENTITY it "&#x2062;">
<!ENTITY InvisibleComma "&#x2063;">
<!ENTITY ic "&#x2063;">
<!ENTITY euro "&#x20AC;">
<!ENTITY tdot "&#x20DB;">
<!ENTITY TripleDot "&#x20DB;">
<!ENTITY DotDot "&#x20DC;">
<!ENTITY Copf "&#x2102;">
<!ENTITY complexes "&#x2102;">
<!ENTITY incare "&#x2105;">
<!ENTITY gscr "&#x210A;">
<!ENTITY hamilt "&#x210B;">
<!ENTITY HilbertSpace "&#x210B;">
<!ENTITY Hscr "&#x210B;">
<!ENTITY Hfr "&#x210C;">
<!ENTITY Poincareplane "&#x210C;">
<!ENTITY quaternions "&#x210D;">
<!ENTITY Hopf "&#x210D;">
<!ENTITY planckh "&#x210E;">
<!ENTITY planck "&#x210F;">
<!ENTITY hbar "&#x210F;">
<!ENTITY plankv "&#x210F;">
<!ENTITY hslash "&#x210F;">
<!ENTITY Iscr "&#x2110;">
<!ENTITY imagline "&#x2110;">
<!ENTITY image "&#x2111;">
<!ENTITY Im "&#x2111;">
<!ENTITY imagpart "&#x2111;">
<!ENTITY Ifr "&#x2111;">
<!ENTITY Lscr "&#x2112;">
<!ENTITY lagran "&#x2112;">
<!ENTITY Laplacetrf "&#x2112;">
<!ENTITY ell "&#x2113;">
<!ENTITY Nopf "&#x2115;">
<!ENTITY naturals "&#x2115;">
<!ENTITY numero "&#x2116;">
<!ENTITY copysr "&#x2117;">
<!ENTITY weierp "&#x2118;">
<!ENTITY wp "&#x2118;">
<!ENTITY Popf "&#x2119;">
<!ENTITY primes "&#x2119;">
<!ENTITY rationals "&#x211A;">
<!ENTITY Qopf "&#x211A;">
<!ENTITY Rscr "&#x211B;">
<!ENTITY realine "&#x211B;">
<!ENTITY real "&#x211C;">
<!ENTITY Re "&#x211C;">
<!ENTITY realpart "&#x211C;">
<!ENTITY Rfr "&#x211C;">
<!ENTITY reals "&#x211D;">
<!ENTITY Ropf "&#x211D;">
<!ENTITY rx "&#x211E;">
<!ENTITY trade "&#x2122;">
<!ENTITY TRADE "&#x2122;">
<!ENTITY integers "&#x2124;">
<!ENTITY Zopf "&#x2124;">
<!ENTITY mho "&#x2127;">
<!ENTITY Zfr "&#x2128;">
<!ENTITY zeetrf "&#x2128;">
<!ENTITY iiota "&#x2129;">
<!ENTITY bernou "&#x212C;">
<!ENTITY Bernoullis "&#x212C;">
<!ENTITY Bscr "&#x212C;">
<!ENTITY Cfr "&#x212D;">
<!ENTITY Cayleys "&#x212D;">
<!ENTITY escr "&#x212F;">
<!ENTITY Escr "&#x2130;">
<!ENTITY expectation "&#x2130;">
<!ENTITY Fscr "&#x2131;">
<!ENTITY Fouriertrf "&#x2131;">
<!ENTITY phmmat "&#x2133;">
<!ENTITY Mellintrf "&#x2133;">
<!ENTITY Mscr "&#x2133;">
<!ENTITY order "&#x2134;">
<!ENTITY orderof "&#x2134;">
<!ENTITY oscr "&#x2134;">
<!ENTITY alefsym "&#x2135;">
<!ENTITY aleph "&#x2135;">
<!ENTITY beth "&#x2136;">
<!ENTITY gimel "&#x2137;">
<!ENTITY daleth "&#x2138;">
<!ENTITY CapitalDifferentialD "&#x2145;">
<!ENTITY DD "&#x2145;">
<!ENTITY DifferentialD "&#x2146;">
<!ENTITY dd "&#x2146;">
<!ENTITY ExponentialE "&#x2147;">
<!ENTITY exponentiale "&#x2147;">
<!ENTITY ee "&#x2147;">
<!ENTITY ImaginaryI "&#x2148;">
<!ENTITY ii "&#x2148;">
<!ENTITY frac13 "&#x2153;">
<!ENTITY frac23 "&#x2154;">
<!ENTITY frac15 "&#x2155;">
<!ENTITY frac25 "&#x2156;">
<!ENTITY frac35 "&#x2157;">
<!ENTITY frac45 "&#x2158;">
<!ENTITY frac16 "&#x2159;">
<!ENTITY frac56 "&#x215A;">
<!ENTITY frac18 "&#x215B;">
<!ENTITY frac38 "&#x215C;">
<!ENTITY frac58 "&#x215D;">
<!ENTITY frac78 "&#x215E;">
<!ENTITY larr "&#x2190;">
<!ENTITY leftarrow "&#x2190;">
<!ENTITY LeftArrow "&#x2190;">
<!ENTITY slarr "&#x2190;">
<!ENTITY ShortLeftArrow "&#x2190;">
<!ENTITY uarr "&#x2191;">
<!ENTITY uparrow "&#x2191;">
<!ENTITY UpArrow "&#x2191;">
<!ENTITY ShortUpArrow "&#x2191;">
<!ENTITY rarr "&#x2192;">
<!ENTITY rightarrow "&#x2192;">
<!ENTITY RightArrow "&#x2192;">
<!ENTITY srarr "&#x2192;">
<!ENTITY ShortRightArrow "&#x2192;">
<!ENTITY darr "&#x2193;">
<!ENTITY downarrow "&#x2193;">
<!ENTITY DownArrow "&#x2193;">
<!ENTITY ShortDownArrow "&#x2193;">
<!ENTITY harr "&#x2194;">
<!ENTITY leftrightarrow "&#x2194;">
<!ENTITY LeftRightArrow "&#x2194;">
<!ENTITY varr "&#x2195;">
<!ENTITY updownarrow "&#x2195;">
<!ENTITY UpDownArrow "&#x2195;">
<!ENTITY nwarr "&#x2196;">
<!ENTITY UpperLeftArrow "&#x2196;">
<!ENTITY nwarrow "&#x2196;">
<!ENTITY nearr "&#x2197;">
<!ENTITY UpperRightArrow "&#x2197;">
<!ENTITY nearrow "&#x2197;">
<!ENTITY searr "&#x2198;">
<!ENTITY searrow "&#x2198;">
<!ENTITY LowerRightArrow "&#x2198;">
<!ENTITY swarr "&#x2199;">
<!ENTITY swarrow "&#x2199;">
<!ENTITY LowerLeftArrow "&#x2199;">
<!ENTITY nlarr "&#x219A;">
<!ENTITY nleftarrow "&#x219A;">
<!ENTITY nrarr "&#x219B;">
<!ENTITY nrightarrow "&#x219B;">
<!ENTITY rarrw "&#x219D;">
<!ENTITY rightsquigarrow "&#x219D;">
<!ENTITY Larr "&#x219E;">
<!ENTITY twoheadleftarrow "&#x219E;">
<!ENTITY Uarr "&#x219F;">
<!ENTITY Rarr "&#x21A0;">
<!ENTITY twoheadrightarrow "&#x21A0;">
<!ENTITY Darr "&#x21A1;">
<!ENTITY larrtl "&#x21A2;">
<!ENTITY leftarrowtail "&#x21A2;">
<!ENTITY rarrtl "&#x21A3;">
<!ENTITY rightarrowtail "&#x21A3;">
<!ENTITY LeftTeeArrow "&#x21A4;">
<!ENTITY mapstoleft "&#x21A4;">
<!ENTITY UpTeeArrow "&#x21A5;">
<!ENTITY mapstoup "&#x21A5;">
<!ENTITY map "&#x21A6;">
<!ENTITY RightTeeArrow "&#x21A6;">
<!ENTITY mapsto "&#x21A6;">
<!ENTITY DownTeeArrow "&#x21A7;">
<!ENTITY mapstodown "&#x21A7;">
<!ENTITY larrhk "&#x21A9;">
<!ENTITY hookleftarrow "&#x21A9;">
<!ENTITY rarrhk "&#x21AA;">
<!ENTITY hookrightarrow "&#x21AA;">
<!ENTITY larrlp "&#x21AB;">
<!ENTITY looparrowleft "&#x21AB;">
<!ENTITY rarrlp "&#x21AC;">
<!ENTITY looparrowright "&#x21AC;">
<!ENTITY harrw "&#x21AD;">
<!ENTITY leftrightsquigarrow "&#x21AD;">
<!ENTITY nharr "&#x21AE;">
<!ENTITY nleftrightarrow "&#x21AE;">
<!ENTITY lsh "&#x21B0;">
<!ENTITY Lsh "&#x21B0;">
<!ENTITY rsh "&#x21B1;">
<!ENTITY Rsh "&#x21B1;">
<!ENTITY ldsh "&#x21B2;">
<!ENTITY rdsh "&#x21B3;">
<!ENTITY crarr "&#x21B5;">
<!ENTITY cularr "&#x21B6;">
<!ENTITY curvearrowleft "&#x21B6;">
<!ENTITY curarr "&#x21B7;">
<!ENTITY curvearrowright "&#x21B7;">
<!ENTITY olarr "&#x21BA;">
<!ENTITY circlearrowleft "&#x21BA;">
<!ENTITY orarr "&#x21BB;">
<!ENTITY circlearrowright "&#x21BB;">
<!ENTITY lharu "&#x21BC;">
<!ENTITY LeftVector "&#x21BC;">
<!ENTITY leftharpoonup "&#x21BC;">
<!ENTITY lhard "&#x21BD;">
<!ENTITY leftharpoondown "&#x21BD;">
<!ENTITY DownLeftVector "&#x21BD;">
<!ENTITY uharr "&#x21BE;">
<!ENTITY upharpoonright "&#x21BE;">
<!ENTITY RightUpVector "&#x21BE;">
<!ENTITY uharl "&#x21BF;">
<!ENTITY upharpoonleft "&#x21BF;">
<!ENTITY LeftUpVector "&#x21BF;">
<!ENTITY rharu "&#x21C0;">
<!ENTITY RightVector "&#x21C0;">
<!ENTITY rightharpoonup "&#x21C0;">
<!ENTITY rhard "&#x21C1;">
<!ENTITY rightharpoondown "&#x21C1;">
<!ENTITY DownRightVector "&#x21C1;">
<!ENTITY dharr "&#x21C2;">
<!ENTITY RightDownVector "&#x21C2;">
<!ENTITY downharpoonright "&#x21C2;">
<!ENTITY dharl "&#x21C3;">
<!ENTITY LeftDownVector "&#x21C3;">
<!ENTITY downharpoonleft "&#x21C3;">
<!ENTITY rlarr "&#x21C4;">
<!ENTITY rightleftarrows "&#x21C4;">
<!ENTITY RightArrowLeftArrow "&#x21C4;">
<!ENTITY udarr "&#x21C5;">
<!ENTITY UpArrowDownArrow "&#x21C5;">
<!ENTITY lrarr "&#x21C6;">
<!ENTITY leftrightarrows "&#x21C6;">
<!ENTITY LeftArrowRightArrow "&#x21C6;">
<!ENTITY llarr "&#x21C7;">
<!ENTITY leftleftarrows "&#x21C7;">
<!ENTITY uuarr "&#x21C8;">
<!ENTITY upuparrows "&#x21C8;">
<!ENTITY rrarr "&#x21C9;">
<!ENTITY rightrightarrows "&#x21C9;">
<!ENTITY ddarr "&#x21CA;">
<!ENTITY downdownarrows "&#x21CA;">
<!ENTITY lrhar "&#x21CB;">
<!ENTITY ReverseEquilibrium "&#x21CB;">
<!ENTITY leftrightharpoons "&#x21CB;">
<!ENTITY rlhar "&#x21CC;">
<!ENTITY rightleftharpoons "&#x21CC;">
<!ENTITY Equilibrium "&#x21CC;">
<!ENTITY nlArr "&#x21CD;">
<!ENTITY nLeftarrow "&#x21CD;">
<!ENTITY nhArr "&#x21CE;">
<!ENTITY nLeftrightarrow "&#x21CE;">
<!ENTITY nrArr "&#x21CF;">
<!ENTITY nRightarrow "&#x21CF;">
<!ENTITY lArr "&#x21D0;">
<!ENTITY Leftarrow "&#x21D0;">
<!ENTITY DoubleLeftArrow "&#x21D0;">
<!ENTITY uArr "&#x21D1;">
<!ENTITY Uparrow "&#x21D1;">
<!ENTITY DoubleUpArrow "&#x21D1;">
<!ENTITY rArr "&#x21D2;">
<!ENTITY Rightarrow "&#x21D2;">
<!ENTITY Implies "&#x21D2;">
<!ENTITY DoubleRightArrow "&#x21D2;">
<!ENTITY dArr "&#x21D3;">
<!ENTITY Downarrow "&#x21D3;">
<!ENTITY DoubleDownArrow "&#x21D3;">
<!ENTITY hArr "&#x21D4;">
<!ENTITY Leftrightarrow "&#x21D4;">
<!ENTITY DoubleLeftRightArrow "&#x21D4;">
<!ENTITY iff "&#x21D4;">
<!ENTITY vArr "&#x21D5;">
<!ENTITY Updownarrow "&#x21D5;">
<!ENTITY DoubleUpDownArrow "&#x21D5;">
<!ENTITY nwArr "&#x21D6;">
<!ENTITY neArr "&#x21D7;">
<!ENTITY seArr "&#x21D8;">
<!ENTITY swArr "&#x21D9;">
<!ENTITY lAarr "&#x21DA;">
<!ENTITY Lleftarrow "&#x21DA;">
<!ENTITY rAarr "&#x21DB;">
<!ENTITY Rrightarrow "&#x21DB;">
<!ENTITY zigrarr "&#x21DD;">
<!ENTITY larrb "&#x21E4;">
<!ENTITY LeftArrowBar "&#x21E4;">
<!ENTITY rarrb "&#x21E5;">
<!ENTITY RightArrowBar "&#x21E5;">
<!ENTITY duarr "&#x21F5;">
<!ENTITY DownArrowUpArrow "&#x21F5;">
<!ENTITY loarr "&#x21FD;">
<!ENTITY roarr "&#x21FE;">
<!ENTITY hoarr "&#x21FF;">
<!ENTITY forall "&#x2200;">
<!ENTITY ForAll "&#x2200;">
<!ENTITY comp "&#x2201;">
<!ENTITY complement "&#x2201;">
<!ENTITY part "&#x2202;">
<!ENTITY PartialD "&#x2202;">
<!ENTITY exist "&#x2203;">
<!ENTITY Exists "&#x2203;">
<!ENTITY nexist "&#x2204;">
<!ENTITY NotExists "&#x2204;">
<!ENTITY nexists "&#x2204;">
<!ENTITY empty "&#x2205;">
<!ENTITY emptyset "&#x2205;">
<!ENTITY emptyv "&#x2205;">
<!ENTITY varnothing "&#x2205;">
<!ENTITY nabla "&#x2207;">
<!ENTITY Del "&#x2207;">
<!ENTITY isin "&#x2208;">
<!ENTITY isinv "&#x2208;">
<!ENTITY Element "&#x2208;">
<!ENTITY in "&#x2208;">
<!ENTITY notin "&#x2209;">
<!ENTITY NotElement "&#x2209;">
<!ENTITY notinva "&#x2209;">
<!ENTITY niv "&#x220B;">
<!ENTITY ReverseElement "&#x220B;">
<!ENTITY ni "&#x220B;">
<!ENTITY SuchThat "&#x220B;">
<!ENTITY notni "&#x220C;">
<!ENTITY notniva "&#x220C;">
<!ENTITY NotReverseElement "&#x220C;">
<!ENTITY prod "&#x220F;">
<!ENTITY Product "&#x220F;">
<!ENTITY coprod "&#x2210;">
<!ENTITY Coproduct "&#x2210;">
<!ENTITY sum "&#x2211;">
<!ENTITY Sum "&#x2211;">
<!ENTITY minus "&#x2212;">
<!ENTITY mnplus "&#x2213;">
<!ENTITY mp "&#x2213;">
<!ENTITY MinusPlus "&#x2213;">
<!ENTITY plusdo "&#x2214;">
<!ENTITY dotplus "&#x2214;">
<!ENTITY setmn "&#x2216;">
<!ENTITY setminus "&#x2216;">
<!ENTITY Backslash "&#x2216;">
<!ENTITY ssetmn "&#x2216;">
<!ENTITY smallsetminus "&#x2216;">
<!ENTITY lowast "&#x2217;">
<!ENTITY compfn "&#x2218;">
<!ENTITY SmallCircle "&#x2218;">
<!ENTITY radic "&#x221A;">
<!ENTITY Sqrt "&#x221A;">
<!ENTITY prop "&#x221D;">
<!ENTITY propto "&#x221D;">
<!ENTITY Proportional "&#x221D;">
<!ENTITY vprop "&#x221D;">
<!ENTITY varpropto "&#x221D;">
<!ENTITY infin "&#x221E;">
<!ENTITY angrt "&#x221F;">
<!ENTITY ang "&#x2220;">
<!ENTITY angle "&#x2220;">
<!ENTITY angmsd "&#x2221;">
<!ENTITY measuredangle "&#x2221;">
<!ENTITY angsph "&#x2222;">
<!ENTITY mid "&#x2223;">
<!ENTITY VerticalBar "&#x2223;">
<!ENTITY smid "&#x2223;">
<!ENTITY shortmid "&#x2223;">
<!ENTITY nmid "&#x2224;">
<!ENTITY NotVerticalBar "&#x2224;">
<!ENTITY nsmid "&#x2224;">
<!ENTITY nshortmid "&#x2224;">
<!ENTITY par "&#x2225;">
<!ENTITY parallel "&#x2225;">
<!ENTITY DoubleVerticalBar "&#x2225;">
<!ENTITY spar "&#x2225;">
<!ENTITY shortparallel "&#x2225;">
<!ENTITY npar "&#x2226;">
<!ENTITY nparallel "&#x2226;">
<!ENTITY NotDoubleVerticalBar "&#x2226;">
<!ENTITY nspar "&#x2226;">
<!ENTITY nshortparallel "&#x2226;">
<!ENTITY and "&#x2227;">
<!ENTITY wedge "&#x2227;">
<!ENTITY or "&#x2228;">
<!ENTITY vee "&#x2228;">
<!ENTITY cap "&#x2229;">
<!ENTITY cup "&#x222A;">
<!ENTITY int "&#x222B;">
<!ENTITY Integral "&#x222B;">
<!ENTITY Int "&#x222C;">
<!ENTITY tint "&#x222D;">
<!ENTITY iiint "&#x222D;">
<!ENTITY conint "&#x222E;">
<!ENTITY oint "&#x222E;">
<!ENTITY ContourIntegral "&#x222E;">
<!ENTITY Conint "&#x222F;">
<!ENTITY DoubleContourIntegral "&#x222F;">
<!ENTITY Cconint "&#x2230;">
<!ENTITY cwint "&#x2231;">
<!ENTITY cwconint "&#x2232;">
<!ENTITY ClockwiseContourIntegral "&#x2232;">
<!ENTITY awconint "&#x2233;">
<!ENTITY CounterClockwiseContourIntegral "&#x2233;">
<!ENTITY there4 "&#x2234;">
<!ENTITY therefore "&#x2234;">
<!ENTITY Therefore "&#x2234;">
<!ENTITY becaus "&#x2235;">
<!ENTITY because "&#x2235;">
<!ENTITY Because "&#x2235;">
<!ENTITY ratio "&#x2236;">
<!ENTITY Colon "&#x2237;">
<!ENTITY Proportion "&#x2237;">
<!ENTITY minusd "&#x2238;">
<!ENTITY dotminus "&#x2238;">
<!ENTITY mDDot "&#x223A;">
<!ENTITY homtht "&#x223B;">
<!ENTITY sim "&#x223C;">
<!ENTITY Tilde "&#x223C;">
<!ENTITY thksim "&#x223C;">
<!ENTITY thicksim "&#x223C;">
<!ENTITY bsim "&#x223D;">
<!ENTITY backsim "&#x223D;">
<!ENTITY ac "&#x223E;">
<!ENTITY mstpos "&#x223E;">
<!ENTITY acd "&#x223F;">
<!ENTITY wreath "&#x2240;">
<!ENTITY VerticalTilde "&#x2240;">
<!ENTITY wr "&#x2240;">
<!ENTITY nsim "&#x2241;">
<!ENTITY NotTilde "&#x2241;">
<!ENTITY esim "&#x2242;">
<!ENTITY EqualTilde "&#x2242;">
<!ENTITY eqsim "&#x2242;">
<!ENTITY sime "&#x2243;">
<!ENTITY TildeEqual "&#x2243;">
<!ENTITY simeq "&#x2243;">
<!ENTITY nsime "&#x2244;">
<!ENTITY nsimeq "&#x2244;">
<!ENTITY NotTildeEqual "&#x2244;">
<!ENTITY cong "&#x2245;">
<!ENTITY TildeFullEqual "&#x2245;">
<!ENTITY simne "&#x2246;">
<!ENTITY ncong "&#x2247;">
<!ENTITY NotTildeFullEqual "&#x2247;">
<!ENTITY asymp "&#x2248;">
<!ENTITY ap "&#x2248;">
<!ENTITY TildeTilde "&#x2248;">
<!ENTITY approx "&#x2248;">
<!ENTITY thkap "&#x2248;">
<!ENTITY thickapprox "&#x2248;">
<!ENTITY nap "&#x2249;">
<!ENTITY NotTildeTilde "&#x2249;">
<!ENTITY napprox "&#x2249;">
<!ENTITY ape "&#x224A;">
<!ENTITY approxeq "&#x224A;">
<!ENTITY apid "&#x224B;">
<!ENTITY bcong "&#x224C;">
<!ENTITY backcong "&#x224C;">
<!ENTITY asympeq "&#x224D;">
<!ENTITY CupCap "&#x224D;">
<!ENTITY bump "&#x224E;">
<!ENTITY HumpDownHump "&#x224E;">
<!ENTITY Bumpeq "&#x224E;">
<!ENTITY bumpe "&#x224F;">
<!ENTITY HumpEqual "&#x224F;">
<!ENTITY bumpeq "&#x224F;">
<!ENTITY esdot "&#x2250;">
<!ENTITY DotEqual "&#x2250;">
<!ENTITY doteq "&#x2250;">
<!ENTITY eDot "&#x2251;">
<!ENTITY doteqdot "&#x2251;">
<!ENTITY efDot "&#x2252;">
<!ENTITY fallingdotseq "&#x2252;">
<!ENTITY erDot "&#x2253;">
<!ENTITY risingdotseq "&#x2253;">
<!ENTITY colone "&#x2254;">
<!ENTITY coloneq "&#x2254;">
<!ENTITY Assign "&#x2254;">
<!ENTITY ecolon "&#x2255;">
<!ENTITY eqcolon "&#x2255;">
<!ENTITY ecir "&#x2256;">
<!ENTITY eqcirc "&#x2256;">
<!ENTITY cire "&#x2257;">
<!ENTITY circeq "&#x2257;">
<!ENTITY wedgeq "&#x2259;">
<!ENTITY veeeq "&#x225A;">
<!ENTITY trie "&#x225C;">
<!ENTITY triangleq "&#x225C;">
<!ENTITY equest "&#x225F;">
<!ENTITY questeq "&#x225F;">
<!ENTITY ne "&#x2260;">
<!ENTITY NotEqual "&#x2260;">
<!ENTITY equiv "&#x2261;">
<!ENTITY Congruent "&#x2261;">
<!ENTITY nequiv "&#x2262;">
<!ENTITY NotCongruent "&#x2262;">
<!ENTITY le "&#x2264;">
<!ENTITY leq "&#x2264;">
<!ENTITY ge "&#x2265;">
<!ENTITY GreaterEqual "&#x2265;">
<!ENTITY geq "&#x2265;">
<!ENTITY lE "&#x2266;">
<!ENTITY LessFullEqual "&#x2266;">
<!ENTITY leqq "&#x2266;">
<!ENTITY gE "&#x2267;">
<!ENTITY GreaterFullEqual "&#x2267;">
<!ENTITY geqq "&#x2267;">
<!ENTITY lnE "&#x2268;">
<!ENTITY lneqq "&#x2268;">
<!ENTITY gnE "&#x2269;">
<!ENTITY gneqq "&#x2269;">
<!ENTITY Lt "&#x226A;">
<!ENTITY NestedLessLess "&#x226A;">
<!ENTITY ll "&#x226A;">
<!ENTITY Gt "&#x226B;">
<!ENTITY NestedGreaterGreater "&#x226B;">
<!ENTITY gg "&#x226B;">
<!ENTITY twixt "&#x226C;">
<!ENTITY between "&#x226C;">
<!ENTITY NotCupCap "&#x226D;">
<!ENTITY nlt "&#x226E;">
<!ENTITY NotLess "&#x226E;">
<!ENTITY nless "&#x226E;">
<!ENTITY ngt "&#x226F;">
<!ENTITY NotGreater "&#x226F;">
<!ENTITY ngtr "&#x226F;">
<!ENTITY nle "&#x2270;">
<!ENTITY NotLessEqual "&#x2270;">
<!ENTITY nleq "&#x2270;">
<!ENTITY nge "&#x2271;">
<!ENTITY NotGreaterEqual "&#x2271;">
<!ENTITY ngeq "&#x2271;">
<!ENTITY lsim "&#x2272;">
<!ENTITY LessTilde "&#x2272;">
<!ENTITY lesssim "&#x2272;">
<!ENTITY gsim "&#x2273;">
<!ENTITY gtrsim "&#x2273;">
<!ENTITY GreaterTilde "&#x2273;">
<!ENTITY nlsim "&#x2274;">
<!ENTITY NotLessTilde "&#x2274;">
<!ENTITY ngsim "&#x2275;">
<!ENTITY NotGreaterTilde "&#x2275;">
<!ENTITY lg "&#x2276;">
<!ENTITY lessgtr "&#x2276;">
<!ENTITY LessGreater "&#x2276;">
<!ENTITY gl "&#x2277;">
<!ENTITY gtrless "&#x2277;">
<!ENTITY GreaterLess "&#x2277;">
<!ENTITY ntlg "&#x2278;">
<!ENTITY NotLessGreater "&#x2278;">
<!ENTITY ntgl "&#x2279;">
<!ENTITY NotGreaterLess "&#x2279;">
<!ENTITY pr "&#x227A;">
<!ENTITY Precedes "&#x227A;">
<!ENTITY prec "&#x227A;">
<!ENTITY sc "&#x227B;">
<!ENTITY Succeeds "&#x227B;">
<!ENTITY succ "&#x227B;">
<!ENTITY prcue "&#x227C;">
<!ENTITY PrecedesSlantEqual "&#x227C;">
<!ENTITY preccurlyeq "&#x227C;">
<!ENTITY sccue "&#x227D;">
<!ENTITY SucceedsSlantEqual "&#x227D;">
<!ENTITY succcurlyeq "&#x227D;">
<!ENTITY prsim "&#x227E;">
<!ENTITY precsim "&#x227E;">
<!ENTITY PrecedesTilde "&#x227E;">
<!ENTITY scsim "&#x227F;">
<!ENTITY succsim "&#x227F;">
<!ENTITY SucceedsTilde "&#x227F;">
<!ENTITY npr "&#x2280;">
<!ENTITY nprec "&#x2280;">
<!ENTITY NotPrecedes "&#x2280;">
<!ENTITY nsc "&#x2281;">
<!ENTITY nsucc "&#x2281;">
<!ENTITY NotSucceeds "&#x2281;">
<!ENTITY sub "&#x2282;">
<!ENTITY subset "&#x2282;">
<!ENTITY sup "&#x2283;">
<!ENTITY supset "&#x2283;">
<!ENTITY Superset "&#x2283;">
<!ENTITY nsub "&#x2284;">
<!ENTITY nsup "&#x2285;">
<!ENTITY sube "&#x2286;">
<!ENTITY SubsetEqual "&#x2286;">
<!ENTITY subseteq "&#x2286;">
<!ENTITY supe "&#x2287;">
<!ENTITY supseteq "&#x2287;">
<!ENTITY SupersetEqual "&#x2287;">
<!ENTITY nsube "&#x2288;">
<!ENTITY nsubseteq "&#x2288;">
<!ENTITY NotSubsetEqual "&#x2288;">
<!ENTITY nsupe "&#x2289;">
<!ENTITY nsupseteq "&#x2289;">
<!ENTITY NotSupersetEqual "&#x2289;">
<!ENTITY subne "&#x228A;">
<!ENTITY subsetneq "&#x228A;">
<!ENTITY supne "&#x228B;">
<!ENTITY supsetneq "&#x228B;">
<!ENTITY cupdot "&#x228D;">
<!ENTITY uplus "&#x228E;">
<!ENTITY UnionPlus "&#x228E;">
<!ENTITY sqsub "&#x228F;">
<!ENTITY SquareSubset "&#x228F;">
<!ENTITY sqsubset "&#x228F;">
<!ENTITY sqsup "&#x2290;">
<!ENTITY SquareSuperset "&#x2290;">
<!ENTITY sqsupset "&#x2290;">
<!ENTITY sqsube "&#x2291;">
<!ENTITY SquareSubsetEqual "&#x2291;">
<!ENTITY sqsubseteq "&#x2291;">
<!ENTITY sqsupe "&#x2292;">
<!ENTITY SquareSupersetEqual "&#x2292;">
<!ENTITY sqsupseteq "&#x2292;">
<!ENTITY sqcap "&#x2293;">
<!ENTITY SquareIntersection "&#x2293;">
<!ENTITY sqcup "&#x2294;">
<!ENTITY SquareUnion "&#x2294;">
<!ENTITY oplus "&#x2295;">
<!ENTITY CirclePlus "&#x2295;">
<!ENTITY ominus "&#x2296;">
<!ENTITY CircleMinus "&#x2296;">
<!ENTITY otimes "&#x2297;">
<!ENTITY CircleTimes "&#x2297;">
<!ENTITY osol "&#x2298;">
<!ENTITY odot "&#x2299;">
<!ENTITY CircleDot "&#x2299;">
<!ENTITY ocir "&#x229A;">
<!ENTITY circledcirc "&#x229A;">
<!ENTITY oast "&#x229B;">
<!ENTITY circledast "&#x229B;">
<!ENTITY odash "&#x229D;">
<!ENTITY circleddash "&#x229D;">
<!ENTITY plusb "&#x229E;">
<!ENTITY boxplus "&#x229E;">
<!ENTITY minusb "&#x229F;">
<!ENTITY boxminus "&#x229F;">
<!ENTITY timesb "&#x22A0;">
<!ENTITY boxtimes "&#x22A0;">
<!ENTITY sdotb "&#x22A1;">
<!ENTITY dotsquare "&#x22A1;">
<!ENTITY vdash "&#x22A2;">
<!ENTITY RightTee "&#x22A2;">
<!ENTITY dashv "&#x22A3;">
<!ENTITY LeftTee "&#x22A3;">
<!ENTITY top "&#x22A4;">
<!ENTITY DownTee "&#x22A4;">
<!ENTITY bottom "&#x22A5;">
<!ENTITY bot "&#x22A5;">
<!ENTITY perp "&#x22A5;">
<!ENTITY UpTee "&#x22A5;">
<!ENTITY models "&#x22A7;">
<!ENTITY vDash "&#x22A8;">
<!ENTITY DoubleRightTee "&#x22A8;">
<!ENTITY Vdash "&#x22A9;">
<!ENTITY Vvdash "&#x22AA;">
<!ENTITY VDash "&#x22AB;">
<!ENTITY nvdash "&#x22AC;">
<!ENTITY nvDash "&#x22AD;">
<!ENTITY nVdash "&#x22AE;">
<!ENTITY nVDash "&#x22AF;">
<!ENTITY prurel "&#x22B0;">
<!ENTITY vltri "&#x22B2;">
<!ENTITY vartriangleleft "&#x22B2;">
<!ENTITY LeftTriangle "&#x22B2;">
<!ENTITY vrtri "&#x22B3;">
<!ENTITY vartriangleright "&#x22B3;">
<!ENTITY RightTriangle "&#x22B3;">
<!ENTITY ltrie "&#x22B4;">
<!ENTITY trianglelefteq "&#x22B4;">
<!ENTITY LeftTriangleEqual "&#x22B4;">
<!ENTITY rtrie "&#x22B5;">
<!ENTITY trianglerighteq "&#x22B5;">
<!ENTITY RightTriangleEqual "&#x22B5;">
<!ENTITY origof "&#x22B6;">
<!ENTITY imof "&#x22B7;">
<!ENTITY mumap "&#x22B8;">
<!ENTITY multimap "&#x22B8;">
<!ENTITY hercon "&#x22B9;">
<!ENTITY intcal "&#x22BA;">
<!ENTITY intercal "&#x22BA;">
<!ENTITY veebar "&#x22BB;">
<!ENTITY barvee "&#x22BD;">
<!ENTITY angrtvb "&#x22BE;">
<!ENTITY lrtri "&#x22BF;">
<!ENTITY xwedge "&#x22C0;">
<!ENTITY Wedge "&#x22C0;">
<!ENTITY bigwedge "&#x22C0;">
<!ENTITY xvee "&#x22C1;">
<!ENTITY Vee "&#x22C1;">
<!ENTITY bigvee "&#x22C1;">
<!ENTITY xcap "&#x22C2;">
<!ENTITY Intersection "&#x22C2;">
<!ENTITY bigcap "&#x22C2;">
<!ENTITY xcup "&#x22C3;">
<!ENTITY Union "&#x22C3;">
<!ENTITY bigcup "&#x22C3;">
<!ENTITY diam "&#x22C4;">
<!ENTITY diamond "&#x22C4;">
<!ENTITY Diamond "&#x22C4;">
<!ENTITY sdot "&#x22C5;">
<!ENTITY sstarf "&#x22C6;">
<!ENTITY Star "&#x22C6;">
<!ENTITY divonx "&#x22C7;">
<!ENTITY divideontimes "&#x22C7;">
<!ENTITY bowtie "&#x22C8;">
<!ENTITY ltimes "&#x22C9;">
<!ENTITY rtimes "&#x22CA;">
<!ENTITY lthree "&#x22CB;">
<!ENTITY leftthreetimes "&#x22CB;">
<!ENTITY rthree "&#x22CC;">
<!ENTITY rightthreetimes "&#x22CC;">
<!ENTITY bsime "&#x22CD;">
<!ENTITY backsimeq "&#x22CD;">
<!ENTITY cuvee "&#x22CE;">
<!ENTITY curlyvee "&#x22CE;">
<!ENTITY cuwed "&#x22CF;">
<!ENTITY curlywedge "&#x22CF;">
<!ENTITY Sub "&#x22D0;">
<!ENTITY Subset "&#x22D0;">
<!ENTITY Sup "&#x22D1;">
<!ENTITY Supset "&#x22D1;">
<!ENTITY Cap "&#x22D2;">
<!ENTITY Cup "&#x22D3;">
<!ENTITY fork "&#x22D4;">
<!ENTITY pitchfork "&#x22D4;">
<!ENTITY epar "&#x22D5;">
<!ENTITY ltdot "&#x22D6;">
<!ENTITY lessdot "&#x22D6;">
<!ENTITY gtdot "&#x22D7;">
<!ENTITY gtrdot "&#x22D7;">
<!ENTITY Ll "&#x22D8;">
<!ENTITY Gg "&#x22D9;">
<!ENTITY ggg "&#x22D9;">
<!ENTITY leg "&#x22DA;">
<!ENTITY LessEqualGreater "&#x22DA;">
<!ENTITY lesseqgtr "&#x22DA;">
<!ENTITY gel "&#x22DB;">
<!ENTITY gtreqless "&#x22DB;">
<!ENTITY GreaterEqualLess "&#x22DB;">
<!ENTITY cuepr "&#x22DE;">
<!ENTITY curlyeqprec "&#x22DE;">
<!ENTITY cuesc "&#x22DF;">
<!ENTITY curlyeqsucc "&#x22DF;">
<!ENTITY nprcue "&#x22E0;">
<!ENTITY NotPrecedesSlantEqual "&#x22E0;">
<!ENTITY nsccue "&#x22E1;">
<!ENTITY NotSucceedsSlantEqual "&#x22E1;">
<!ENTITY nsqsube "&#x22E2;">
<!ENTITY NotSquareSubsetEqual "&#x22E2;">
<!ENTITY nsqsupe "&#x22E3;">
<!ENTITY NotSquareSupersetEqual "&#x22E3;">
<!ENTITY lnsim "&#x22E6;">
<!ENTITY gnsim "&#x22E7;">
<!ENTITY prnsim "&#x22E8;">
<!ENTITY precnsim "&#x22E8;">
<!ENTITY scnsim "&#x22E9;">
<!ENTITY succnsim "&#x22E9;">
<!ENTITY nltri "&#x22EA;">
<!ENTITY ntriangleleft "&#x22EA;">
<!ENTITY NotLeftTriangle "&#x22EA;">
<!ENTITY nrtri "&#x22EB;">
<!ENTITY ntriangleright "&#x22EB;">
<!ENTITY NotRightTriangle "&#x22EB;">
<!ENTITY nltrie "&#x22EC;">
<!ENTITY ntrianglelefteq "&#x22EC;">
<!ENTITY NotLeftTriangleEqual "&#x22EC;">
<!ENTITY nrtrie "&#x22ED;">
<!ENTITY ntrianglerighteq "&#x22ED;">
<!ENTITY NotRightTriangleEqual "&#x22ED;">
<!ENTITY vellip "&#x22EE;">
<!ENTITY ctdot "&#x22EF;">
<!ENTITY utdot "&#x22F0;">
<!ENTITY dtdot "&#x22F1;">
<!ENTITY disin "&#x22F2;">
<!ENTITY isinsv "&#x22F3;">
<!ENTITY isins "&#x22F4;">
<!ENTITY isindot "&#x22F5;">
<!ENTITY notinvc "&#x22F6;">
<!ENTITY notinvb "&#x22F7;">
<!ENTITY isinE "&#x22F9;">
<!ENTITY nisd "&#x22FA;">
<!ENTITY xnis "&#x22FB;">
<!ENTITY nis "&#x22FC;">
<!ENTITY notnivc "&#x22FD;">
<!ENTITY notnivb "&#x22FE;">
<!ENTITY barwed "&#x2305;">
<!ENTITY barwedge "&#x2305;">
<!ENTITY Barwed "&#x2306;">
<!ENTITY doublebarwedge "&#x2306;">
<!ENTITY lceil "&#x2308;">
<!ENTITY LeftCeiling "&#x2308;">
<!ENTITY rceil "&#x2309;">
<!ENTITY RightCeiling "&#x2309;">
<!ENTITY lfloor "&#x230A;">
<!ENTITY LeftFloor "&#x230A;">
<!ENTITY rfloor "&#x230B;">
<!ENTITY RightFloor "&#x230B;">
<!ENTITY drcrop "&#x230C;">
<!ENTITY dlcrop "&#x230D;">
<!ENTITY urcrop "&#x230E;">
<!ENTITY ulcrop "&#x230F;">
<!ENTITY bnot "&#x2310;">
<!ENTITY profline "&#x2312;">
<!ENTITY profsurf "&#x2313;">
<!ENTITY telrec "&#x2315;">
<!ENTITY target "&#x2316;">
<!ENTITY ulcorn "&#x231C;">
<!ENTITY ulcorner "&#x231C;">
<!ENTITY urcorn "&#x231D;">
<!ENTITY urcorner "&#x231D;">
<!ENTITY dlcorn "&#x231E;">
<!ENTITY llcorner "&#x231E;">
<!ENTITY drcorn "&#x231F;">
<!ENTITY lrcorner "&#x231F;">
<!ENTITY frown "&#x2322;">
<!ENTITY sfrown "&#x2322;">
<!ENTITY smile "&#x2323;">
<!ENTITY ssmile "&#x2323;">
<!ENTITY cylcty "&#x232D;">
<!ENTITY profalar "&#x232E;">
<!ENTITY topbot "&#x2336;">
<!ENTITY ovbar "&#x233D;">
<!ENTITY solbar "&#x233F;">
<!ENTITY angzarr "&#x237C;">
<!ENTITY lmoust "&#x23B0;">
<!ENTITY lmoustache "&#x23B0;">
<!ENTITY rmoust "&#x23B1;">
<!ENTITY rmoustache "&#x23B1;">
<!ENTITY tbrk "&#x23B4;">
<!ENTITY OverBracket "&#x23B4;">
<!ENTITY bbrk "&#x23B5;">
<!ENTITY UnderBracket "&#x23B5;">
<!ENTITY bbrktbrk "&#x23B6;">
<!ENTITY OverParenthesis "&#x23DC;">
<!ENTITY UnderParenthesis "&#x23DD;">
<!ENTITY OverBrace "&#x23DE;">
<!ENTITY UnderBrace "&#x23DF;">
<!ENTITY trpezium "&#x23E2;">
<!ENTITY elinters "&#x23E7;">
<!ENTITY blank "&#x2423;">
<!ENTITY oS "&#x24C8;">
<!ENTITY circledS "&#x24C8;">
<!ENTITY boxh "&#x2500;">
<!ENTITY HorizontalLine "&#x2500;">
<!ENTITY boxv "&#x2502;">
<!ENTITY boxdr "&#x250C;">
<!ENTITY boxdl "&#x2510;">
<!ENTITY boxur "&#x2514;">
<!ENTITY boxul "&#x2518;">
<!ENTITY boxvr "&#x251C;">
<!ENTITY boxvl "&#x2524;">
<!ENTITY boxhd "&#x252C;">
<!ENTITY boxhu "&#x2534;">
<!ENTITY boxvh "&#x253C;">
<!ENTITY boxH "&#x2550;">
<!ENTITY boxV "&#x2551;">
<!ENTITY boxdR "&#x2552;">
<!ENTITY boxDr "&#x2553;">
<!ENTITY boxDR "&#x2554;">
<!ENTITY boxdL "&#x2555;">
<!ENTITY boxDl "&#x2556;">
<!ENTITY boxDL "&#x2557;">
<!ENTITY boxuR "&#x2558;">
<!ENTITY boxUr "&#x2559;">
<!ENTITY boxUR "&#x255A;">
<!ENTITY boxuL "&#x255B;">
<!ENTITY boxUl "&#x255C;">
<!ENTITY boxUL "&#x255D;">
<!ENTITY boxvR "&#x255E;">
<!ENTITY boxVr "&#x255F;">
<!ENTITY boxVR "&#x2560;">
<!ENTITY boxvL "&#x2561;">
<!ENTITY boxVl "&#x2562;">
<!ENTITY boxVL "&#x2563;">
<!ENTITY boxHd "&#x2564;">
<!ENTITY boxhD "&#x2565;">
<!ENTITY boxHD "&#x2566;">
<!ENTITY boxHu "&#x2567;">
<!ENTITY boxhU "&#x2568;">
<!ENTITY boxHU "&#x2569;">
<!ENTITY boxvH "&#x256A;">
<!ENTITY boxVh "&#x256B;">
<!ENTITY boxVH "&#x256C;">
<!ENTITY uhblk "&#x2580;">
<!ENTITY lhblk "&#x2584;">
<!ENTITY block "&#x2588;">
<!ENTITY blk14 "&#x2591;">
<!ENTITY blk12 "&#x2592;">
<!ENTITY blk34 "&#x2593;">
<!ENTITY squ "&#x25A1;">
<!ENTITY square "&#x25A1;">
<!ENTITY Square "&#x25A1;">
<!ENTITY squf "&#x25AA;">
<!ENTITY squarf "&#x25AA;">
<!ENTITY blacksquare "&#x25AA;">
<!ENTITY FilledVerySmallSquare "&#x25AA;">
<!ENTITY EmptyVerySmallSquare "&#x25AB;">
<!ENTITY rect "&#x25AD;">
<!ENTITY marker "&#x25AE;">
<!ENTITY fltns "&#x25B1;">
<!ENTITY xutri "&#x25B3;">
<!ENTITY bigtriangleup "&#x25B3;">
<!ENTITY utrif "&#x25B4;">
<!ENTITY blacktriangle "&#x25B4;">
<!ENTITY utri "&#x25B5;">
<!ENTITY triangle "&#x25B5;">
<!ENTITY rtrif "&#x25B8;">
<!ENTITY blacktriangleright "&#x25B8;">
<!ENTITY rtri "&#x25B9;">
<!ENTITY triangleright "&#x25B9;">
<!ENTITY xdtri "&#x25BD;">
<!ENTITY bigtriangledown "&#x25BD;">
<!ENTITY dtrif "&#x25BE;">
<!ENTITY blacktriangledown "&#x25BE;">
<!ENTITY dtri "&#x25BF;">
<!ENTITY triangledown "&#x25BF;">
<!ENTITY ltrif "&#x25C2;">
<!ENTITY blacktriangleleft "&#x25C2;">
<!ENTITY ltri "&#x25C3;">
<!ENTITY triangleleft "&#x25C3;">
<!ENTITY loz "&#x25CA;">
<!ENTITY lozenge "&#x25CA;">
<!ENTITY cir "&#x25CB;">
<!ENTITY tridot "&#x25EC;">
<!ENTITY xcirc "&#x25EF;">
<!ENTITY bigcirc "&#x25EF;">
<!ENTITY ultri "&#x25F8;">
<!ENTITY urtri "&#x25F9;">
<!ENTITY lltri "&#x25FA;">
<!ENTITY EmptySmallSquare "&#x25FB;">
<!ENTITY FilledSmallSquare "&#x25FC;">
<!ENTITY starf "&#x2605;">
<!ENTITY bigstar "&#x2605;">
<!ENTITY star "&#x2606;">
<!ENTITY phone "&#x260E;">
<!ENTITY female "&#x2640;">
<!ENTITY male "&#x2642;">
<!ENTITY spades "&#x2660;">
<!ENTITY spadesuit "&#x2660;">
<!ENTITY clubs "&#x2663;">
<!ENTITY clubsuit "&#x2663;">
<!ENTITY hearts "&#x2665;">
<!ENTITY heartsuit "&#x2665;">
<!ENTITY diams "&#x2666;">
<!ENTITY diamondsuit "&#x2666;">
<!ENTITY sung "&#x266A;">
<!ENTITY flat "&#x266D;">
<!ENTITY natur "&#x266E;">
<!ENTITY natural "&#x266E;">
<!ENTITY sharp "&#x266F;">
<!ENTITY check "&#x2713;">
<!ENTITY checkmark "&#x2713;">
<!ENTITY cross "&#x2717;">
<!ENTITY malt "&#x2720;">
<!ENTITY maltese "&#x2720;">
<!ENTITY sext "&#x2736;">
<!ENTITY VerticalSeparator "&#x2758;">
<!ENTITY lbbrk "&#x2772;">
<!ENTITY rbbrk "&#x2773;">
<!ENTITY bsolhsub "&#x27C8;">
<!ENTITY suphsol "&#x27C9;">
<!ENTITY lobrk "&#x27E6;">
<!ENTITY LeftDoubleBracket "&#x27E6;">
<!ENTITY robrk "&#x27E7;">
<!ENTITY RightDoubleBracket "&#x27E7;">
<!ENTITY lang "&#x27E8;">
<!ENTITY LeftAngleBracket "&#x27E8;">
<!ENTITY langle "&#x27E8;">
<!ENTITY rang "&#x27E9;">
<!ENTITY RightAngleBracket "&#x27E9;">
<!ENTITY rangle "&#x27E9;">
<!ENTITY Lang "&#x27EA;">
<!ENTITY Rang "&#x27EB;">
<!ENTITY loang "&#x27EC;">
<!ENTITY roang "&#x27ED;">
<!ENTITY xlarr "&#x27F5;">
<!ENTITY longleftarrow "&#x27F5;">
<!ENTITY LongLeftArrow "&#x27F5;">
<!ENTITY xrarr "&#x27F6;">
<!ENTITY longrightarrow "&#x27F6;">
<!ENTITY LongRightArrow "&#x27F6;">
<!ENTITY xharr "&#x27F7;">
<!ENTITY longleftrightarrow "&#x27F7;">
<!ENTITY LongLeftRightArrow "&#x27F7;">
<!ENTITY xlArr "&#x27F8;">
<!ENTITY Longleftarrow "&#x27F8;">
<!ENTITY DoubleLongLeftArrow "&#x27F8;">
<!ENTITY xrArr "&#x27F9;">
<!ENTITY Longrightarrow "&#x27F9;">
<!ENTITY DoubleLongRightArrow "&#x27F9;">
<!ENTITY xhArr "&#x27FA;">
<!ENTITY Longleftrightarrow "&#x27FA;">
<!ENTITY DoubleLongLeftRightArrow "&#x27FA;">
<!ENTITY xmap "&#x27FC;">
<!ENTITY longmapsto "&#x27FC;">
<!ENTITY dzigrarr "&#x27FF;">
<!ENTITY nvlArr "&#x2902;">
<!ENTITY nvrArr "&#x2903;">
<!ENTITY nvHarr "&#x2904;">
<!ENTITY Map "&#x2905;">
<!ENTITY lbarr "&#x290C;">
<!ENTITY rbarr "&#x290D;">
<!ENTITY bkarow "&#x290D;">
<!ENTITY lBarr "&#x290E;">
<!ENTITY rBarr "&#x290F;">
<!ENTITY dbkarow "&#x290F;">
<!ENTITY RBarr "&#x2910;">
<!ENTITY drbkarow "&#x2910;">
<!ENTITY DDotrahd "&#x2911;">
<!ENTITY UpArrowBar "&#x2912;">
<!ENTITY DownArrowBar "&#x2913;">
<!ENTITY Rarrtl "&#x2916;">
<!ENTITY latail "&#x2919;">
<!ENTITY ratail "&#x291A;">
<!ENTITY lAtail "&#x291B;">
<!ENTITY rAtail "&#x291C;">
<!ENTITY larrfs "&#x291D;">
<!ENTITY rarrfs "&#x291E;">
<!ENTITY larrbfs "&#x291F;">
<!ENTITY rarrbfs "&#x2920;">
<!ENTITY nwarhk "&#x2923;">
<!ENTITY nearhk "&#x2924;">
<!ENTITY searhk "&#x2925;">
<!ENTITY hksearow "&#x2925;">
<!ENTITY swarhk "&#x2926;">
<!ENTITY hkswarow "&#x2926;">
<!ENTITY nwnear "&#x2927;">
<!ENTITY nesear "&#x2928;">
<!ENTITY toea "&#x2928;">
<!ENTITY seswar "&#x2929;">
<!ENTITY tosa "&#x2929;">
<!ENTITY swnwar "&#x292A;">
<!ENTITY rarrc "&#x2933;">
<!ENTITY cudarrr "&#x2935;">
<!ENTITY ldca "&#x2936;">
<!ENTITY rdca "&#x2937;">
<!ENTITY cudarrl "&#x2938;">
<!ENTITY larrpl "&#x2939;">
<!ENTITY curarrm "&#x293C;">
<!ENTITY cularrp "&#x293D;">
<!ENTITY rarrpl "&#x2945;">
<!ENTITY harrcir "&#x2948;">
<!ENTITY Uarrocir "&#x2949;">
<!ENTITY lurdshar "&#x294A;">
<!ENTITY ldrushar "&#x294B;">
<!ENTITY LeftRightVector "&#x294E;">
<!ENTITY RightUpDownVector "&#x294F;">
<!ENTITY DownLeftRightVector "&#x2950;">
<!ENTITY LeftUpDownVector "&#x2951;">
<!ENTITY LeftVectorBar "&#x2952;">
<!ENTITY RightVectorBar "&#x2953;">
<!ENTITY RightUpVectorBar "&#x2954;">
<!ENTITY RightDownVectorBar "&#x2955;">
<!ENTITY DownLeftVectorBar "&#x2956;">
<!ENTITY DownRightVectorBar "&#x2957;">
<!ENTITY LeftUpVectorBar "&#x2958;">
<!ENTITY LeftDownVectorBar "&#x2959;">
<!ENTITY LeftTeeVector "&#x295A;">
<!ENTITY RightTeeVector "&#x295B;">
<!ENTITY RightUpTeeVector "&#x295C;">
<!ENTITY RightDownTeeVector "&#x295D;">
<!ENTITY DownLeftTeeVector "&#x295E;">
<!ENTITY DownRightTeeVector "&#x295F;">
<!ENTITY LeftUpTeeVector "&#x2960;">
<!ENTITY LeftDownTeeVector "&#x2961;">
<!ENTITY lHar "&#x2962;">
<!ENTITY uHar "&#x2963;">
<!ENTITY rHar "&#x2964;">
<!ENTITY dHar "&#x2965;">
<!ENTITY luruhar "&#x2966;">
<!ENTITY ldrdhar "&#x2967;">
<!ENTITY ruluhar "&#x2968;">
<!ENTITY rdldhar "&#x2969;">
<!ENTITY lharul "&#x296A;">
<!ENTITY llhard "&#x296B;">
<!ENTITY rharul "&#x296C;">
<!ENTITY lrhard "&#x296D;">
<!ENTITY udhar "&#x296E;">
<!ENTITY UpEquilibrium "&#x296E;">
<!ENTITY duhar "&#x296F;">
<!ENTITY ReverseUpEquilibrium "&#x296F;">
<!ENTITY RoundImplies "&#x2970;">
<!ENTITY erarr "&#x2971;">
<!ENTITY simrarr "&#x2972;">
<!ENTITY larrsim "&#x2973;">
<!ENTITY rarrsim "&#x2974;">
<!ENTITY rarrap "&#x2975;">
<!ENTITY ltlarr "&#x2976;">
<!ENTITY gtrarr "&#x2978;">
<!ENTITY subrarr "&#x2979;">
<!ENTITY suplarr "&#x297B;">
<!ENTITY lfisht "&#x297C;">
<!ENTITY rfisht "&#x297D;">
<!ENTITY ufisht "&#x297E;">
<!ENTITY dfisht "&#x297F;">
<!ENTITY lopar "&#x2985;">
<!ENTITY ropar "&#x2986;">
<!ENTITY lbrke "&#x298B;">
<!ENTITY rbrke "&#x298C;">
<!ENTITY lbrkslu "&#x298D;">
<!ENTITY rbrksld "&#x298E;">
<!ENTITY lbrksld "&#x298F;">
<!ENTITY rbrkslu "&#x2990;">
<!ENTITY langd "&#x2991;">
<!ENTITY rangd "&#x2992;">
<!ENTITY lparlt "&#x2993;">
<!ENTITY rpargt "&#x2994;">
<!ENTITY gtlPar "&#x2995;">
<!ENTITY ltrPar "&#x2996;">
<!ENTITY vzigzag "&#x299A;">
<!ENTITY vangrt "&#x299C;">
<!ENTITY angrtvbd "&#x299D;">
<!ENTITY ange "&#x29A4;">
<!ENTITY range "&#x29A5;">
<!ENTITY dwangle "&#x29A6;">
<!ENTITY uwangle "&#x29A7;">
<!ENTITY angmsdaa "&#x29A8;">
<!ENTITY angmsdab "&#x29A9;">
<!ENTITY angmsdac "&#x29AA;">
<!ENTITY angmsdad "&#x29AB;">
<!ENTITY angmsdae "&#x29AC;">
<!ENTITY angmsdaf "&#x29AD;">
<!ENTITY angmsdag "&#x29AE;">
<!ENTITY angmsdah "&#x29AF;">
<!ENTITY bemptyv "&#x29B0;">
<!ENTITY demptyv "&#x29B1;">
<!ENTITY cemptyv "&#x29B2;">
<!ENTITY raemptyv "&#x29B3;">
<!ENTITY laemptyv "&#x29B4;">
<!ENTITY ohbar "&#x29B5;">
<!ENTITY omid "&#x29B6;">
<!ENTITY opar "&#x29B7;">
<!ENTITY operp "&#x29B9;">
<!ENTITY olcross "&#x29BB;">
<!ENTITY odsold "&#x29BC;">
<!ENTITY olcir "&#x29BE;">
<!ENTITY ofcir "&#x29BF;">
<!ENTITY olt "&#x29C0;">
<!ENTITY ogt "&#x29C1;">
<!ENTITY cirscir "&#x29C2;">
<!ENTITY cirE "&#x29C3;">
<!ENTITY solb "&#x29C4;">
<!ENTITY bsolb "&#x29C5;">
<!ENTITY boxbox "&#x29C9;">
<!ENTITY trisb "&#x29CD;">
<!ENTITY rtriltri "&#x29CE;">
<!ENTITY LeftTriangleBar "&#x29CF;">
<!ENTITY RightTriangleBar "&#x29D0;">
<!ENTITY iinfin "&#x29DC;">
<!ENTITY infintie "&#x29DD;">
<!ENTITY nvinfin "&#x29DE;">
<!ENTITY eparsl "&#x29E3;">
<!ENTITY smeparsl "&#x29E4;">
<!ENTITY eqvparsl "&#x29E5;">
<!ENTITY lozf "&#x29EB;">
<!ENTITY blacklozenge "&#x29EB;">
<!ENTITY RuleDelayed "&#x29F4;">
<!ENTITY dsol "&#x29F6;">
<!ENTITY xodot "&#x2A00;">
<!ENTITY bigodot "&#x2A00;">
<!ENTITY xoplus "&#x2A01;">
<!ENTITY bigoplus "&#x2A01;">
<!ENTITY xotime "&#x2A02;">
<!ENTITY bigotimes "&#x2A02;">
<!ENTITY xuplus "&#x2A04;">
<!ENTITY biguplus "&#x2A04;">
<!ENTITY xsqcup "&#x2A06;">
<!ENTITY bigsqcup "&#x2A06;">
<!ENTITY qint "&#x2A0C;">
<!ENTITY iiiint "&#x2A0C;">
<!ENTITY fpartint "&#x2A0D;">
<!ENTITY cirfnint "&#x2A10;">
<!ENTITY awint "&#x2A11;">
<!ENTITY rppolint "&#x2A12;">
<!ENTITY scpolint "&#x2A13;">
<!ENTITY npolint "&#x2A14;">
<!ENTITY pointint "&#x2A15;">
<!ENTITY quatint "&#x2A16;">
<!ENTITY intlarhk "&#x2A17;">
<!ENTITY pluscir "&#x2A22;">
<!ENTITY plusacir "&#x2A23;">
<!ENTITY simplus "&#x2A24;">
<!ENTITY plusdu "&#x2A25;">
<!ENTITY plussim "&#x2A26;">
<!ENTITY plustwo "&#x2A27;">
<!ENTITY mcomma "&#x2A29;">
<!ENTITY minusdu "&#x2A2A;">
<!ENTITY loplus "&#x2A2D;">
<!ENTITY roplus "&#x2A2E;">
<!ENTITY Cross "&#x2A2F;">
<!ENTITY timesd "&#x2A30;">
<!ENTITY timesbar "&#x2A31;">
<!ENTITY smashp "&#x2A33;">
<!ENTITY lotimes "&#x2A34;">
<!ENTITY rotimes "&#x2A35;">
<!ENTITY otimesas "&#x2A36;">
<!ENTITY Otimes "&#x2A37;">
<!ENTITY odiv "&#x2A38;">
<!ENTITY triplus "&#x2A39;">
<!ENTITY triminus "&#x2A3A;">
<!ENTITY tritime "&#x2A3B;">
<!ENTITY iprod "&#x2A3C;">
<!ENTITY intprod "&#x2A3C;">
<!ENTITY amalg "&#x2A3F;">
<!ENTITY capdot "&#x2A40;">
<!ENTITY ncup "&#x2A42;">
<!ENTITY ncap "&#x2A43;">
<!ENTITY capand "&#x2A44;">
<!ENTITY cupor "&#x2A45;">
<!ENTITY cupcap "&#x2A46;">
<!ENTITY capcup "&#x2A47;">
<!ENTITY cupbrcap "&#x2A48;">
<!ENTITY capbrcup "&#x2A49;">
<!ENTITY cupcup "&#x2A4A;">
<!ENTITY capcap "&#x2A4B;">
<!ENTITY ccups "&#x2A4C;">
<!ENTITY ccaps "&#x2A4D;">
<!ENTITY ccupssm "&#x2A50;">
<!ENTITY And "&#x2A53;">
<!ENTITY Or "&#x2A54;">
<!ENTITY andand "&#x2A55;">
<!ENTITY oror "&#x2A56;">
<!ENTITY orslope "&#x2A57;">
<!ENTITY andslope "&#x2A58;">
<!ENTITY andv "&#x2A5A;">
<!ENTITY orv "&#x2A5B;">
<!ENTITY andd "&#x2A5C;">
<!ENTITY ord "&#x2A5D;">
<!ENTITY wedbar "&#x2A5F;">
<!ENTITY sdote "&#x2A66;">
<!ENTITY simdot "&#x2A6A;">
<!ENTITY congdot "&#x2A6D;">
<!ENTITY easter "&#x2A6E;">
<!ENTITY apacir "&#x2A6F;">
<!ENTITY apE "&#x2A70;">
<!ENTITY eplus "&#x2A71;">
<!ENTITY pluse "&#x2A72;">
<!ENTITY Esim "&#x2A73;">
<!ENTITY Colone "&#x2A74;">
<!ENTITY Equal "&#x2A75;">
<!ENTITY eDDot "&#x2A77;">
<!ENTITY ddotseq "&#x2A77;">
<!ENTITY equivDD "&#x2A78;">
<!ENTITY ltcir "&#x2A79;">
<!ENTITY gtcir "&#x2A7A;">
<!ENTITY ltquest "&#x2A7B;">
<!ENTITY gtquest "&#x2A7C;">
<!ENTITY les "&#x2A7D;">
<!ENTITY LessSlantEqual "&#x2A7D;">
<!ENTITY leqslant "&#x2A7D;">
<!ENTITY ges "&#x2A7E;">
<!ENTITY GreaterSlantEqual "&#x2A7E;">
<!ENTITY geqslant "&#x2A7E;">
<!ENTITY lesdot "&#x2A7F;">
<!ENTITY gesdot "&#x2A80;">
<!ENTITY lesdoto "&#x2A81;">
<!ENTITY gesdoto "&#x2A82;">
<!ENTITY lesdotor "&#x2A83;">
<!ENTITY gesdotol "&#x2A84;">
<!ENTITY lap "&#x2A85;">
<!ENTITY lessapprox "&#x2A85;">
<!ENTITY gap "&#x2A86;">
<!ENTITY gtrapprox "&#x2A86;">
<!ENTITY lne "&#x2A87;">
<!ENTITY lneq "&#x2A87;">
<!ENTITY gne "&#x2A88;">
<!ENTITY gneq "&#x2A88;">
<!ENTITY lnap "&#x2A89;">
<!ENTITY lnapprox "&#x2A89;">
<!ENTITY gnap "&#x2A8A;">
<!ENTITY gnapprox "&#x2A8A;">
<!ENTITY lEg "&#x2A8B;">
<!ENTITY lesseqqgtr "&#x2A8B;">
<!ENTITY gEl "&#x2A8C;">
<!ENTITY gtreqqless "&#x2A8C;">
<!ENTITY lsime "&#x2A8D;">
<!ENTITY gsime "&#x2A8E;">
<!ENTITY lsimg "&#x2A8F;">
<!ENTITY gsiml "&#x2A90;">
<!ENTITY lgE "&#x2A91;">
<!ENTITY glE "&#x2A92;">
<!ENTITY lesges "&#x2A93;">
<!ENTITY gesles "&#x2A94;">
<!ENTITY els "&#x2A95;">
<!ENTITY eqslantless "&#x2A95;">
<!ENTITY egs "&#x2A96;">
<!ENTITY eqslantgtr "&#x2A96;">
<!ENTITY elsdot "&#x2A97;">
<!ENTITY egsdot "&#x2A98;">
<!ENTITY el "&#x2A99;">
<!ENTITY eg "&#x2A9A;">
<!ENTITY siml "&#x2A9D;">
<!ENTITY simg "&#x2A9E;">
<!ENTITY simlE "&#x2A9F;">
<!ENTITY simgE "&#x2AA0;">
<!ENTITY LessLess "&#x2AA1;">
<!ENTITY GreaterGreater "&#x2AA2;">
<!ENTITY glj "&#x2AA4;">
<!ENTITY gla "&#x2AA5;">
<!ENTITY ltcc "&#x2AA6;">
<!ENTITY gtcc "&#x2AA7;">
<!ENTITY lescc "&#x2AA8;">
<!ENTITY gescc "&#x2AA9;">
<!ENTITY smt "&#x2AAA;">
<!ENTITY lat "&#x2AAB;">
<!ENTITY smte "&#x2AAC;">
<!ENTITY late "&#x2AAD;">
<!ENTITY bumpE "&#x2AAE;">
<!ENTITY pre "&#x2AAF;">
<!ENTITY preceq "&#x2AAF;">
<!ENTITY PrecedesEqual "&#x2AAF;">
<!ENTITY sce "&#x2AB0;">
<!ENTITY succeq "&#x2AB0;">
<!ENTITY SucceedsEqual "&#x2AB0;">
<!ENTITY prE "&#x2AB3;">
<!ENTITY scE "&#x2AB4;">
<!ENTITY prnE "&#x2AB5;">
<!ENTITY precneqq "&#x2AB5;">
<!ENTITY scnE "&#x2AB6;">
<!ENTITY succneqq "&#x2AB6;">
<!ENTITY prap "&#x2AB7;">
<!ENTITY precapprox "&#x2AB7;">
<!ENTITY scap "&#x2AB8;">
<!ENTITY succapprox "&#x2AB8;">
<!ENTITY prnap "&#x2AB9;">
<!ENTITY precnapprox "&#x2AB9;">
<!ENTITY scnap "&#x2ABA;">
<!ENTITY succnapprox "&#x2ABA;">
<!ENTITY Pr "&#x2ABB;">
<!ENTITY Sc "&#x2ABC;">
<!ENTITY subdot "&#x2ABD;">
<!ENTITY supdot "&#x2ABE;">
<!ENTITY subplus "&#x2ABF;">
<!ENTITY supplus "&#x2AC0;">
<!ENTITY submult "&#x2AC1;">
<!ENTITY supmult "&#x2AC2;">
<!ENTITY subedot "&#x2AC3;">
<!ENTITY supedot "&#x2AC4;">
<!ENTITY subE "&#x2AC5;">
<!ENTITY subseteqq "&#x2AC5;">
<!ENTITY supE "&#x2AC6;">
<!ENTITY supseteqq "&#x2AC6;">
<!ENTITY subsim "&#x2AC7;">
<!ENTITY supsim "&#x2AC8;">
<!ENTITY subnE "&#x2ACB;">
<!ENTITY subsetneqq "&#x2ACB;">
<!ENTITY supnE "&#x2ACC;">
<!ENTITY supsetneqq "&#x2ACC;">
<!ENTITY csub "&#x2ACF;">
<!ENTITY csup "&#x2AD0;">
<!ENTITY csube "&#x2AD1;">
<!ENTITY csupe "&#x2AD2;">
<!ENTITY subsup "&#x2AD3;">
<!ENTITY supsub "&#x2AD4;">
<!ENTITY subsub "&#x2AD5;">
<!ENTITY supsup "&#x2AD6;">
<!ENTITY suphsub "&#x2AD7;">
<!ENTITY supdsub "&#x2AD8;">
<!ENTITY forkv "&#x2AD9;">
<!ENTITY topfork "&#x2ADA;">
<!ENTITY mlcp "&#x2ADB;">
<!ENTITY Dashv "&#x2AE4;">
<!ENTITY DoubleLeftTee "&#x2AE4;">
<!ENTITY Vdashl "&#x2AE6;">
<!ENTITY Barv "&#x2AE7;">
<!ENTITY vBar "&#x2AE8;">
<!ENTITY vBarv "&#x2AE9;">
<!ENTITY Vbar "&#x2AEB;">
<!ENTITY Not "&#x2AEC;">
<!ENTITY bNot "&#x2AED;">
<!ENTITY rnmid "&#x2AEE;">
<!ENTITY cirmid "&#x2AEF;">
<!ENTITY midcir "&#x2AF0;">
<!ENTITY topcir "&#x2AF1;">
<!ENTITY nhpar "&#x2AF2;">
<!ENTITY parsim "&#x2AF3;">
<!ENTITY parsl "&#x2AFD;">
<!ENTITY fflig "&#xFB00;">
<!ENTITY filig "&#xFB01;">
<!ENTITY fllig "&#xFB02;">
<!ENTITY ffilig "&#xFB03;">
<!ENTITY ffllig "&#xFB04;">
<!ENTITY Ascr "&#x1D49C;">
<!ENTITY Cscr "&#x1D49E;">
<!ENTITY Dscr "&#x1D49F;">
<!ENTITY Gscr "&#x1D4A2;">
<!ENTITY Jscr "&#x1D4A5;">
<!ENTITY Kscr "&#x1D4A6;">
<!ENTITY Nscr "&#x1D4A9;">
<!ENTITY Oscr "&#x1D4AA;">
<!ENTITY Pscr "&#x1D4AB;">
<!ENTITY Qscr "&#x1D4AC;">
<!ENTITY Sscr "&#x1D4AE;">
<!ENTITY Tscr "&#x1D4AF;">
<!ENTITY Uscr "&#x1D4B0;">
<!ENTITY Vscr "&#x1D4B1;">
<!ENTITY Wscr "&#x1D4B2;">
<!ENTITY Xscr "&#x1D4B3;">
<!ENTITY Yscr "&#x1D4B4;">
<!ENTITY Zscr "&#x1D4B5;">
<!ENTITY ascr "&#x1D4B6;">
<!ENTITY bscr "&#x1D4B7;">
<!ENTITY cscr "&#x1D4B8;">
<!ENTITY dscr "&#x1D4B9;">
<!ENTITY fscr "&#x1D4BB;">
<!ENTITY hscr "&#x1D4BD;">
<!ENTITY iscr "&#x1D4BE;">
<!ENTITY jscr "&#x1D4BF;">
<!ENTITY kscr "&#x1D4C0;">
<!ENTITY lscr "&#x1D4C1;">
<!ENTITY mscr "&#x1D4C2;">
<!ENTITY nscr "&#x1D4C3;">
<!ENTITY pscr "&#x1D4C5;">
<!ENTITY qscr "&#x1D4C6;">
<!ENTITY rscr "&#x1D4C7;">
<!ENTITY sscr "&#x1D4C8;">
<!ENTITY tscr "&#x1D4C9;">
<!ENTITY uscr "&#x1D4CA;">
<!ENTITY vscr "&#x1D4CB;">
<!ENTITY wscr "&#x1D4CC;">
<!ENTITY xscr "&#x1D4CD;">
<!ENTITY yscr "&#x1D4CE;">
<!ENTITY zscr "&#x1D4CF;">
<!ENTITY Afr "&#x1D504;">
<!ENTITY Bfr "&#x1D505;">
<!ENTITY Dfr "&#x1D507;">
<!ENTITY Efr "&#x1D508;">
<!ENTITY Ffr "&#x1D509;">
<!ENTITY Gfr "&#x1D50A;">
<!ENTITY Jfr "&#x1D50D;">
<!ENTITY Kfr "&#x1D50E;">
<!ENTITY Lfr "&#x1D50F;">
<!ENTITY Mfr "&#x1D510;">
<!ENTITY Nfr "&#x1D511;">
<!ENTITY Ofr "&#x1D512;">
<!ENTITY Pfr "&#x1D513;">
<!ENTITY Qfr "&#x1D514;">
<!ENTITY Sfr "&#x1D516;">
<!ENTITY Tfr "&#x1D517;">
<!ENTITY Ufr "&#x1D518;">
<!ENTITY Vfr "&#x1D519;">
<!ENTITY Wfr "&#x1D51A;">
<!ENTITY Xfr "&#x1D51B;">
<!ENTITY Yfr "&#x1D51C;">
<!ENTITY afr "&#x1D51E;">
<!ENTITY bfr "&#x1D51F;">
<!ENTITY cfr "&#x1D520;">
<!ENTITY dfr "&#x1D521;">
<!ENTITY efr "&#x1D522;">
<!ENTITY ffr "&#x1D523;">
<!ENTITY gfr "&#x1D524;">
<!ENTITY hfr "&#x1D525;">
<!ENTITY ifr "&#x1D526;">
<!ENTITY jfr "&#x1D527;">
<!ENTITY kfr "&#x1D528;">
<!ENTITY lfr "&#x1D529;">
<!ENTITY mfr "&#x1D52A;">
<!ENTITY nfr "&#x1D52B;">
<!ENTITY ofr "&#x1D52C;">
<!ENTITY pfr "&#x1D52D;">
<!ENTITY qfr "&#x1D52E;">
<!ENTITY rfr "&#x1D52F;">
<!ENTITY sfr "&#x1D530;">
<!ENTITY tfr "&#x1D531;">
<!ENTITY ufr "&#x1D532;">
<!ENTITY vfr "&#x1D533;">
<!ENTITY wfr "&#x1D534;">
<!ENTITY xfr "&#x1D535;">
<!ENTITY yfr "&#x1D536;">
<!ENTITY zfr "&#x1D537;">
<!ENTITY Aopf "&#x1D538;">
<!ENTITY Bopf "&#x1D539;">
<!ENTITY Dopf "&#x1D53B;">
<!ENTITY Eopf "&#x1D53C;">
<!ENTITY Fopf "&#x1D53D;">
<!ENTITY Gopf "&#x1D53E;">
<!ENTITY Iopf "&#x1D540;">
<!ENTITY Jopf "&#x1D541;">
<!ENTITY Kopf "&#x1D542;">
<!ENTITY Lopf "&#x1D543;">
<!ENTITY Mopf "&#x1D544;">
<!ENTITY Oopf "&#x1D546;">
<!ENTITY Sopf "&#x1D54A;">
<!ENTITY Topf "&#x1D54B;">
<!ENTITY Uopf "&#x1D54C;">
<!ENTITY Vopf "&#x1D54D;">
<!ENTITY Wopf "&#x1D54E;">
<!ENTITY Xopf "&#x1D54F;">
<!ENTITY Yopf "&#x1D550;">
<!ENTITY aopf "&#x1D552;">
<!ENTITY bopf "&#x1D553;">
<!ENTITY copf "&#x1D554;">
<!ENTITY dopf "&#x1D555;">
<!ENTITY eopf "&#x1D556;">
<!ENTITY fopf "&#x1D557;">
<!ENTITY gopf "&#x1D558;">
<!ENTITY hopf "&#x1D559;">
<!ENTITY iopf "&#x1D55A;">
<!ENTITY jopf "&#x1D55B;">
<!ENTITY kopf "&#x1D55C;">
<!ENTITY lopf "&#x1D55D;">
<!ENTITY mopf "&#x1D55E;">
<!ENTITY nopf "&#x1D55F;">
<!ENTITY oopf "&#x1D560;">
<!ENTITY popf "&#x1D561;">
<!ENTITY qopf "&#x1D562;">
<!ENTITY ropf "&#x1D563;">
<!ENTITY sopf "&#x1D564;">
<!ENTITY topf "&#x1D565;">
<!ENTITY uopf "&#x1D566;">
<!ENTITY vopf "&#x1D567;">
<!ENTITY wopf "&#x1D568;">
<!ENTITY xopf "&#x1D569;">
<!ENTITY yopf "&#x1D56A;">
<!ENTITY zopf "&#x1D56B;">
PAD<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 12 12" xml:space="preserve">
<g>
	<path fill="#000100" d="M7.9,0C8.3,0,8.6,0,9,0.1s0.7,0.2,1,0.4s0.6,0.4,0.8,0.6s0.5,0.5,0.6,0.8s0.3,0.6,0.4,1S12,3.7,12,4.1
		s0,0.7-0.1,1.1s-0.2,0.7-0.4,1S11,6.8,10.8,7S10.3,7.5,10,7.7S9.3,8,9,8.1S8.3,8.2,7.9,8.2c-0.5,0-1-0.1-1.4-0.2S5.6,7.6,5.2,7.3
		l-4.6,4.6C0.6,12,0.5,12,0.4,12s-0.2,0-0.3-0.1S0,11.7,0,11.6s0-0.2,0.1-0.3l4.6-4.6C4.4,6.4,4.2,6,4,5.5S3.8,4.6,3.8,4.1
		c0-0.4,0-0.7,0.1-1.1s0.2-0.7,0.4-1S4.7,1.5,5,1.2s0.5-0.5,0.8-0.6s0.6-0.3,1-0.4S7.5,0,7.9,0z M7.9,7.5c0.5,0,0.9-0.1,1.3-0.3
		s0.8-0.4,1.1-0.7s0.5-0.7,0.7-1.1s0.3-0.8,0.3-1.3S11.2,3.2,11,2.8S10.6,2,10.3,1.7S9.6,1.2,9.2,1S8.3,0.8,7.9,0.8S7,0.8,6.6,1
		S5.8,1.4,5.5,1.7S4.9,2.4,4.8,2.8S4.5,3.7,4.5,4.1S4.6,5,4.8,5.4s0.4,0.8,0.7,1.1s0.7,0.5,1.1,0.7S7.4,7.5,7.9,7.5z"/>
</g>
</svg>
P<!doctype html>
<html dir="ltr">
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta charset="UTF-8"/>
    <style type="text/css">
      .hidden {
          display: none !important;
      }

      body {
          margin: 0px;
          padding: 0px;
      }

      .gripper {
          text-align: center;
          -ms-user-select: none;
          -ms-touch-action: none;
          cursor: move;
          color: #999;
          font-family: "Segoe UI";
          font-size: 14px;
      }

      /* overview */

      #overview {
          box-sizing: border-box;
          width: 283px;
          height: 128px;
          margin: 6px;
          border: solid 1px #AAA;
          display: -ms-grid;
          -ms-grid-columns: (70px)[4];
          -ms-grid-rows: 14px 70px 38px;
      }

      #overview .gripper {
          -ms-grid-row: 1;
          -ms-grid-column: 1;
          -ms-grid-column-span: 4;
      }

      #overview .metric {
          -ms-grid-row: 2;
          font-family: "Segoe UI";
          font-weight: 500;
          -ms-user-select: none;
      }

      #overview .metric.box {
          box-sizing: border-box;
          width: 69px;
          height: 69px;
          margin: 1px;
      }

      #overview .metric.bar {
          box-sizing: border-box;
          height: 38px;
          line-height: 38px;
          cursor: default;
      }

      #overview a {
          display: inline-block;
          cursor: pointer;
          border: 1px solid white; /* invisible border to prevent pixel-shifting */
      }

      #overview .headline {
          font-size: 16pt;
          text-align: center;
          padding-bottom: 3px;
      }

      #overview .inline {
          font-size: 9pt;
      }

      #overview .unit {
          font-size: 9pt;
          text-align: center;
      }

      #overview #paintTime {
          -ms-grid-column: 1;
      }

      #overview #paintTime:hover {
          border: 1px solid rgb(77, 166, 12);
          background: rgb(219, 237, 206);
      }

      #overview #paintTime:active {
          border: 1px solid rgb(77, 166, 12);
          background: rgb(77, 166, 12);
      }

      #overview #frameRate {
          -ms-grid-column: 2;
      }

      #overview #frameRate:hover {
          border: 1px solid rgb(167, 79, 1);
          background: rgb(238, 222, 207);
      }

      #overview #frameRate:active {
          border: 1px solid rgb(167, 79, 1);
          background: rgb(224, 130, 47);
      }

      #overview #memory {
          -ms-grid-column: 3;
      }

      #overview #memory:hover {
          border: 1px solid rgb(139, 18, 174);
          background: rgb(236, 222, 240);
      }

      #overview #memory:active {
          border: 1px solid rgb(139, 18, 174);
          background: rgb(129, 114, 133);
      }

      #overview #cpu {
          -ms-grid-column: 4;
      }

      #overview #cpu:hover {
          border: 1px solid rgb(17, 125, 187);
          background: rgb(217, 234, 244);
      }

      #overview #cpu:active {
          border: 1px solid rgb(17, 128, 187);
          background: rgb(51, 134, 181);
      }

      #overview #network {
          text-align: center;
          -ms-grid-row: 3;
          -ms-grid-column: 1;
          -ms-grid-column-span: 4;
      }

      #overview .forwardButton {
          -ms-grid-column: 4;
          -ms-grid-row: 3;
          -ms-grid-column-align: end;
          -ms-grid-row-align: end;
          color: #999;
          cursor: pointer;
      }

      /* extraOverview */

      #extraOverview {
          box-sizing: border-box;
          width: 283px;
          height: 278px;
          margin: 6px;
          padding-left: 15px;
          padding-right: 15px;
          border: solid 1px #AAA;
          display: -ms-grid;
          -ms-grid-columns: 100%;
          -ms-grid-rows: 14px (25px)[10];
          font-family: "Segoe UI";
      }

      #extraOverview .gripper {
          -ms-grid-column: 1;
          -ms-grid-row: 1;
      }

      #extraOverview .backButton {
          -ms-grid-column: 1;
          -ms-grid-row: 11;
          -ms-grid-column-align: end;
          -ms-grid-row-align: end;
          color: #999;
          cursor: pointer;
      }

      #extraOverview #irStatus {
          text-align: left;
          -ms-grid-row: 2;
          -ms-grid-column: 1;
          cursor: pointer;
      }

      /* details */

      #details {
          box-sizing: border-box;
          border: solid 1px #AAA;
          width: 283px;
          height: 278px;
          margin: 6px;
          padding-left: 15px;
          padding-right: 15px;
          display: -ms-grid;
          -ms-grid-columns: 80% 20%;
          -ms-grid-rows: 14px 30px 14px 164px 14px;
          font-family: "Segoe UI";
      }

      #details .gripper {
          -ms-grid-column: 1;
          -ms-grid-row: 1;
          -ms-grid-column-span: 2;
      }

      #details .label {
          -ms-user-select: none;
          cursor: default;
      }

      #details .headline {
          -ms-grid-column: 1;
          -ms-grid-row: 2;
          font-size: 16pt;
      }

      #details .value {
          -ms-grid-column: 2;
          -ms-grid-row: 2;
          -ms-grid-column-align: end;
          font-size: 16pt;
      }

      #details .description {
          -ms-grid-column: 1;
          -ms-grid-row: 3;
          font-size: 9pt;
          color: #777;
      }

      #details .y-max {
          -ms-grid-column: 2;
          -ms-grid-row: 3;
          -ms-grid-column-align: end;
          font-size: 9pt;
          color: #777;
      }

      #details .x-min {
          -ms-grid-column: 1;
          -ms-grid-row: 5;
          font-size: 9pt;
          color: #777;
      }

      #details .y-min {
          -ms-grid-column: 2;
          -ms-grid-row: 5;
          -ms-grid-column-align: end;
          font-size: 9pt;
          color: #777;
      }

      #details #graphContainer {
          -ms-grid-column: 1;
          -ms-grid-column-span: 2;
          -ms-grid-row: 4;
          /* width: 100%; */
          width: 250px;
          height: 160px;
          margin-top: 4px;
          cursor: pointer;
      }

      #details #graph #memory {
          display: none;
      }

      #details #graph line.border.horizontal {
          stroke-width: 3;
      }

      #details #graph line.border.vertical {
          stroke-width: 3;
      }

      #details #graph line.grid.horizontal {
          stroke-width: 2;
      }

      #details #graph line.grid.vertical {
          stroke-width: 2;
      }

      /* memory graph */
      #details.memory #graph #memory {
          display: block;
      }

      #details #graph #memory polygon#graphData {
          fill: rgba(129, 114, 133, 0.1);
          stroke: rgb(149, 40, 180);
          stroke-width: 4;
      }

      #details.memory #graph #lines line.border {
          stroke: rgb(139, 18, 174);
      }

      #details.memory #graph #lines line.grid {
          stroke: rgb(236, 222, 240);
      }

      /* paintTime graph */
      #details.paintTime #graph #paintTime {
          display: block;
      }

      #details.paintTime #graph #lines line.border {
          stroke: rgb(77, 166, 12);
      }

      #details.paintTime #graph #lines line.grid {
          stroke: rgb(219, 237, 206);
      }

      #details.paintTime #graph #paintTime #graphData line {
          stroke: rgb(77, 166, 12);
          stroke-width: 4;
      }

      /* frameRate graph */
      #details.frameRate #graph #frameRate {
          display: block;
      }

      #details.frameRate #graph #lines line.border {
          stroke: rgb(167, 79, 1);
      }

      #details.frameRate #graph #lines line.grid {
          stroke: rgb(238, 222, 207);
      }

      #details.frameRate #graph #frameRate #graphData rect {
          fill: rgba(224, 130, 47, 0.5);
          stroke: rgb(167, 79, 1);
          stroke-width: 1;
      }

      /* cpu graph */
      #details.cpu #graph #cpu {
          display: block;
      }

      #details.cpu #graph #lines line.border {
          stroke: rgb(17, 125, 187);
      }

      #details.cpu #graph #lines line.grid {
          stroke: rgb(217, 234, 244);
      }

      #details.cpu #graph #graphData rect.kind0 {
          fill: rgba(129, 114, 133, 0.5);
      }

      #details.cpu #graph #graphData rect.kind1 {
          fill: rgba(224, 130, 47, 0.5);
      }

      #details.cpu #graph #graphData rect.kind2 {
          fill: rgba(77, 166, 12, 0.5);
      }

      #details.cpu #graph #graphData rect.kindTotal {
          fill: rgba(51, 134, 181, 0.5);
      }

      /* extraDetails */

      #extraDetails {
          box-sizing: border-box;
          width: 283px;
          height: 278px;
          margin: 6px;
          border: solid 1px #AAA;
          padding-left: 15px;
          padding-right: 15px;
          display: -ms-grid;
          -ms-grid-columns: 100%;
          -ms-grid-rows: 14px 35px 25px;
          font-family: "Segoe UI";
          cursor: pointer;
      }

      #extraDetails .gripper {
          -ms-grid-column: 1;
          -ms-grid-row: 1;
      }

      #extraDetails #irEnabled {
          text-align: left;
          -ms-grid-row: 2;
          -ms-grid-column: 1;
          font-size: 14pt;
      }

      #extraDetails #irDisablingContent {
          text-align: left;
          -ms-grid-row: 3;
          -ms-grid-column: 1;
          font-size: 10pt;
      }


      /* paint time graph */

    </style>
    <!-- <script type="text/javascript" src="external.js"></script> -->
    <script type="text/javascript">
      var string_percent = "";
      var string_zeroPercent = "";

      var maxCpuSpeed = null;

      var panes = {
          svg: null,

          /*
           common properties set in initializer:
            - yMax/yMin
            - value
           */

          cpu: {
              overview: null,
              graph: null,
              graphElement: null,
              timer: updateCpuGraph,
              period: 1000,
              dataRetention: 60000,
              data: [],
              last: null,
              lastTotal: null,
              lastTime: null
          },

          memory: {
              overview: null,
              graph: null,
              graphElement: null,
              timer: updateMemoryGraph,
              period: 1000,
              dataRetention: 60000,
              data: [],
              last: null
          },

          paintTime: {
              overview: null,
              graph: null,
              graphElement: null,
              timer: updatePaintTimeGraph,
              period: 100,
              dataRetention: 6 * external.performanceCounterFrequency, //6 seconds
              data: [],
              last: null
          },

          frameRate: {
              overview: null,
              graph: null,
              graphElement: null,
              timer: updateFrameRateGraph,
              period: 1000,
              start: null,
              dataRetention: 2 * external.performanceCounterFrequency, //pruned manually really
              data: [],
              last: null,
              buckets: {},
              firstBucketTime: null,
              lastBucketTime: null
          },

          network: {
              overview: null,
              data: {
                  activeRequests: { }
              }
          },

          irEnabled: {
              overview: null
          },

          irDisablingContent: {
              overview: null
          }
      };

      var overviewTimer = null;
      var paneTimer = null;
      var extraDetailsTimer = null;

      /* overview functions */

      function getCurrentMemoryUsageString() {
          var memory = external.getMemoryUsage() / 1048576; //MB
          return memory.toFixed(1);
      }

      function getCurrentCpuUsageString() {
          if(maxCpuSpeed == null)
              return "N/A";

          var cpuUsageDelta = 0;
          var prevTime = panes.cpu.lastTime;
          var now = new Date().getTime();
          var cpuUsage = external.getProcessCpuUsage();
          if(panes.cpu.lastTotal !== null) {              
              cpuUsageDelta = cpuUsage - panes.cpu.lastTotal;
          }
          panes.cpu.lastTotal = cpuUsage;      
          panes.cpu.lastTime = now;

          var deltaT = (now - prevTime) / 1000;

          if(prevTime === null)
              return string_zeroPercent;

          return (cpuUsageDelta / (external.maxCpuSpeed * deltaT / 100)).toFixed(0) + string_percent; //MHz
      }

      function getCurrentPaintTimeString() {
          var paintTime = external.averagePaintTime;
          return isNaN(paintTime) ? "-" : paintTime.toFixed(1);
      }

      function getCurrentFrameRateString() {
          var frameTime = external.averageFrameTime;
          if(isNaN(frameTime) || frameTime < (1000 / 60))
              return 60;

          return (1000 / frameTime).toFixed(0);
      }

      function getIREnabledString() {
          var IRAvailable = external.irStatusAvailable;
          var IREnabled = external.independentRenderingEnabled;
          return (IRAvailable ? (IREnabled ? "On" : "Off") : "-");
      }
      
      function getIRDisablingContentString() {
          var IREnabled = external.independentRenderingEnabled;
          var IRDisablingContent;
          if (!IREnabled) {
              IRDisablingContent = external.irDisablingContentString;
          }
          return (IREnabled ? "" : ("" + IRDisablingContent));
      }

      function updateOverview() {
          panes.memory.overview.innerText = getCurrentMemoryUsageString();
          panes.paintTime.overview.innerText = getCurrentPaintTimeString();
          panes.frameRate.overview.innerText = getCurrentFrameRateString();
          panes.cpu.overview.innerText = getCurrentCpuUsageString();
          panes.network.overview.innerText = external.activeNetworkRequestCount;
      }

      function showOverview() {
          EnsureCorrectExtraOverviewButton();

          overviewTimer = setInterval(updateOverview, 1000);
          document.getElementById("overview").classList.remove("hidden");
          external.resizeWindow(295, 140);
      }

      function hideOverview() {
          clearInterval(overviewTimer);
          overviewTimer = null;
          document.getElementById("overview").classList.add("hidden");
      }

      function makeGridlines() {
          var g = document.getElementById("lines");

          for(var i = 1; i < 10; ++i) {
              var line = document.createElementNS("http://www.w3.org/2000/svg", "line");
              line.setAttribute("x1", 0);
              line.setAttribute("y1", gHeight * i / 10);
              line.setAttribute("x2", gWidth);
              line.setAttribute("y2", gHeight * i / 10);
              line.setAttribute("class", "grid horizontal");
              g.appendChild(line);
          }

          for(var i = 1; i < 6; ++i) {
              var line = document.createElementNS("http://www.w3.org/2000/svg", "line");
              line.setAttribute("x1", gWidth * i / 6);
              line.setAttribute("y1", 0);
              line.setAttribute("x2", gWidth * i / 6);
              line.setAttribute("y2", gHeight);
              line.setAttribute("class", "grid vertical");
              g.appendChild(line);
          }

          var borders = [
              [0, 0, 0, gHeight, "vertical"], //left
              [0, 0, gWidth, 0, "horizontal"], //top
              [gWidth, 0, gWidth, gHeight, "vertical"], //right
              [0, gHeight, gWidth, gHeight, "horizontal"] ]; //bottom

          for(var i = 0; i < 4; ++i) {
              var border = document.createElementNS("http://www.w3.org/2000/svg", "line");
              border.setAttribute("x1", borders[i][0]);
              border.setAttribute("y1", borders[i][1]);
              border.setAttribute("x2", borders[i][2]);
              border.setAttribute("y2", borders[i][3]);
              border.setAttribute("class", "border " + borders[i][4]);
              g.appendChild(border);
          }
      }

      function showDetailsAndStart(paneId) {
          var labels = document.querySelectorAll("#details>.label " + "." + paneId);
          for(var i = 0; i < labels.length; ++i) {
              labels[i].classList.remove("hidden");
          }
          
          document.querySelector("#details #graph #" + paneId).className.baseVal = "";

          external.resizeWindow(295, 290);

          document.getElementById("details").classList.add(paneId);
          document.getElementById("details").classList.remove("hidden");

          var paneInfo = panes[paneId];
          paneInfo.timer(paneInfo);
          paneTimer = setInterval(function() { paneInfo.timer(paneInfo) }, paneInfo.period);
      }

      function hideDetailsAndStop(paneId) {
          document.querySelector("#details #graph #" + paneId).className.baseVal = "hidden";
          
          var labels = document.querySelectorAll("#details>.label " + "." + paneId);
          for(var i = 0; i < labels.length; ++i) {
              labels[i].classList.add("hidden");
          }

          document.getElementById("details").classList.add("hidden");
          document.getElementById("details").classList.remove(paneId);

          var paneInfo = panes[paneId];
          clearInterval(paneTimer);
          paneTimer = null;
          updateOverview();
      }

      var gCurrentDetails = null;
      function showDetails(id) {
          gCurrentDetails = id;
          hideOverview();
          showDetailsAndStart(id);

          return false;
      }

      function hideDetails() {
          hideDetailsAndStop(gCurrentDetails);
          gCurrentDetails = null;

          showOverview();

          return false;
      }

      function showExtraDetails() {
          extraDetailsTimer = setInterval(updateExtraDetails, 1000);
          hideExtraOverview();
          document.getElementById("extraDetails").classList.remove("hidden");
      }

      function hideExtraDetails() {
          clearInterval(extraDetailsTimer);
          extraDetailsTimer = null;
          document.getElementById("extraDetails").classList.add("hidden");
          showExtraOverview();
      }

      function showExtraOverview() {
          hideOverview();
          external.resizeWindow(300, 290);
          document.getElementById("extraOverview").classList.remove("hidden");
      }

      function hideExtraOverview() {
          document.getElementById("extraOverview").classList.add("hidden");
      }

      function backToOverview() {
          hideExtraOverview();
          showOverview();
      }

      function EnsureCorrectExtraOverviewButton() {
          if (external.extraInformationEnabled) {
              document.getElementById("buttonExtraOverview").classList.remove("hidden");
          }
          else {
              document.getElementById("buttonExtraOverview").classList.add("hidden");
          }
      }

      function handlePaneKey(id, event) {
          if(event.keyCode === 13 || //enter & space
             event.keyCode === 32)
          {
              showDetails(id);
              setTimeout(function() {
                      document.querySelector("#details #graphContainer").focus();
                  }, 0);
              return true;
          }

          return false;
      }

      function handleGraphKey(event) {
          if(event.keyCode === 13 || //enter & space
             event.keyCode === 32)
          {
              var id = gCurrentDetails;
              hideDetails();
              setTimeout(function() {
                      document.querySelector("#overview #" + id).focus();
                  }, 0);
              return true;
          }

          return false;
      }

      function loadStrings() {
          string_percent = document.getElementById("_loc_percent").innerText;
          string_zeroPercent = document.getElementById("_loc_zeroPercent").innerText;
      }

      function go() {
          if(typeof _testing !== "undefined") {
              external = external;
              external._start();
          }

          try {
              maxCpuSpeed = external.maxCpuSpeed;
              mhzIntervals = [0, maxCpuSpeed / 4, maxCpuSpeed / 2, maxCpuSpeed, maxCpuSpeed * 2, maxCpuSpeed * 4, maxCpuSpeed * 6, maxCpuSpeed * 8];
          } catch(x) {
              maxCpuSpeed = null;
          }

          loadStrings();

          EnsureCorrectExtraOverviewButton();

          makeGridlines();

          panes.svg = document.querySelector("#details svg");
          
          var ids = [ "memory", "cpu", "network", "paintTime", "frameRate" ];
          ids.forEach(function(id) {
              panes[id].overview = document.querySelector("#overview #" + id + " .value");
              if("graph" in panes[id]) {
                  panes[id].graph = document.querySelector("#details svg g#" + id);
                  panes[id].graphElement = document.querySelector("#details svg g#" + id + " #graphData");
              }

              panes[id].value = document.querySelector("#details .value ." + id);
              panes[id].yMax = document.querySelector("#details .y-max ." + id);
              panes[id].yMin = document.querySelector("#details .y-min ." + id);
          });

          var extraids = ["irEnabled", "irDisablingContent"];
          extraids.forEach(function (id) {
              panes[id].overview = document.querySelector("#extraDetails #" + id + " .value");
          });

          external.addEventListener("networkRequestInitiated", function(id) { onNetworkRequestInitiated(panes.network, id); });
          external.addEventListener("networkRequestCompleted", function(id) { onNetworkRequestCompleted(panes.network, id); });

          showOverview();
      }

      /* graph functions */

      var gWidth = 500;
      var gHeight = 320;

      var MB = 1048576; //constant
      var mbIntervals = [0, 10 * MB, 20 * MB, 40 * MB, 80 * MB, 100 * MB, 200 * MB, 400 * MB, 800 * MB, 1000 * MB, 2000 * MB, 4000 * MB, 8000 * MB];

      var mhzIntervals = null;

      function _min(min, range, d) {
          for(var i = 1; i < range.length; ++i)
              if(min < range[i])
                  return range[i - 1];

          return d;
      }

      function _max(max, range, d) {
          for(var i = 0; i < range.length; ++i)
              if(max < range[i])
                  return range[i];

          return d;
      }

      function _createPoint() {
          return panes.svg.createSVGPoint();
      }

      function _updateData(info, f, m) {
          var newData = f(info.last);

          if(newData.length === 0)
              return false;

          if(!m)
              m = function(d) { return d; }

          var now = newData[newData.length - 1][0];
          info.last = now;
          
          for(var i = 0; i < newData.length; ++i)
              info.data.push(m(newData[i]));

          while(info.data.length > 0) {
              if(info.data[0][0] < (now - info.dataRetention)) {
                  if(info.data.length > 1 && info.data[1][0] < (now - info.dataRetention)) {
                      info.data.shift();
                  } else {
                      break;
                  }
              } else {
                  break;
              }
          }

          return now;
      }

      /*
         Note: the following functions draw the graphs. It would probably be better to manipulate the
           graphs with transform math (instead of effectively re-rendering the entire graph). However,
           strokes don't play nice with transforms. For example, say you rescale a graph to have a higher
           maximum via "scale(1, 2)", then all strokes will be 2x as tall as they are wide, which looks
           aesthetically terrible. This can be mitigated by using "vector-effect: non-scaling-stroke".
           Unfortunately, that isn't supported in IE11, so we're back to re-rendering the graphs.
       */

      function updateMemoryGraph(info) {
          info.value.innerText = getCurrentMemoryUsageString();

          var now = _updateData(info, external.getRecentMemoryUsage.bind(external));
          if(!now)
              return;

          function xUnits(t) {
              //viewbox is 60 seconds wide (t * gWidth / 60000)
              return gWidth - ((now - t) * gWidth / 60000); 
          }

          function yUnits(m) {
              return gHeight - ((m - min) * gHeight / (max - min));
          }

          var min = null;
          var max = null;
          for(var i = 0; i < info.data.length; ++i) {
              if(min === null || info.data[i][1] < min)
                  min = info.data[i][1];
              if(max === null || info.data[i][1] > max)
                  max = info.data[i][1];
          }

          //min = _min(min, mbIntervals, 0);
          max = _max(max, mbIntervals, 10000 * MB);
          min = min > (max / 2) ? (max / 2) : 0;

          var points = info.graphElement.points;
          points.clear();

          if(xUnits(info.data[0][0]) > 0) {
              var pt = _createPoint();
              pt.x = xUnits(info.data[0][0]);
              pt.y = yUnits(info.data[0][1]);
              points.appendItem(pt);
          }
          
          for(var i = 1; i < info.data.length; ++i) {
              var pt = _createPoint();
              pt.x = xUnits(info.data[i][0]);
              pt.y = yUnits(info.data[i][1]);
              points.appendItem(pt);
          }

          //set the bottom right
          var ptBr = _createPoint();
          ptBr.x = xUnits(now);
          ptBr.y = yUnits(min);
          points.appendItem(ptBr);

          var leftEdge = xUnits(info.data[0][0]);
          if(leftEdge < 0)
              leftEdge = 0;

          //set the bottom left
          var ptBl = _createPoint();
          ptBl.x = leftEdge;
          ptBl.y = yUnits(min);
          points.appendItem(ptBl);

          //set the left point
          var ptL = _createPoint();
          ptL.x = leftEdge;
          ptL.y = yUnits(info.data[0][1]);
          points.appendItem(ptL);
          
          info.yMax.textContent = max / MB;
          info.yMin.textContent = min / MB;
      }

      function updateCpuGraph(info) {
          if(maxCpuSpeed == null)
              return;

          info.value.innerText = getCurrentCpuUsageString();

          //data is [ticks, processUsage, [threadUsage, type, id]+ ]

          function bundle(d) {
              //bundle up each element so that the 2nd element is an object (key = id) 
              var r = [d[0], d[1], {}];

              for(var i = 2; i < d.length; ++i)
                  r[2][d[i][2]] = [d[i][0], d[i][1]];

              return r;
          }

          //data is [ticks, processUsage, {id: [threadUsage, type] }
          
          var now = _updateData(info, external.getRecentCpuUsage.bind(external), bundle);
          if(!now)
              return;

          function xUnits(t) {
              //viewbox is 60 seconds wide (t * gWidth / 60000)
              return gWidth - ((now - t) * gWidth / 60000); 
          }

          function xDelta(dt) {
              return (dt * gWidth / 60000); 
          }

          function yUnits(c) {
              return gHeight - ((c - min) * gHeight / (max - min));
          }

          function yDelta(dc) {
              return (dc * gHeight / (max - min));
          }

          var min = null;
          var max = null;
          for(var i = 1; i < info.data.length; ++i) {
              var d = info.data[i][1] - info.data[i - 1][1];
              if(min === null || d < min)
                  min = d;
              if(max === null || d > max)
                  max = d;
          }

          min = 0;
          max = _max(max, mhzIntervals, external.maxCpuSpeed * 128);

          var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
          g.setAttribute("id", "graphData");

          for(var i = 1; i < info.data.length; ++i) {
              var d = info.data[i];
              var pd = info.data[i - 1];
              var dt = d[0] - pd[0];
              var cycles = 0;
              var w = xDelta(dt);
              var x = xUnits(d[0]) - w;

              if(x < xUnits(now - 60000)) {
                  var oldX = x;
                  x = xUnits(now - 60000);
                  w = w - (x - oldX);
              }

              for(var threadId in d[2]) {
                  var threadData = d[2][threadId];
                  var deltaCycles = 0;
                  if(threadId in pd[2]) {
                      var prevThreadData = pd[2][threadId];
                      deltaCycles += (threadData[0] - prevThreadData[0]);
                  }
                  
                  if(deltaCycles > 0) {
                      var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
                      var h = yDelta(deltaCycles);
                      r.setAttribute("x", x);
                      r.setAttribute("y", yUnits(cycles) - h);
                      r.setAttribute("width", w);
                      r.setAttribute("height", h);
                      r.setAttribute("class", "kind" + threadData[1]);
                      
                      cycles += deltaCycles;

                      g.appendChild(r);
                  }
              }

              var deltaCycles = d[1] - pd[1] - cycles;
              var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
              var h = yDelta(deltaCycles);
              r.setAttribute("x", x);
              r.setAttribute("y", yUnits(cycles) - h);
              r.setAttribute("width", w);
              r.setAttribute("height", h);
              r.setAttribute("class", "kindTotal");
                            
              g.appendChild(r);
          }

          // about 5x faster to replace the <g> element instead of removing & adding children
          info.graph.removeChild(info.graphElement);
          info.graphElement = g;
          info.graph.appendChild(g);

          info.yMax.textContent = max * 100 / external.maxCpuSpeed + "%";
      }

      ////

      function updatePaintTimeGraph(info) {
          info.value.innerText = getCurrentPaintTimeString();

          //data is [ [beatStartPerfCount, beatEndPerfCount]+ ]
          
          _updateData(info, external.getRecentPaintRequests.bind(external));
          var now = external.performanceCounter;

          var duration = 6 * external.performanceCounterFrequency; // 6 seconds

          function xUnits(t) {
              return gWidth - ((now - t) * gWidth / duration); 
          }

          function yUnits(c) {
              return gHeight - ((c - min) * gHeight / (max - min));
          }

          var min = 0;
          var max = external.performanceCounterFrequency / 10; //100 ms

          var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
          g.setAttribute("id", "graphData");

          for(var i = 0; i < info.data.length; ++i) {
              var beat = info.data[i];
              var x = xUnits(beat[0]);

              if(x < 0) {
                  info.data.shift();
                  --i;
                  continue;
              }

              var line = document.createElementNS("http://www.w3.org/2000/svg", "line");
              line.setAttribute("x1", x);
              line.setAttribute("y1", gHeight);
              line.setAttribute("x2", x);
              line.setAttribute("y2", Math.max(yUnits(beat[1] - beat[0]), 0));

              g.appendChild(line);
          }

          info.graph.removeChild(info.graphElement);
          info.graphElement = g;
          info.graph.appendChild(g);
      }

      ////

      function updateFrameRateGraph(info) {
          info.value.innerText = getCurrentFrameRateString();

          //raw data is [ [prevFrameStartPerfCount, currentFrameStartPerfCount]+ ]

          _updateData(info, external.getRecentFrames.bind(external));
          var now = external.performanceCounter;

          var pcf = external.performanceCounterFrequency;
          var duration = 6;

          if(info.start === null)
              info.start = parseInt(now / pcf);

          function xUnits(t) {
              return gWidth - (t * gWidth / duration); 
          }

          function xDelta(t) {
              return (t * gWidth / duration); 
          }

          function yDelta(fps) {
              return fps * gHeight / 60;
          }

          //bucket data is { bucket#: [ next#, time, frames, paintTime ] }

          function bid(b) {
              //objects don't like to be indexed by large number-like things
              return "b-" + b.toString();
          }

          // delete old buckets
          var currentBucketTime = parseInt(now / pcf);
          while(info.firstBucketTime !== null) {
              if(info.firstBucketTime < (currentBucketTime - (duration + 1))) {
                  if(info.lastBucketTime === info.firstBucketTime) {
                      info.lastBucketTime = null;
                  }

                  var bucketId = bid(info.firstBucketTime);
                  var firstBucket = info.buckets[bucketId];

                  info.firstBucketTime =
                      (firstBucket[0] !== null) ?
                      info.buckets[firstBucket[0]][1] :
                      null;
                  
                  delete info.buckets[bucketId];
              } else {
                  break;
              }
          }
          
          for(var i = 0; i < info.data.length; ++i) {
              var d = info.data[i];
              var time = parseInt(d[0] / pcf);
              var bucketId = bid(time);

              if(!(bucketId in info.buckets)) {
                  info.buckets[bucketId] = [ null, time, 0, 0 ];
                  if(info.lastBucketTime !== null)
                      info.buckets[bid(info.lastBucketTime)][0] = bucketId;
                  info.lastBucketTime = time;
                  if(info.firstBucketTime === null)
                      info.firstBucketTime = time;
              }

              var bucket = info.buckets[bucketId];
              bucket[2] += 1;
              bucket[3] += d[1] - d[0];
          }

          info.data = [];

          var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
          g.setAttribute("id", "graphData");

          for(var i = 1; i < (duration + 1); ++i) {
              var bucketId = bid(currentBucketTime - i);

              var bucket = [ null, null, 0, 0 ];
              if(bucketId in info.buckets)
                  bucket = info.buckets[bucketId];

              var fps = 60;
              if((currentBucketTime - i) < info.start)
                  continue;
              if(bucket[2] > 0)
                  fps = Math.min(1 / (bucket[3] / bucket[2] / pcf), 60);

              var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
              var y = yDelta(fps);
              r.setAttribute("x", xUnits(i));
              r.setAttribute("y", gHeight - y);
              r.setAttribute("width", xDelta(1));
              r.setAttribute("height", y);

              g.appendChild(r);
          }

          info.graph.removeChild(info.graphElement);
          info.graphElement = g;
          info.graph.appendChild(g);
      }

      ////

      function updateExtraDetails() {
          panes.irEnabled.overview.innerText = getIREnabledString();
          panes.irDisablingContent.overview.innerText = getIRDisablingContentString();
      }

      ////

      function onNetworkRequestInitiated(info, requestId) {
          var now = new Date().getTime();
          info.data.activeRequests[requestId] = true;
      }

      function onNetworkRequestCompleted(info, requestId) {
          if(requestId in info.data.activeRequests) {
              delete info.data.activeRequests[requestId];
          }
      }

      //// gripper functions

      var gGripper = {
          dragging: false,
          lx: null, //last x
          ly: null //last y
      };

      function onGripperDown(e) {
          e.target.setCapture(true);
          gGripper.dragging = true;
          gGripper.lx = e.screenX;
          gGripper.ly = e.screenY;
      }

      function onGripperMove(e) {
          if(e.buttons === 0)
              gGripper.dragging = false;
          
          if(!gGripper.dragging)
              return;

          var dx = e.screenX - gGripper.lx;
          var dy = e.screenY - gGripper.ly;

          if(dx != 0 || dy != 0) {
              external.repositionWindow(dx, dy);
              gGripper.lx = e.screenX;
              gGripper.ly = e.screenY;
          }
      }

      function onGripperUp(e) {
          gGripper.dragging = false;
          e.target.releaseCapture();
      }

      function onGripperKey(event) {
          if(event.keyCode === 37) {
              //left
              external.repositionWindow(-11, 0);
              return true;
          } else if(event.keyCode === 38) {
              //up
              external.repositionWindow(0, -11);
              return true;
          } else if(event.keyCode === 39) {
              //right
              external.repositionWindow(11, 0);
              return true;
          } else if(event.keyCode === 40) {
              //down
              external.repositionWindow(0, 11);
              return true;
          }

          return false;
      }

      ////

    </script>
  </head>
  <body onload="go()" oncontextmenu="return false;">
    <div id="overview">
      <div class="gripper" tabindex="0"
          onmousedown="onGripperDown(event)"
          onmousemove="onGripperMove(event)"
          onmouseup="onGripperUp(event)"
          onkeydown="onGripperKey(event)">
        &bullet; &bullet; &bullet;
      </div>
      <a class="metric box" id="paintTime" tabindex="0"
          onclick="showDetails(this.id)" 
          onkeypress="handlePaneKey(this.id, event)">
        <div class="headline value">
          N/A
        </div>
        <div class="unit" id=_loc_PaintTime>
          Paint time<br/>(msec)
        </div>
      </a>
      <a class="metric box" id="frameRate" tabindex="0"
          onclick="showDetails(this.id)" 
          onkeypress="handlePaneKey(this.id, event)">
        <div class="headline value">
          N/A
        </div>
        <div class="unit" id=_loc_FrameRate>
          Frame rate<br/>(FPS)
        </div>
      </a>
      <a class="metric box" id="memory" tabindex="0"
          onclick="showDetails(this.id)" 
          onkeypress="handlePaneKey(this.id, event)">
        <div class="headline value">
          N/A
        </div>
        <div class="unit" id=_loc_Memory>
          Memory<br/>(MB)
        </div>
      </a>
      <a class="metric box" id="cpu" tabindex="0"
          onclick="showDetails(this.id)" 
          onkeypress="handlePaneKey(this.id, event)">
        <div class="headline value">
          N/A
        </div>
        <div class="unit" id=_loc_CPU>
          CPU<br/>(%)
        </div>
      </a>
      <div class="metric bar" id="network">
        <span class="inline value">
          N/A
        </span>
        <span class="unit" id=_loc_NetworkRequests>
          Network requests
        </span>
      </div>
      <div class="forwardButton hidden" id="buttonExtraOverview" onclick="showExtraOverview()">
        &#x2217;
      </div>
    </div>
    
    <div id="extraOverview" class="hidden">
      <div class="gripper" onmousedown="onGripperDown(event)" onmousemove="onGripperMove(event)" onmouseup="onGripperUp(event)">
        &bullet; &bullet; &bullet;
      </div>
      <div class="metric bar" id="irStatus" onclick="showExtraDetails()">
        <span class="unit" id=_loc_IRStatus>
          Independent Rendering Status
        </span>
      </div>
      <div class="backButton" onclick="backToOverview()">
        &#x2217;
      </div>
     </div>


    <div id="details" class="hidden">
      <div class="gripper" tabindex="0"
          onmousedown="onGripperDown(event)"
          onmousemove="onGripperMove(event)"
          onmouseup="onGripperUp(event)"
          onkeydown="onGripperKey(event)">
        &bullet; &bullet; &bullet;
      </div>
      <div class="headline label">
        <span class="cpu hidden" id=_loc_CPU>CPU</span>
        <span class="memory hidden" id=_loc_Memory>Memory</span>
        <span class="frameRate hidden" id=_loc_FrameRate>Frame Rate</span>
        <span class="paintTime hidden" id=_loc_PaintTime>Paint Time</span>
      </div>
      <div class="value label">
        <span class="cpu hidden" id=_loc_NA>N/A</span>
        <span class="memory hidden" id=_loc_NA>N/A</span>
        <span class="frameRate hidden" id=_loc_NA>N/A</span>
        <span class="paintTime hidden" id=_loc_NA>N/A</span>
      </div>
      <div class="description label">
        <span class="cpu hidden" id=_loc_PcUtilization>% Utilization</span>
        <span class="memory hidden" id=_loc_PrivateWorkingSet>Private bytes (MB)</span>
        <span class="frameRate hidden" id=_loc_FPS>Frames per second</span>
        <span class="paintTime hidden" id=_loc_milliseconds>milliseconds</span>
      </div>
      <div class="y-max label">
        <span class="cpu hidden">100%</span>
        <span class="memory hidden" id=_loc_NA>N/A</span>
        <span class="frameRate hidden">60</span>
        <span class="paintTime hidden">100</span>
      </div>
      <div class="y-min label">
        <span class="cpu hidden">0</span>
        <span class="memory hidden">0</span>
        <span class="frameRate hidden">0</span>
        <span class="paintTime hidden">0</span>
      </div>
      <div class="x-min label">
        <span class="cpu hidden" id=_loc_60Seconds>60 seconds</span>
        <span class="memory hidden" id=_loc_60Seconds>60 seconds</span>
        <span class="frameRate hidden" id=_loc_6Seconds>6 seconds</span>
        <span class="paintTime hidden" id=_loc_6Seconds>6 seconds</span>
      </div>
      <div id="graphContainer" tabindex="0"
          onclick="hideDetails()"
          onkeypress="handleGraphKey(event)">
        <svg id="graph" viewBox="0 0 500 320" version="1.1" preserveAspectRatio="none">
          <g id="lines">
            <!-- populated in makeGridlines -->
          </g>
          <g id="memory">
            <polygon id="graphData"></polygon>
          </g>
          <g id="cpu">
            <g id="graphData">
              <!-- this g is replaced in script -->
            </g>
          </g>
          <g id="paintTime">
            <g id="graphData">
              <!-- this g is replaced in script -->
            </g>
          </g>
          <g id="frameRate">
            <g id="graphData">
              <!-- this g is replaced in script -->
            </g>
          </g>
        </svg>
      </div>
    </div>
    <div id="extraDetails" class="hidden" onclick="hideExtraDetails()">
      <div class="gripper" onmousedown="onGripperDown(event)" onmousemove="onGripperMove(event)" onmouseup="onGripperUp(event)">
        &bullet; &bullet; &bullet;
      </div>
      <div class="metric bar" id="irEnabled">
        <span class="unit" id=_loc_irEnabled>
          Independent Rendering: 
        </span>
        <span class="inline value">
          N/A
        </span>
      </div>
      <div class="metric bar" id="irDisablingContent">
        <span class="inline value">
          N/A
        </span>
      </div>
    </div>
    <div class="hidden"> <!-- for localization -->
      <span id=_loc_percent>%</span>
      <span id=_loc_zeroPercent>0%</span>
    </div>
  </body>
</html>
PA<!DOCTYPE HTML>
<html dir="LTR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
  <title>This Web Content Has Been Reported As Unsafe</title>

  <script type="text/javascript">
    function promptSafeUrl(e) {
      function isExternalUrlSafeForNavigation(urlStr) {
        var regEx = new RegExp("^(http(s?))://", "i");
        return regEx.exec(urlStr);
      }

      function realPageURL() {
        var docURL = window.document.location.href;
        var beginURL = docURL.indexOf("#", 1) + 1;
        var urlresult = docURL.substring(beginURL);

        if (!isExternalUrlSafeForNavigation(urlresult)) {
          return window.document.location.toString();
        }

        return urlresult;
      }

      if (window.external.msPromptSafeUrl()) {
        var smartScreenLink = document.getElementById("smartscreen_link");
        smartScreenLink.href = realPageURL();

        document.removeEventListener('click', promptSafeUrl, false);
        document.removeEventListener('keyup', promptSafeUrlKeyUp, false);
        smartScreenLink.click();
      }

      e.preventDefault();
      e.stopPropagation();
    }

    function promptSafeUrlKeyUp(e) {
      // Only call this for the enter key
      if (e.keyCode == 13) {
        promptSafeUrl(e);
      }
    }

    document.addEventListener('click', promptSafeUrl, false);
    document.addEventListener('keyup', promptSafeUrlKeyUp, false);
  </script>

  <style>
    body {
      background-color: rgb(174, 11, 11);
      font-family: "Segoe UI semilight", "Segoe UI", Verdana, Arial;
      color: #C0C0C0;
      overflow: hidden;
      -ms-content-zooming: none;
      -ms-user-select: none;
    }
    
    a {
      color: #C0C0C0;
    }
    
    img {
      border: 0px;
    }

    #top, #bottom, #left, #right {
      background: #FFFFFF;
    }

    #left, #right {
      position: fixed;
      top: 0;
      bottom: 0;
      width: 1px;
    }

    #left {
      left: 0;
    }

    #right {
      right: 0;
    }

    #top, #bottom {
      position: fixed;
      left: 0;
      right: 0;
      height: 1px;
    }

    #top {
      top: 0;
    }

    #bottom {
      bottom: 0;
    }

    .smartscreen_link {
      display: none;
    }

    /* small */
    @media not all and (min-width: 115px) and (min-height: 115px) {
      .smartscreen_large {
        display: none;
      }

      .image_large {
        display: none;
      }

      .smartscreen_small {
        width: 22px;
        height: 22px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-left: -11px;
        margin-top: -11px;
        display: inherit;
      }
    }

    /* wrapped */
    @media all and (min-width: 115px) and (min-height: 115px) and (max-width: 169px) {
      .smartscreen_large {
        width: 140px;
        height: 100px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-left: -70px;
        margin-top: -50px;
        display: inherit;
      }
      
      .image_large {
        padding-bottom: 7px;
      }

      .smartscreen_small {
        display: none;
      }
    }

    /* single line */
    @media all and (min-width: 170px) and (min-height: 105px) {
      .smartscreen_large {
        width: 200px;
        height: 80px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-left: -100px;
        margin-top: -40px;
        display: inherit;
      }
      
      .image_large {
        display: inherit;
        padding-bottom: 7px;
      }

      .smartscreen_small {
        display: none;
      }
    }
    
  </style>
</head>
<body>
  <div id="Div1">
    <div class="smartscreen_large">
      <center>
        <img id="largeImage" class="image_large" tabIndex="1" alt="This web content has been reported as unsafe." src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhxJREFUeNrsWYtxgzAMNZ2AEegG6QRlBLoB3aAjsEFHMBukncDNBLlMQDZINnClnkmJLxh/ZMfc5d05cAFZT1i2JJuxCJBSttAG+Q+8b1nuAJIltK2cBz4rcya/l8vYZ2cEENpoLrMEfHeTC/kG2km6A2UaqqHnk47xvraQqzQ5X2AflYW+WtMnkHsBP5/w/OOGzBHaF7QdtPPkf1T2Co16VUFd30rviFLpapReHT0aINmK8cRWjocBDwMyMOB4J1kSA/qiKJ7xmlj2KkAMvgFI64cnkr1KSZiKaEHkHYmEyOoQbCH9vW21eUS5K/kAb9jiHDg4el1lIgJ+/T7j1716Nmv4TLpgwmGsniSVG82MBA8YNRPaMZeXEY2IRV5eaorQdDhgBQxKx6cdidRGENQSYhrIdoEBrXUxQr0bWk/s9GqHAjzBlx9RX0YAlrcfrerKHWfFmfTL8IT+z+d2F9YyiRvKxC71MjqYOuxWEMi6pT2i3FOJkmJYfQjx2HqnO265ptOV7eTqfL5E5IKmc90vHVyIRC4pB+ctecu4wAOWQxfZxnedtik3h4CAZCO7NXEsllwJLnuPUo8KuG/0AnnP2WtfSAm+3SnR+9NtIk89H6jRkH6OgOLfr1iPdB7WrpZ8IiPaJLNLbcWcCImfkh+7qmgtCMiLux58e9QQfvlNZCMqx9EQ1pllYkPqBUOEzSF6LoY4n/774FeAAQChSfcFKXfEcAAAAABJRU5ErkJggg=="/>
        <br />
         Microsoft SmartScreen
      </center>
    </div>
    <div class="smartscreen_small">
      <center>
         <img id="smallImage" tabIndex="1" alt="This web content has been reported as unsafe." src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOVJREFUeNrElQERwyAMRdkUTAJzUgmVgIRKmAMkTELroBIyB5NQCRm5pRtHwxHWcvt3OXoEXjn4BGMUQkSPX3mzVwFyCTHjVkC50uQbT6bWRv0uxBPzopyLxtuI5U80wjTQ2TTSX8CPEFdua3KfTc/JRs4AyRF8YKJMxk4pYIVLfZLm1PwluAb6vkTsV9TAlVCSo8ObGphiWlcxHrgVY+yM/sDD61PbwQF2A8nPnbBim1lVLtdp6m6tfKmMwg9Q0Bb3Gni56Ctejs3VVUOTHwwhFgFIfcPed49O/86whb9tad5LgAEAKRi2QKUfvLAAAAAASUVORK5CYII=" />
      </center>
    </div>
  </div>
  <div id="left"></div>
  <div id="right"></div>
  <div id="top"></div>
  <div id="bottom"></div>
  <!-- Continuing through to the unsafe page requires navigation from a link in the document -->
  <a class="smartscreen_link" id="smartscreen_link"></a>
</body>
</html>
PA
function Column(name, attr, width, visible, sortable) {
    'use strict';
    this.TitleName = name;
    this.Attribute = attr;
    this.Width = width;
    this.IsVisible = visible;
    this.IsSortable = sortable;

    if (sortable === true) {
        this.SortOrder = "asc";
    }
}

function GridTable(id, dataArray, pageLength, columnArray, wrapperId) {
    'use strict';
    this.IdTag = id;
    this.Element = document.getElementById(this.IdTag);
    this.Data = dataArray;
    this.SubsetData = dataArray;
    this.PageLength = pageLength;
    this.Columns = columnArray;
    this.StartingIndex = 0;
    this.renderHeadingRow();
    this.sortColumn(0);
    
    let idOfElement = this.IdTag;
    let idOfWrapper = wrapperId;

    // continuous scrolling
    document.getElementById(idOfWrapper).addEventListener('scroll', function () {
        var contentHeight, scrollHeight;
        contentHeight = document.getElementById(idOfElement).offsetHeight;
        scrollHeight = document.getElementById(idOfWrapper).scrollTop + document.getElementById(idOfWrapper).offsetHeight;

        if (scrollHeight >= contentHeight) {
            table.renderDataRows();
        }
    });
}

GridTable.prototype.renderRow = function (row, dataItem) {
    'use strict';
    var j, cell, text, span;
    for (j = 0; j < this.Columns.length; j++) {
        cell = row.insertCell(j);
        if (j == 0) {
            // add a span for a sprite image ('+' or '-')
            span = document.createElement("span");
            span.className = "sprite";
            if (dataItem.IsExpandRow) {
                span.className += " plus";
            }
            cell.appendChild(span);
        }
        text = dataItem[this.Columns[j].Attribute];
        if (text) {
            span = document.createElement("span");
            span.innerHTML = text;
            cell.appendChild(span);
        }
        cell.style.display = this.Columns[j].IsVisible ? "" : "none";
        cell.setAttribute("name", this.Columns[j].Attribute);
    }
};

GridTable.prototype.renderDataRows = function () {
    'use strict';
    var i, row, dataItem, tbodyList, tbody, endingIndex = this.StartingIndex + this.PageLength;

    if (endingIndex >= this.SubsetData.length) {
        endingIndex = this.SubsetData.length - 1;
    }

    tbodyList = this.Element.getElementsByTagName("tbody");

    if (tbodyList && tbodyList.length > 0) {
        tbody = tbodyList[0];
    } else {
        tbody = document.createElement("tbody");
        this.Element.appendChild(tbody);
    }

    for (i = 0; i < this.PageLength && i + this.StartingIndex < this.SubsetData.length; i++) {
        let indexItem = i + this.StartingIndex;
        let idText = "id" + indexItem;
        row = document.createElement("tr");
        row.id = idText;

        row.addEventListener('click', function () {
            table.expandCollapseSubRows(idText);
        });

        dataItem = this.SubsetData[indexItem];
        this.renderRow(row, dataItem);
        tbody.appendChild(row);
    }

    this.StartingIndex += this.PageLength;
};

GridTable.prototype.renderHeadingRow = function () {
    'use strict';
    var i, j, thead, row, col, cell, textSpan, spriteSpan;
    // Create <col /> elements for each column
    for (i = 0; i < this.Columns.length; i++) {
        col = document.createElement("col");
        col.width = this.Columns[i].Width;
        this.Element.appendChild(col);
    }

    // create <th> elements for each column
    thead = document.createElement("thead");
    row = document.createElement("tr");
    for (j = 0; j < this.Columns.length; j++) {
        cell = document.createElement("th");

        if (this.Columns[j].IsSortable) {
            let colIndex = j;
            cell.addEventListener('click', function () {
                table.sortColumn(colIndex);
            });
            spriteSpan = document.createElement("span");
            spriteSpan.className = "sprite up";
            cell.appendChild(spriteSpan);
            cell.className = "sortable-column";
        }
        textSpan = document.createElement("span");
        textSpan.textContent = this.Columns[j].TitleName;
        cell.appendChild(textSpan);
        cell.style.display = this.Columns[j].IsVisible ? "" : "none";
        cell.setAttribute("name", this.Columns[j].Attribute);
        cell.id = "col-header-" + this.Columns[j].Attribute;
        row.appendChild(cell);
    }
    thead.appendChild(row);
    this.Element.appendChild(thead);
};

GridTable.prototype.deleteDataRows = function () {
    'use strict';
    var table = this.Element;
    while (table.rows.length > 1) {
        table.deleteRow(table.rows.length - 1);
    }
};

GridTable.prototype.search = function (query) {
    'use strict';
    this.SubsetData = [];
    var queryLower, i, j, text;

    if (query && query.length > 0) {
        queryLower = query.toLowerCase();
        for (i = 0; i < this.Data.length; i++) {
            for (j = 0; j < this.Columns.length; j++) {
                text = this.Data[i][this.Columns[j].Attribute];
                if (text) {
                    if (text.toLowerCase().indexOf(queryLower) >= 0) {
                        this.SubsetData.push(this.Data[i]);
                        break;
                    }
                }
            }
        }
    } else {
        this.SubsetData = this.Data;
    }
    
    this.StartingIndex = 0;
    this.deleteDataRows();
    this.renderDataRows();
};

GridTable.prototype.countOfResults = function () {
    'use strict';
    return this.SubsetData.length;
};

GridTable.prototype.columnVisibility = function (column, isVisible) {
    'use strict';
    // change visibility of table cells renderDataRowsed on the users screen.
    var i, j, cellElements = document.getElementsByName(column);

    for (i = 0; i < cellElements.length; i++) {
        if (isVisible) {
            cellElements[i].style.display = "";
        } else {
            cellElements[i].style.display = "none";
        }
    }

    // change visibility setting of the column
    for (j = 0; j < this.Columns.length; j++) {
        if (this.Columns[j].Attribute === column) {
            this.Columns[j].IsVisible = isVisible;
        }
    }
};

GridTable.prototype.expandCollapseSubRows = function (parentRowId) {
    'use strict';
    var tableRowsArray = this.Element.rows, i, j, indexOfParentRow, dataElement, isExpanded, expandedRows, row, parentRow = document.getElementById(parentRowId);

    for (i = 0; i < tableRowsArray.length; i++) {
        if (tableRowsArray[i].id === parentRowId) {
            indexOfParentRow = parseInt(parentRowId.substring(2), 10);
            dataElement = this.SubsetData[indexOfParentRow];

            if (dataElement.IsExpandRow) {
                isExpanded = parentRow.getAttribute("data-expanded");

                if (isExpanded === "true") {
                    // If sub rows are shown then remove them
                    expandedRows = document.getElementsByClassName("class-" + parentRow.id);
                    while (expandedRows.length > 0) {
                        expandedRows[0].parentNode.removeChild(expandedRows[0]);
                    }
                    parentRow.setAttribute("data-expanded", false);
                    parentRow.className = "";
                    parentRow.getElementsByClassName("sprite")[0].className = "sprite plus";
                } else {
                    // if sub rows are not present then add them
                    parentRow.setAttribute("data-expanded", true);
                    parentRow.className = "collapsible-row";
                    parentRow.getElementsByClassName("sprite")[0].className = "sprite minus";
                    for (j = 0; j < dataElement.SubRows.length; j++) {
                        row = this.Element.insertRow(i + 1 + j);

                        // add a class to each row. This will be helpful when the rows need to be removed
                        row.className = "sub-row class-" + parentRow.id;
                        
                        if(j === 0) {
                            row.className += " applied-row";
                        }
                        if (j + 1 == dataElement.SubRows.length) {
                            // if last row 
                            row.className += " last-sub-row";
                        }
                        this.renderRow(row, dataElement.SubRows[j]);
                    }
                }
            }
        }
    }
};

GridTable.prototype.sortColumn = function (columnIndex) {
    'use strict';
    var colElement, spriteSpan, columnAttribute = this.Columns[columnIndex].Attribute, sortOrder = this.Columns[columnIndex].SortOrder;
    this.SubsetData.sort(function (a, b) {
        let x = "", y = "";

        if (a[columnAttribute]) {
            x = a[columnAttribute].toLowerCase();
        }
        if (b[columnAttribute]) {
            y = b[columnAttribute].toLowerCase();
        }

        if (sortOrder === "asc") {
            return x < y ? -1 : x > y ? 1 : 0;
        }
        return x > y ? -1 : x < y ? 1 : 0;
    });


    colElement = document.getElementById("col-header-" + this.Columns[columnIndex].Attribute);
    var spriteSpan = colElement.getElementsByClassName("sprite")[0];
    if (sortOrder === "asc") {
        this.Columns[columnIndex].SortOrder = "desc";
        spriteSpan.className = "sprite up";
        
    } else {
        this.Columns[columnIndex].SortOrder = "asc";
        spriteSpan.className = "sprite down";
    }

    spriteSpan.setAttribute("role", "presentation");

    this.StartingIndex = 0;
    this.deleteDataRows();
    this.renderDataRows();
};
PAD(function()
{
    var XHTML = "http://www.w3.org/1999/xhtml";
    
    // Time slicing constants
    var LIMIT    =  10; // Maximum number of nodes to process before checking time
    var DURATION = 200; // Maximum amount of time (ms) to process before unblocking UI
    var DELAY    =  15; // Amount of time (ms) to unblock UI

    // Tree building state
    var iterator;
    var nextNode;
    var root;
    var rootFirstChild;
    var time;
    
    // Template References
    var attrTemplate, attrName, attrValue;
    var elmStartTemplate, elmStartName;
    var elmEndTemplate, elmEndName;
    var cdataTemplate, cdataValue;
    var commentTemplate, commentValue;
    var style;    
    
    // Only invoke this script if it was injected by our parser. Test for a condition that is
    // impossible for a markup to create - two direct children of the document.
    var secondRootElement = document.documentElement.nextElementSibling;
    if (secondRootElement == null)
    {
        // We've been included externally, bail
        return;
    }

    // Remove the script element from the document so that it doesn't show up in the XML tree view
    document.removeChild(secondRootElement);

    // Main entry point. Build the tree view.
    function buildTree()
    {
        time = (new Date()).getTime();
        
        // Cache references to the root element and its first child for later use
        root = document.documentElement;
        rootFirstChild = root.firstChild;
        
        // Initialize templates
        buildAttributeTemplate();
        buildCDATASectionTemplate();
        buildCommentTemplate();
        buildElementTemplate();
        buildStyles();
        
        // Start processing the document
        buildXMLDeclaration();
        iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, null, false);
        nextNode = iterator.nextNode();
        buildNode();
    }
    
    // Resume tree building after pausing to unblock UI
    function resumeBuilder()
    {
        time = (new Date()).getTime();
        buildNode();
    }
    
    // Build the tree incrementally and delegate to appropriate node function
    function buildNode()
    {
        var node, i = 0;
        while(nextNode)
        {
            if(i++ <= LIMIT)
            {
                node = nextNode;
                nextNode = iterator.nextNode();
                switch(node.nodeType)
                {
                    case Node.CDATA_SECTION_NODE          : buildCDATASection         (node); break;
                    case Node.COMMENT_NODE                : buildComment              (node); break;
                    case Node.DOCUMENT_TYPE_NODE          : buildDocumentType         (node); break;
                    case Node.ELEMENT_NODE                : buildElement              (node); break;
                    case Node.PROCESSING_INSTRUCTION_NODE : buildProcessingInstruction(node); break;
                    // No additional handling is needed for text nodes
                }
            }
            else if((new Date()).getTime() - time >= DURATION)
            {
                setTimeout(resumeBuilder, DELAY);
                break;
            }
            else
            {
                i = 0;
            }
        }
    }
    
    // Attr
    function buildAttribute(attr, treeNode)
    {
        attrName.textContent = attr.nodeName;
        attrValue.textContent = attr.nodeValue;
        
        // Custom Styling for xmlns or xml
        if(attr.namespaceURI && (attr.namespaceURI == "http://www.w3.org/2000/xmlns/" || attr.namespaceURI == "http://www.w3.org/XML/1998/namespace"))
        {
            attrName.style.color = "red";
            attrValue.style.color = "red";
        }
        else
        {
            attrName.style.color = "#900";
            attrValue.style.color = "black";
        }

        treeNode.appendChild(attrTemplate.cloneNode(true));
    }
    
    // Attr Template
    function buildAttributeTemplate() 
    {
        // Template root
        attrTemplate = document.createDocumentFragment();
        attrTemplate.appendChild(document.createTextNode(" "));
        
        // Attribute name
        attrName = document.createElementNS(XHTML, "span");
        attrTemplate.appendChild(attrName);
        
        attrTemplate.appendChild(document.createTextNode('="'));
        
        // Attribute value
        attrValue = document.createElementNS(XHTML, "span");
        attrValue.style.fontWeight = "bold";
        attrTemplate.appendChild(attrValue);
       
        attrTemplate.appendChild(document.createTextNode('"'));
    }
    
    // CDATASection
    function buildCDATASection(cdata)
    {
        cdataValue.textContent = cdata.nodeValue;
        cdata.parentNode.insertBefore(cdataTemplate.cloneNode(true), cdata);
        cdata.parentNode.removeChild(cdata);
    }
    
    // CDATASection Template
    function buildCDATASectionTemplate() 
    {
        cdataTemplate = document.createElementNS(XHTML, "div");
        cdataTemplate.style.color = "blue";
        cdataTemplate.style.fontWeight = "normal";
        cdataTemplate.style.marginLeft = "-2em";
    
        var start = document.createTextNode("<![CDATA[");
        cdataTemplate.appendChild(start);
        
        cdataValue = document.createElementNS(XHTML, "span");
        cdataValue.style.color = "black";
        cdataTemplate.appendChild(cdataValue);
        
        var end = document.createTextNode("]]>");
        cdataTemplate.appendChild(end);
    }
    
    // Comment
    function buildComment(comment)
    {
        commentValue.textContent = comment.nodeValue;
        insertBefore(commentTemplate.cloneNode(true), comment);
    }
    
    // Comment Template
    function buildCommentTemplate()
    {
        commentTemplate = document.createElementNS(XHTML, "div");
        commentTemplate.style.color = "blue";
        commentTemplate.style.fontWeight = "normal";
        
        var start = document.createTextNode("<!--");
        commentTemplate.appendChild(start);
        
        commentValue = document.createElementNS(XHTML, "span");
        commentValue.style.color = "#888";
        commentTemplate.appendChild(commentValue);
        
        var end = document.createTextNode("-->");
        commentTemplate.appendChild(end);
    }
    
    // DocumentType
    function buildDocumentType(doctype)
    {
        var treeNode = document.createElementNS(XHTML, "div");
        treeNode.style.fontWeight = "normal";
        treeNode.style.color = "blue";
        treeNode.textContent = "<!DOCTYPE " + doctype.name
                        + ((doctype.systemId) ? ' SYSTEM "' + doctype.systemId + '"' : "")
                        + ((doctype.publicId) ? ' PUBLIC "' + doctype.publicId + '"' : "")
                        + ">";
        insertBefore(treeNode, doctype);
    }

    // Element
    function buildElement(elm)
    {
        // Skip HTML elements since they are part of the tree view, not the original XML
        if(elm instanceof HTMLElement) return;
    
        // Retrieve information about this element's content model (has children, needs to be collapsable)
        var firstChild = (elm == root) ? rootFirstChild : elm.firstChild;
        var hasChildren = (null != firstChild);
        var isCollapsable = (hasChildren && (null != firstChild.nextSibling || firstChild.nodeType != Node.TEXT_NODE));
        
        // Build the start tag from the element start template
        elmStartName.textContent = elm.nodeName;
        var treeNode = elmStartTemplate.cloneNode(true);
        
        // Check if this needs to be a collapsable element
        if(isCollapsable) 
        {
            // Set the appropriate state for expand/collapse behavior
            treeNode.href = "#";
            treeNode.className = "collapse";
            treeNode.style.position = "relative";
            treeNode.onclick = toggle;
        }
        
        // Insert the generated start tag into the tree
        if(elm == root)
        {
            // Ensure the start tag for the root element appears after
            // the display for preceeding comments, processing instructions, etc.
            elm.insertBefore(treeNode, rootFirstChild);
        }
        else
        {
            // For other elements, simply place make the start tag the first child
            elm.insertBefore(treeNode, elm.firstChild);
        }
        
        // Generate representation of attributes
        for(var i = 0; i < elm.attributes.length; i++)
        {
            buildAttribute(elm.attributes[i], treeNode);
        }
        
        // Close the start tag appropriately
        treeNode.appendChild(document.createTextNode((hasChildren) ? ">" : "/>"));
        
        // Create an end tag (if needed)
        if(hasChildren)
        {
            elmEndName.textContent = elm.nodeName;
            treeNode = elmEndTemplate.cloneNode(true);
            if(isCollapsable)
            {
                treeNode.className = "block";
                treeNode.style.marginLeft = "-2em";
            }
            elm.appendChild(treeNode);
        }
    }
    
    // Element Template
    function buildElementTemplate()
    {
        // Start tag
        elmStartTemplate = document.createElementNS(XHTML, "a");
        elmStartTemplate.style.color = "blue";
        elmStartTemplate.style.marginLeft = "-2em";
        elmStartTemplate.appendChild(document.createTextNode("<"));
        elmStartName = document.createElementNS(XHTML, "span");
        elmStartName.style.color = "#900";
        elmStartTemplate.appendChild(elmStartName);
        
        // End tag
        elmEndTemplate = document.createElementNS(XHTML, "span");
        elmEndTemplate.style.color = "blue";
        elmEndTemplate.appendChild(document.createTextNode("</"));
        elmEndName = document.createElementNS(XHTML, "span");
        elmEndName.style.color = "#900";
        elmEndTemplate.appendChild(elmEndName);
        elmEndTemplate.appendChild(document.createTextNode(">"));
    }
    
    // ProcessingInstruction
    function buildProcessingInstruction(pi)
    {
        var treeNode = document.createElementNS(XHTML, "div");
        treeNode.style.color = "blue";
        treeNode.style.fontWeight = "normal";
        treeNode.textContent = "<?" + pi.nodeName + " " + pi.nodeValue + "?>";
        insertBefore(treeNode, pi);
    }
    
    // Create a stylesheet to apply general styles to the tree view
    function buildStyles()
    {
        // Style definitions
        var styles = "@namespace html url(" + XHTML + ");"
            
            // Setup styles on the root element
            + " :root {                   "
            + "    font:small Verdana;    "
            + "    font-weight: bold;     "
            + "    padding: 2em;          "
            + "    padding-left:4em;      "
            + " }                         "
            
            // Default all elements to block styling
            // This allows generic elements to provide structure
            + " * {                       "
            + "    display: block;        "
            + "    padding-left: 2em;     "
            + " }                         "
            
            // Ensure the style element stays hidden
            + " html|style {              "
            + "    display: none;         "
            + " }                         "
            
            // Default styling for tag-like spans/anchors
            + " html|span, html|a {       "
            + "    display: inline;       "
            + "    padding: 0;            "
            + "    font-weight: normal;   "
            + "    text-decoration: none; "
            + " }                         "
            
            + " html|span.block {         "
            + "    display: block;        "
            + " }                         "
            
            // Hide content under a collapsed element
            + " *[html|hidden],           "
            + " span.block[html|hidden] { "
            + "    display: none;         "
            + " }                         "
            
            // Show "+" for elements that can be expanded
            + " .expand {                 "
            + "    display: block;        "
            + " }                         "
            + " .expand:before {          "
            + "    content: '+';          "
            + "    color: red;            "
            + "    position: absolute;    "
            + "    left: -1em;            "
            + " } "
            
            // Show "-" for elements that can be collapsed
            + " .collapse {               "
            + "    display: block;        "
            + " }                         "
            + " .collapse:before {        "
            + "    content: '-';          "
            + "    color: red;            "
            + "    position: absolute;    "
            + "    left:-1em;             "
            + " }                         ";
                          
        // Build a <style> element to commit the styles to the current page
        style = document.createElementNS(XHTML, "style");
        root.insertBefore(style, root.firstChild);
        style.textContent = styles;
    }
    
    // XML Declaration
    function buildXMLDeclaration()
    {
        // Display an <?xml?> declaration based on DOM data
        var xmlDecl = document.createElementNS(XHTML, "div");
        xmlDecl.style.color = "blue";
        xmlDecl.style.fontWeight = "normal";
        xmlDecl.style.marginLeft = "-4em";
        xmlDecl.textContent = '<?xml'
                            + ' version="' + document.xmlVersion + '"'
                            + ((document.xmlEncoding) ? ' encoding="' + document.xmlEncoding + '"' : "")
                            + ((document.xmlStandalone) ? ' standalone="' + document.xmlStandalone + '"' : "")
                            + '?>';
        root.insertBefore(xmlDecl, root.firstChild);
    }
    
    // Helper function to wrap text nodes with a container element
    // This allows them to be displayed/hidden as subtree visibility is toggled
    function wrapText(txt)
    {
        var treeNode = document.createElementNS(XHTML, "span");
        treeNode.style.fontWeight = "bold";
        txt.parentNode.insertBefore(treeNode, txt);
        treeNode.appendChild(txt);
        return treeNode;
    }
    
    // Helper function to insert a tree view node before a reference node
    // This moves the rendering for top-level nodes inside the root element
    function insertBefore(node, refNode)
    {
        if(refNode.parentNode == document)
        {
            // Move rendering inside the root element and adjust positioning accordingly
            node.style.marginLeft = "-4em";
            root.insertBefore(node, rootFirstChild);
        }
        else
        {
            refNode.parentNode.insertBefore(node, refNode);
        }
    }
    
    // Helper function for toggling the visibility of a subtree
    function toggle(e)
    {
        // Grab target element, determine current state, and update toggle
        var node = e.currentTarget;
        var hide = (node.className == "collapse");
        node.className = (hide) ? "expand" : "collapse";
        
        // Update visibility of all following elements / text nodes
        while(node = node.nextSibling)
        {
            if(node.nodeType == Node.TEXT_NODE)
            {
                // Wrap raw text nodes so we can toggle their visibility
                node = wrapText(node);
            }
            if(node.nodeType == Node.ELEMENT_NODE)
            {
                if(hide)
                {
                    node.setAttributeNS(XHTML, "hidden", "true");
                }
                else
                {
                    node.removeAttributeNS(XHTML, "hidden");
                }
            }
        }
        
        return false;
    }

    buildTree();
})()
PPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGX

Anon7 - 2022
AnonSec Team