+ dataFieldsStr = regexprep(dataFieldsStr, '^\s*([^:]+:)([^\n]*)\n^\s*([^:]+:)([^\n]*)$', ' $1 $2 $3 $4 ', 'lineanchors');
+ dataFieldsStr = regexprep(dataFieldsStr, '^[^<]\s*([^:]+:)([^\n]*)$', ' $1 $2 ', 'lineanchors');
+ dataFieldsStr = ['(documented ' undefinedStr hiddenStr ' & read-only fields)
'];
+ end
+
+ %% Update tooltip string with a node's data
+ function updateNodeTooltip(nodeHandle, uiObject)
+ try
+ toolTipStr = class(nodeHandle);
+ dataFieldsStr = '';
+
+ % Add HG annotation if relevant
+ if ishghandle(nodeHandle)
+ hgStr = ' HG Handle';
+ else
+ hgStr = '';
+ end
+
+ % Prevent HG-Java warnings
+ oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty');
+ warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty');
+ warning('off','MATLAB:hg:Root');
+
+ % Note: don't bulk-get because (1) not all properties are returned & (2) some properties cause a Java exception
+ % Note2: the classhandle approach does not enable access to user-defined schema.props
+ ch = classhandle(handle(nodeHandle));
+ dataFields = [];
+ [sortedNames, sortedIdx] = sort(get(ch.Properties,'Name'));
+ for idx = 1 : length(sortedIdx)
+ sp = ch.Properties(sortedIdx(idx));
+ % TODO: some fields (see EOL comment below) generate a Java Exception from: com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run
+ if strcmp(sp.AccessFlags.PublicGet,'on') % && ~any(strcmp(sp.Name,{'FixedColors','ListboxTop','Extent'}))
+ try
+ dataFields.(sp.Name) = get(nodeHandle, sp.Name);
+ catch
+ dataFields.(sp.Name) = 'Error! ';
+ end
+ else
+ dataFields.(sp.Name) = '(no public getter method)';
+ end
+ end
+ dataFieldsStr = getPropsHtml(nodeHandle, dataFields);
+ catch
+ % Probably a non-HG java object
+ try
+ % Note: the bulk-get approach enables access to user-defined schema-props, but not to some original classhandle Properties...
+ try
+ oldWarn3 = warning('off','MATLAB:structOnObject');
+ dataFields = struct(nodeHandle);
+ warning(oldWarn3);
+ catch
+ dataFields = get(nodeHandle);
+ end
+ dataFieldsStr = getPropsHtml(nodeHandle, dataFields);
+ catch
+ % Probably a missing property getter implementation
+ try
+ % Inform the user - bail out on error
+ err = lasterror; %#ok
+ dataFieldsStr = ['' strrep(err.message, char(10), ' ')];
+ catch
+ % forget it...
+ end
+ end
+ end
+
+ % Restore warnings
+ try warning(oldWarn); catch, end
+
+ % Set the object tooltip
+ if ~isempty(dataFieldsStr)
+ toolTipStr = [' ' char(toolTipStr) ' ' hgStr ': ' dataFieldsStr ''];
+ end
+ uiObject.setToolTipText(toolTipStr);
+ end
+
+ %% Expand tree node
+ function nodeExpanded(src, evd, tree) %#ok
+ % tree = handle(src);
+ % evdsrc = evd.getSource;
+ evdnode = evd.getCurrentNode;
+
+ if ~tree.isLoaded(evdnode)
+
+ % Get the list of children TreeNodes
+ childnodes = getChildrenNodes(tree, evdnode);
+
+ % Add the HG sub-tree (unless already included in the first tree)
+ childHandle = getappdata(evdnode.handle,'childHandle'); %=evdnode.getUserObject
+ if evdnode.isRoot && ~isempty(hg_handles) && ~isequal(hg_handles(1).java, childHandle)
+ childnodes = [childnodes, getChildrenNodes(tree, evdnode, true)];
+ end
+
+ % If we have a single child handle, wrap it within a javaArray for tree.add() to "swallow"
+ if (length(childnodes) == 1)
+ chnodes = childnodes;
+ childnodes = javaArray('com.mathworks.hg.peer.UITreeNode', 1);
+ childnodes(1) = java(chnodes);
+ end
+
+ % Add child nodes to the current node
+ tree.add(evdnode, childnodes);
+ tree.setLoaded(evdnode, true);
+ end
+ end
+
+ %% Get an icon image no larger than 16x16 pixels
+ function iconImage = setIconSize(iconImage)
+ try
+ iconWidth = iconImage.getWidth;
+ iconHeight = iconImage.getHeight;
+ if iconWidth > 16
+ newHeight = fix(iconHeight * 16 / iconWidth);
+ iconImage = iconImage.getScaledInstance(16,newHeight,iconImage.SCALE_SMOOTH);
+ elseif iconHeight > 16
+ newWidth = fix(iconWidth * 16 / iconHeight);
+ iconImage = iconImage.getScaledInstance(newWidth,16,iconImage.SCALE_SMOOTH);
+ end
+ catch
+ % never mind... - return original icon
+ end
+ end % setIconSize
+
+ %% Get list of children nodes
+ function nodes = getChildrenNodes(tree, parentNode, isRootHGNode)
+ try
+ iconpath = [matlabroot, '/toolbox/matlab/icons/'];
+ nodes = handle([]);
+ try
+ userdata = get(tree,'userdata');
+ catch
+ userdata = getappdata(handle(tree),'userdata');
+ end
+ hdls = userdata.handles;
+ nodedata = get(parentNode,'userdata');
+ if nargin < 3
+ %isJavaNode = ~ishghandle(parentNode.getUserObject);
+ isJavaNode = ~ishghandle(nodedata.obj);
+ isRootHGNode = false;
+ else
+ isJavaNode = ~isRootHGNode;
+ end
+
+ % Search for this parent node in the list of all nodes
+ parents = userdata.parents;
+ nodeIdx = nodedata.idx;
+
+ if isJavaNode && isempty(nodeIdx) % Failback, in case userdata doesn't work for some reason...
+ for hIdx = 1 : length(hdls)
+ %if isequal(handle(parentNode.getUserObject), hdls(hIdx))
+ if isequal(handle(nodedata.obj), hdls(hIdx))
+ nodeIdx = hIdx;
+ break;
+ end
+ end
+ end
+ if ~isJavaNode
+ if isRootHGNode % =root HG node
+ thisChildHandle = userdata.hg_handles(1);
+ childName = getNodeName(thisChildHandle);
+ hasGrandChildren = any(parents==1);
+ icon = [];
+ if hasGrandChildren && length(hg_handles)>1
+ childName = childName.concat(' - HG root container');
+ icon = [iconpath 'figureicon.gif'];
+ end
+ try
+ nodes = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch % old matlab version don't have the 'v0' option
+ try
+ nodes = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch
+ % probably an invalid handle - ignore...
+ end
+ end
+
+ % Add the handler to the node's internal data
+ % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes
+ % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata
+ %nodes.setUserObject(thisChildHandle);
+ setappdata(nodes,'childHandle',thisChildHandle);
+ nodedata.idx = 1;
+ nodedata.obj = thisChildHandle;
+ set(nodes,'userdata',nodedata);
+ return;
+ else % non-root HG node
+ parents = userdata.hg_parents;
+ hdls = userdata.hg_handles;
+ end % if isRootHGNode
+ end % if ~isJavaNode
+
+ % If this node was found, get the list of its children
+ if ~isempty(nodeIdx)
+ %childIdx = setdiff(find(parents==nodeIdx),nodeIdx);
+ childIdx = find(parents==nodeIdx);
+ childIdx(childIdx==nodeIdx) = []; % faster...
+ numChildren = length(childIdx);
+ for cIdx = 1 : numChildren
+ thisChildIdx = childIdx(cIdx);
+ try thisChildHandle = hdls(thisChildIdx); catch, continue, end
+ childName = getNodeName(thisChildHandle);
+ try
+ visible = thisChildHandle.Visible;
+ if visible
+ try visible = thisChildHandle.Width > 0; catch, end %#ok
+ end
+ if ~visible
+ childName = ['' char(childName) ' ']; %#ok grow
+ end
+ catch
+ % never mind...
+ end
+ hasGrandChildren = any(parents==thisChildIdx);
+ try
+ isaLabel = isa(thisChildHandle.java,'javax.swing.JLabel');
+ catch
+ isaLabel = 0;
+ end
+ if hasGrandChildren && ~any(strcmp(class(thisChildHandle),{'axes'}))
+ icon = [iconpath 'foldericon.gif'];
+ elseif isaLabel
+ icon = [iconpath 'tool_text.gif'];
+ else
+ icon = [];
+ end
+ try
+ nodes(cIdx) = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch % old matlab version don't have the 'v0' option
+ try
+ nodes(cIdx) = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch
+ % probably an invalid handle - ignore...
+ end
+ end
+
+ % Use existing object icon, if available
+ try
+ setTreeNodeIcon(nodes(cIdx),thisChildHandle);
+ catch
+ % probably an invalid handle - ignore...
+ end
+
+ % Pre-select the node based upon the user's FINDJOBJ filters
+ try
+ if isJavaNode && ~userdata.userSelected && any(userdata.initialIdx == thisChildIdx)
+ pause(0.0002); % as short as possible...
+ drawnow;
+ if isempty(tree.getSelectedNodes)
+ tree.setSelectedNode(nodes(cIdx));
+ else
+ newSelectedNodes = [tree.getSelectedNodes, nodes(cIdx).java];
+ tree.setSelectedNodes(newSelectedNodes);
+ end
+ end
+ catch
+ % never mind...
+ end
+
+ % Add the handler to the node's internal data
+ % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes
+ % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata
+ % Note3: the following will error if invalid handle - ignore
+ try
+ if isJavaNode
+ thisChildHandle = thisChildHandle.java;
+ end
+ %nodes(cIdx).setUserObject(thisChildHandle);
+ setappdata(nodes(cIdx),'childHandle',thisChildHandle);
+ nodedata.idx = thisChildIdx;
+ nodedata.obj = thisChildHandle;
+ set(nodes(cIdx),'userdata',nodedata);
+ catch
+ % never mind (probably an invalid handle) - leave unchanged (like a leaf)
+ end
+ end
+ end
+ catch
+ % Never mind - leave unchanged (like a leaf)
+ %error('YMA:findjobj:UnknownNodeType', 'Error expanding component tree node');
+ dispError
+ end
+ end
+
+ %% Get a node's name
+ function [nodeName, nodeTitle] = getNodeName(hndl,charsLimit)
+ try
+ % Initialize (just in case one of the succeding lines croaks)
+ nodeName = '';
+ nodeTitle = '';
+ if ~ismethod(hndl,'getClass')
+ try
+ nodeName = class(hndl);
+ catch
+ nodeName = hndl.type; % last-ditch try...
+ end
+ else
+ nodeName = hndl.getClass.getSimpleName;
+ end
+
+ % Strip away the package name, leaving only the regular classname
+ if ~isempty(nodeName) && ischar(nodeName)
+ nodeName = java.lang.String(nodeName);
+ nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1);
+ end
+ if (nodeName.length == 0)
+ % fix case of anonymous internal classes, that do not have SimpleNames
+ try
+ nodeName = hndl.getClass.getName;
+ nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1);
+ catch
+ % never mind - leave unchanged...
+ end
+ end
+
+ % Get any unique identifying string (if available in one of several fields)
+ labelsToCheck = {'label','title','text','string','displayname','toolTipText','TooltipString','actionCommand','name','Tag','style'}; %,'UIClassID'};
+ nodeTitle = '';
+ strField = ''; %#ok - used for debugging
+ while ((~isa(nodeTitle,'java.lang.String') && ~ischar(nodeTitle)) || isempty(nodeTitle)) && ~isempty(labelsToCheck)
+ try
+ nodeTitle = get(hndl,labelsToCheck{1});
+ strField = labelsToCheck{1}; %#ok - used for debugging
+ catch
+ % never mind - probably missing prop, so skip to next one
+ end
+ labelsToCheck(1) = [];
+ end
+ if length(nodeTitle) ~= numel(nodeTitle)
+ % Multi-line - convert to a long single line
+ nodeTitle = nodeTitle';
+ nodeTitle = nodeTitle(:)';
+ end
+ if isempty(char(nodeTitle))
+ % No title - check whether this is an HG label whose text is gettable
+ try
+ location = hndl.getLocationOnScreen;
+ pos = [location.getX, location.getY, hndl.getWidth, hndl.getHeight];
+ %dist = sum((labelPositions-repmat(pos,size(labelPositions,1),[1,1,1,1])).^2, 2);
+ dist = sum((labelPositions-repmat(pos,[size(labelPositions,1),1])).^2, 2);
+ [minVal,minIdx] = min(dist);
+ % Allow max distance of 8 = 2^2+2^2 (i.e. X&Y off by up to 2 pixels, W&H exact)
+ if minVal <= 8 % 8=2^2+2^2
+ nodeTitle = get(hg_labels(minIdx),'string');
+ % Preserve the label handles & position for the tooltip & context-menu
+ %hg_labels(minIdx) = [];
+ %labelPositions(minIdx,:) = [];
+ end
+ catch
+ % never mind...
+ end
+ end
+ if nargin<2, charsLimit = 25; end
+ extraStr = regexprep(nodeTitle,{sprintf('(.{%d,%d}).*',charsLimit,min(charsLimit,length(nodeTitle)-1)),' +'},{'$1...',' '},'once');
+ if ~isempty(extraStr)
+ if ischar(extraStr)
+ nodeName = nodeName.concat(' (''').concat(extraStr).concat(''')');
+ else
+ nodeName = nodeName.concat(' (').concat(num2str(extraStr)).concat(')');
+ end
+ %nodeName = nodeName.concat(strField);
+ end
+ catch
+ % Never mind - use whatever we have so far
+ %dispError
+ end
+ end
+
+ %% Strip standard Swing callbacks from a list of events
+ function evNames = stripStdCbs(evNames)
+ try
+ stdEvents = {'AncestorAdded', 'AncestorMoved', 'AncestorRemoved', 'AncestorResized', ...
+ 'ComponentAdded', 'ComponentRemoved', 'ComponentHidden', ...
+ 'ComponentMoved', 'ComponentResized', 'ComponentShown', ...
+ 'FocusGained', 'FocusLost', 'HierarchyChanged', ...
+ 'KeyPressed', 'KeyReleased', 'KeyTyped', ...
+ 'MouseClicked', 'MouseDragged', 'MouseEntered', 'MouseExited', ...
+ 'MouseMoved', 'MousePressed', 'MouseReleased', 'MouseWheelMoved', ...
+ 'PropertyChange', 'VetoableChange', ...
+ 'CaretPositionChanged', 'InputMethodTextChanged', ...
+ 'ButtonDown', 'Create', 'Delete'};
+ stdEvents = [stdEvents, strcat(stdEvents,'Callback'), strcat(stdEvents,'Fcn')];
+ evNames = setdiff(evNames,stdEvents)';
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for checkbox
+ function cbHideStdCbs_Callback(src, evd, callbacksTable, varargin) %#ok
+ try
+ % Store the current checkbox value for later use
+ if nargin < 3
+ try
+ callbacksTable = get(src,'userdata');
+ catch
+ callbacksTable = getappdata(src,'userdata');
+ end
+ end
+ if evd.getSource.isSelected
+ setappdata(callbacksTable,'hideStdCbs',1);
+ else
+ setappdata(callbacksTable,'hideStdCbs',[]);
+ end
+
+ % Rescan the current node
+ try
+ userdata = get(callbacksTable,'userdata');
+ catch
+ userdata = getappdata(callbacksTable,'userdata');
+ end
+ nodepath = userdata.jTree.getSelectionModel.getSelectionPath;
+ try
+ ed.getCurrentNode = nodepath.getLastPathComponent;
+ nodeSelected(handle(userdata.jTreePeer),ed,[]);
+ catch
+ % ignore - probably no node selected
+ end
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btWebsite_Callback(src, evd, varargin) %#ok
+ try
+ web('http://UndocumentedMatlab.com','-browser');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btRefresh_Callback(src, evd, varargin) %#ok
+ try
+ % Set cursor shape to hourglass until we're done
+ hTreeFig = varargin{2};
+ set(hTreeFig,'Pointer','watch');
+ drawnow;
+ object = varargin{1};
+
+ % Re-invoke this utility to re-scan the container for all children
+ findjobj(object);
+ catch
+ % Never mind...
+ end
+
+ % Restore default cursor shape
+ set(hTreeFig,'Pointer','arrow');
+ end
+
+ %% Callback function for button
+ function btExport_Callback(src, evd, varargin) %#ok
+ try
+ % Get the list of all selected nodes
+ if length(varargin) > 1
+ jTree = varargin{1};
+ numSelections = jTree.getSelectionCount;
+ selectionPaths = jTree.getSelectionPaths;
+ hdls = handle([]);
+ for idx = 1 : numSelections
+ %hdls(idx) = handle(selectionPaths(idx).getLastPathComponent.getUserObject);
+ nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata');
+ try
+ hdls(idx) = handle(nodedata.obj,'CallbackProperties');
+ catch
+ if idx==1 % probably due to HG2: can't convert object to handle([])
+ hdls = nodedata.obj;
+ else
+ hdls(idx) = nodedata.obj;
+ end
+ end
+ end
+
+ % Assign the handles in the base workspace & inform user
+ assignin('base','findjobj_hdls',hdls);
+ classNameLabel = varargin{2};
+ msg = ['Exported ' char(classNameLabel.getText.trim) ' to base workspace variable findjobj_hdls'];
+ else
+ % Right-click (context-menu) callback
+ data = varargin{1};
+ obj = data{1};
+ varName = data{2};
+ if isempty(varName)
+ varName = inputdlg('Enter workspace variable name','FindJObj');
+ if isempty(varName), return; end % bail out on
+ varName = varName{1};
+ if isempty(varName) || ~ischar(varName), return; end % bail out on empty/null
+ varName = genvarname(varName);
+ end
+ assignin('base',varName,handle(obj,'CallbackProperties'));
+ msg = ['Exported object to base workspace variable ' varName];
+ end
+ msgbox(msg,'FindJObj','help');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btFocus_Callback(src, evd, varargin) %#ok
+ try
+ % Request focus for the specified object
+ object = getTopSelectedObject(varargin{:});
+ object.requestFocus;
+ catch
+ try
+ object = object.java.getPeer.requestFocus;
+ object.requestFocus;
+ catch
+ % Never mind...
+ %dispError
+ end
+ end
+ end
+
+ %% Callback function for button
+ function btInspect_Callback(src, evd, varargin) %#ok
+ try
+ % Inspect the specified object
+ if length(varargin) == 1
+ object = varargin{1};
+ else
+ object = getTopSelectedObject(varargin{:});
+ end
+ if isempty(which('uiinspect'))
+
+ % If the user has not indicated NOT to be informed about UIInspect
+ if ~ispref('FindJObj','dontCheckUIInspect')
+
+ % Ask the user whether to download UIINSPECT (YES, no, no & don't ask again)
+ answer = questdlg({'The object inspector requires UIINSPECT from the MathWorks File Exchange. UIINSPECT was created by Yair Altman, like this FindJObj utility.','','Download & install UIINSPECT?'},'UIInspect','Yes','No','No & never ask again','Yes');
+ switch answer
+ case 'Yes' % => Yes: download & install
+ try
+ % Download UIINSPECT
+ baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/17935';
+ fileUrl = [baseUrl '?controller=file_infos&download=true'];
+ %file = urlread(fileUrl);
+ %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL
+
+ % Install...
+ %newPath = fullfile(fileparts(which(mfilename)),'uiinspect.m');
+ %fid = fopen(newPath,'wt');
+ %fprintf(fid,'%s',file);
+ %fclose(fid);
+ [fpath,fname,fext] = fileparts(which(mfilename));
+ zipFileName = fullfile(fpath,'uiinspect.zip');
+ urlwrite(fileUrl,zipFileName);
+ unzip(zipFileName,fpath);
+ rehash;
+ catch
+ % Error downloading: inform the user
+ msgbox(['Error in downloading: ' lasterr], 'UIInspect', 'warn'); %#ok
+ web(baseUrl);
+ end
+
+ % ...and now run it...
+ %pause(0.1);
+ drawnow;
+ dummy = which('uiinspect'); %#ok used only to load into memory
+ uiinspect(object);
+ return;
+
+ case 'No & never ask again' % => No & don't ask again
+ setpref('FindJObj','dontCheckUIInspect',1);
+
+ otherwise
+ % forget it...
+ end
+ end
+ drawnow;
+
+ % No UIINSPECT available - run the good-ol' METHODSVIEW()...
+ methodsview(object);
+ else
+ uiinspect(object);
+ end
+ catch
+ try
+ if isjava(object)
+ methodsview(object)
+ else
+ methodsview(object.java);
+ end
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+ end
+
+ %% Callback function for button
+ function btCheckFex_Callback(src, evd, varargin) %#ok
+ try
+ % Check the FileExchange for the latest version
+ web('http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Check for existence of a newer version
+ function checkVersion()
+ try
+ % If the user has not indicated NOT to be informed
+ if ~ispref('FindJObj','dontCheckNewerVersion')
+
+ % Get the latest version date from the File Exchange webpage
+ baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/';
+ webUrl = [baseUrl '14317']; % 'loadFile.do?objectId=14317'];
+ webPage = urlread(webUrl);
+ modIdx = strfind(webPage,'>Updates<');
+ if ~isempty(modIdx)
+ webPage = webPage(modIdx:end);
+ % Note: regexp hangs if substr not found, so use strfind instead...
+ %latestWebVersion = regexprep(webPage,'.*?>(20[\d-]+).*','$1');
+ dateIdx = strfind(webPage,'class="date">');
+ if ~isempty(dateIdx)
+ latestDate = webPage(dateIdx(end)+13 : dateIdx(end)+23);
+ try
+ startIdx = dateIdx(end)+27;
+ descStartIdx = startIdx + strfind(webPage(startIdx:startIdx+999),'');
+ descEndIdx = startIdx + strfind(webPage(startIdx:startIdx+999),' ');
+ descStr = webPage(descStartIdx(1)+3 : descEndIdx(1)-2);
+ descStr = regexprep(descStr,'?[pP]>','');
+ catch
+ descStr = '';
+ end
+
+ % Get this file's latest date
+ thisFileName = which(mfilename); %#ok
+ try
+ thisFileData = dir(thisFileName);
+ try
+ thisFileDatenum = thisFileData.datenum;
+ catch % old ML versions...
+ thisFileDatenum = datenum(thisFileData.date);
+ end
+ catch
+ thisFileText = evalc('type(thisFileName)');
+ thisFileLatestDate = regexprep(thisFileText,'.*Change log:[\s%]+([\d-]+).*','$1');
+ thisFileDatenum = datenum(thisFileLatestDate,'yyyy-mm-dd');
+ end
+
+ % If there's a newer version on the File Exchange webpage (allow 2 days grace period)
+ if (thisFileDatenum < datenum(latestDate,'dd mmm yyyy')-2)
+
+ % Ask the user whether to download the newer version (YES, no, no & don't ask again)
+ msg = {['A newer version (' latestDate ') of FindJObj is available on the MathWorks File Exchange:'], '', ...
+ ['\color{blue}' descStr '\color{black}'], '', ...
+ 'Download & install the new version?'};
+ createStruct.Interpreter = 'tex';
+ createStruct.Default = 'Yes';
+ answer = questdlg(msg,'FindJObj','Yes','No','No & never ask again',createStruct);
+ switch answer
+ case 'Yes' % => Yes: download & install newer file
+ try
+ %fileUrl = [baseUrl '/download.do?objectId=14317&fn=findjobj&fe=.m'];
+ fileUrl = [baseUrl '/14317?controller=file_infos&download=true'];
+ %file = urlread(fileUrl);
+ %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL
+ %fid = fopen(thisFileName,'wt');
+ %fprintf(fid,'%s',file);
+ %fclose(fid);
+ [fpath,fname,fext] = fileparts(thisFileName);
+ zipFileName = fullfile(fpath,[fname '.zip']);
+ urlwrite(fileUrl,zipFileName);
+ unzip(zipFileName,fpath);
+ rehash;
+ catch
+ % Error downloading: inform the user
+ msgbox(['Error in downloading: ' lasterr], 'FindJObj', 'warn'); %#ok
+ web(webUrl);
+ end
+ case 'No & never ask again' % => No & don't ask again
+ setpref('FindJObj','dontCheckNewerVersion',1);
+ otherwise
+ % forget it...
+ end
+ end
+ end
+ else
+ % Maybe webpage not fully loaded or changed format - bail out...
+ end
+ end
+ catch
+ % Never mind...
+ end
+ end
+
+ %% Get the first selected object (might not be the top one - depends on selection order)
+ function object = getTopSelectedObject(jTree, root)
+ try
+ object = [];
+ numSelections = jTree.getSelectionCount;
+ if numSelections > 0
+ % Get the first object specified
+ %object = jTree.getSelectionPath.getLastPathComponent.getUserObject;
+ nodedata = get(jTree.getSelectionPath.getLastPathComponent,'userdata');
+ else
+ % Get the root object (container)
+ %object = root.getUserObject;
+ nodedata = get(root,'userdata');
+ end
+ object = nodedata.obj;
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Update component callback upon callbacksTable data change
+ function tbCallbacksChanged(src, evd, object, table)
+ persistent hash
+ try
+ % exit if invalid handle or already in Callback
+ %if ~ishandle(src) || ~isempty(getappdata(src,'inCallback')) % || length(dbstack)>1 %exit also if not called from user action
+ if isempty(hash), hash = java.util.Hashtable; end
+ if ~ishandle(src) || ~isempty(hash.get(src)) % || length(dbstack)>1 %exit also if not called from user action
+ return;
+ end
+ %setappdata(src,'inCallback',1); % used to prevent endless recursion % can't use getappdata(src,...) because it fails on R2010b!!!
+ hash.put(src,1);
+
+ % Update the object's callback with the modified value
+ modifiedColIdx = evd.getColumn;
+ modifiedRowIdx = evd.getFirstRow;
+ if modifiedRowIdx>=0 %&& modifiedColIdx==1 %sanity check - should always be true
+ %table = evd.getSource;
+ %object = get(src,'userdata');
+ modifiedRowIdx = table.getSelectedRow; % overcome issues with hierarchical table
+ cbName = strtrim(table.getValueAt(modifiedRowIdx,0));
+ try
+ cbValue = strtrim(char(table.getValueAt(modifiedRowIdx,1)));
+ if ~isempty(cbValue) && ismember(cbValue(1),'{[@''')
+ cbValue = eval(cbValue);
+ end
+ if (~ischar(cbValue) && ~isa(cbValue, 'function_handle') && (~iscell(cbValue) || iscom(object(1))))
+ revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, '');
+ else
+ for objIdx = 1 : length(object)
+ obj = object(objIdx);
+ if ~iscom(obj)
+ try
+ try
+ if isjava(obj)
+ obj = handle(obj,'CallbackProperties');
+ end
+ catch
+ % never mind...
+ end
+ set(obj, cbName, cbValue);
+ catch
+ try
+ set(handle(obj,'CallbackProperties'), cbName, cbValue);
+ catch
+ % never mind - probably a callback-group header
+ end
+ end
+ else
+ cbs = obj.eventlisteners;
+ if ~isempty(cbs)
+ cbs = cbs(strcmpi(cbs(:,1),cbName),:);
+ obj.unregisterevent(cbs);
+ end
+ if ~isempty(cbValue) && ~strcmp(cbName,'-')
+ obj.registerevent({cbName, cbValue});
+ end
+ end
+ end
+ end
+ catch
+ revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, lasterr) %#ok
+ end
+ end
+ catch
+ % never mind...
+ end
+ %setappdata(src,'inCallback',[]); % used to prevent endless recursion % can't use setappdata(src,...) because it fails on R2010b!!!
+ hash.remove(src);
+ end
+
+ %% Revert Callback table modification
+ function revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, errMsg) %#ok
+ try
+ % Display a notification MsgBox
+ msg = 'Callbacks must be a ''string'', or a @function handle';
+ if ~iscom(object(1)), msg = [msg ' or a {@func,args...} construct']; end
+ if ~isempty(errMsg), msg = {errMsg, '', msg}; end
+ msgbox(msg, ['Error setting ' cbName ' value'], 'warn');
+
+ % Revert to the current value
+ curValue = '';
+ try
+ if ~iscom(object(1))
+ curValue = charizeData(get(object(1),cbName));
+ else
+ cbs = object(1).eventlisteners;
+ if ~isempty(cbs)
+ cbs = cbs(strcmpi(cbs(:,1),cbName),:);
+ curValue = charizeData(cbs(1,2));
+ end
+ end
+ catch
+ % never mind... - clear the current value
+ end
+ table.setValueAt(curValue, modifiedRowIdx, modifiedColIdx);
+ catch
+ % never mind...
+ end
+ end % revertCbTableModification
+
+ %% Get the Java positions of all HG text labels
+ function labelPositions = getLabelsJavaPos(container)
+ try
+ labelPositions = [];
+
+ % Ensure we have a figure handle
+ try
+ h = hFig; %#ok unused
+ catch
+ hFig = getCurrentFigure;
+ end
+
+ % Get the figure's margins from the Matlab properties
+ hg_labels = findall(hFig, 'Style','text');
+ units = get(hFig,'units');
+ set(hFig,'units','pixels');
+ outerPos = get(hFig,'OuterPosition');
+ innerPos = get(hFig,'Position');
+ set(hFig,'units',units);
+ margins = abs(innerPos-outerPos);
+
+ figX = container.getX; % =outerPos(1)
+ figY = container.getY; % =outerPos(2)
+ %figW = container.getWidth; % =outerPos(3)
+ figH = container.getHeight; % =outerPos(4)
+
+ % Get the relevant screen pixel size
+ %monitorPositions = get(0,'MonitorPositions');
+ %for monitorIdx = size(monitorPositions,1) : -1 : 1
+ % screenSize = monitorPositions(monitorIdx,:);
+ % if (outerPos(1) >= screenSize(1)) % && (outerPos(1)+outerPos(3) <= screenSize(3))
+ % break;
+ % end
+ %end
+ %monitorBaseY = screenSize(4) - monitorPositions(1,4);
+
+ % Compute the labels' screen pixel position in Java units ([0,0] = top left)
+ for idx = 1 : length(hg_labels)
+ matlabPos = getpixelposition(hg_labels(idx),1);
+ javaX = figX + matlabPos(1) + margins(1);
+ javaY = figY + figH - matlabPos(2) - matlabPos(4) - margins(2);
+ labelPositions(idx,:) = [javaX, javaY, matlabPos(3:4)]; %#ok grow
+ end
+ catch
+ % never mind...
+ err = lasterror; %#ok debug point
+ end
+ end
+
+ %% Traverse an HG container hierarchy and extract the HG elements within
+ function traverseHGContainer(hcontainer,level,parent)
+ try
+ % Record the data for this node
+ thisIdx = length(hg_levels) + 1;
+ hg_levels(thisIdx) = level;
+ hg_parentIdx(thisIdx) = parent;
+ try
+ hg_handles(thisIdx) = handle(hcontainer);
+ catch
+ hg_handles = handle(hcontainer);
+ end
+ parentId = length(hg_parentIdx);
+
+ % Now recursively process all this node's children (if any)
+ %if ishghandle(hcontainer)
+ try % try-catch is faster than checking ishghandle(hcontainer)...
+ allChildren = allchild(handle(hcontainer));
+ for childIdx = 1 : length(allChildren)
+ traverseHGContainer(allChildren(childIdx),level+1,parentId);
+ end
+ catch
+ % do nothing - probably not a container
+ %dispError
+ end
+
+ % TODO: Add axis (plot) component handles
+ catch
+ % forget it...
+ end
+ end
+
+ %% Debuggable "quiet" error-handling
+ function dispError
+ err = lasterror; %#ok
+ msg = err.message;
+ for idx = 1 : length(err.stack)
+ filename = err.stack(idx).file;
+ if ~isempty(regexpi(filename,mfilename))
+ funcname = err.stack(idx).name;
+ line = num2str(err.stack(idx).line);
+ msg = [msg ' at ' funcname ' line #' line ' ']; %#ok grow
+ break;
+ end
+ end
+ disp(msg);
+ return; % debug point
+ end
+
+ %% ML 7.0 - compatible ischar() function
+ function flag = ischar(data)
+ try
+ flag = builtin('ischar',data);
+ catch
+ flag = isa(data,'char');
+ end
+ end
+
+ %% Set up the uitree context (right-click) menu
+ function jmenu = setTreeContextMenu(obj,node,tree_h)
+ % Prepare the context menu (note the use of HTML labels)
+ import javax.swing.*
+ titleStr = getNodeTitleStr(obj,node);
+ titleStr = regexprep(titleStr,' .*','');
+ menuItem0 = JMenuItem(titleStr);
+ menuItem0.setEnabled(false);
+ menuItem0.setArmed(false);
+ %menuItem1 = JMenuItem('Export handle to findjobj_hdls');
+ if isjava(obj), prefix = 'j'; else, prefix = 'h'; end %#ok
+ varname = strrep([prefix strtok(char(node.getName))], '$','_');
+ varname = genvarname(varname);
+ varname(2) = upper(varname(2)); % ensure lowerCamelCase
+ menuItem1 = JMenuItem(['Export handle to ' varname]);
+ menuItem2 = JMenuItem('Export handle to...');
+ menuItem3 = JMenuItem('Request focus (bring to front)');
+ menuItem4 = JMenuItem('Flash component borders');
+ menuItem5 = JMenuItem('Display properties & callbacks');
+ menuItem6 = JMenuItem('Inspect object');
+
+ % Set the menu items' callbacks
+ set(handle(menuItem1,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,varname}});
+ set(handle(menuItem2,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,[]}});
+ set(handle(menuItem3,'CallbackProperties'), 'ActionPerformedCallback', {@requestFocus,obj});
+ set(handle(menuItem4,'CallbackProperties'), 'ActionPerformedCallback', {@flashComponent,{obj,0.2,3}});
+ set(handle(menuItem5,'CallbackProperties'), 'ActionPerformedCallback', {@nodeSelected,{tree_h,node}});
+ set(handle(menuItem6,'CallbackProperties'), 'ActionPerformedCallback', {@btInspect_Callback,obj});
+
+ % Add all menu items to the context menu (with internal separator)
+ jmenu = JPopupMenu;
+ jmenu.add(menuItem0);
+ jmenu.addSeparator;
+ handleValue=[]; try handleValue = double(obj); catch, end; %#ok
+ if ~isempty(handleValue)
+ % For valid HG handles only
+ menuItem0a = JMenuItem('Copy handle value to clipboard');
+ set(handle(menuItem0a,'CallbackProperties'), 'ActionPerformedCallback', sprintf('clipboard(''copy'',%.99g)',handleValue));
+ jmenu.add(menuItem0a);
+ end
+ jmenu.add(menuItem1);
+ jmenu.add(menuItem2);
+ jmenu.addSeparator;
+ jmenu.add(menuItem3);
+ jmenu.add(menuItem4);
+ jmenu.add(menuItem5);
+ jmenu.add(menuItem6);
+ end % setTreeContextMenu
+
+ %% Set the mouse-press callback
+ function treeMousePressedCallback(hTree, eventData, tree_h) %#ok hTree is unused
+ if eventData.isMetaDown % right-click is like a Meta-button
+ % Get the clicked node
+ clickX = eventData.getX;
+ clickY = eventData.getY;
+ jtree = eventData.getSource;
+ treePath = jtree.getPathForLocation(clickX, clickY);
+ try
+ % Modify the context menu based on the clicked node
+ node = treePath.getLastPathComponent;
+ userdata = get(node,'userdata');
+ obj = userdata.obj;
+ jmenu = setTreeContextMenu(obj,node,tree_h);
+
+ % TODO: remember to call jmenu.remove(item) in item callback
+ % or use the timer hack shown here to remove the item:
+ % timerFcn = {@menuRemoveItem,jmenu,item};
+ % start(timer('TimerFcn',timerFcn,'StartDelay',0.2));
+
+ % Display the (possibly-modified) context menu
+ jmenu.show(jtree, clickX, clickY);
+ jmenu.repaint;
+
+ % This is for debugging:
+ userdata.tree = jtree;
+ setappdata(gcf,'findjobj_hgtree',userdata)
+ catch
+ % clicked location is NOT on top of any node
+ % Note: can also be tested by isempty(treePath)
+ end
+ end
+ end % treeMousePressedCallback
+
+ %% Remove the extra context menu item after display
+ function menuRemoveItem(hObj,eventData,jmenu,item) %#ok unused
+ jmenu.remove(item);
+ end % menuRemoveItem
+
+ %% Get the title for the tooltip and context (right-click) menu
+ function nodeTitleStr = getNodeTitleStr(obj,node)
+ try
+ % Display the full classname and object name in the tooltip
+ %nodeName = char(node.getName);
+ %nodeName = strrep(nodeName, '','');
+ %nodeName = strrep(nodeName, ' ','');
+ nodeName = char(getNodeName(obj,99));
+ [objClass,objName] = strtok(nodeName);
+ objName = objName(3:end-1); % strip leading ( and trailing )
+ if isempty(objName), objName = '(none found)'; end
+ nodeName = char(node.getName);
+ objClass = char(obj.getClass.getName);
+ nodeTitleStr = sprintf('Class name: %s Text/title: %s',objClass,objName);
+
+ % If the component is invisible, state this in the tooltip
+ if ~isempty(strfind(nodeName,'color="gray"'))
+ nodeTitleStr = [nodeTitleStr '*** Invisible *** '];
+ end
+ nodeTitleStr = [nodeTitleStr ' Right-click for context-menu'];
+ catch
+ % Possible not a Java object - try treating as an HG handle
+ try
+ handleValueStr = sprintf('#: %.99g ',double(obj));
+ try
+ type = '';
+ type = get(obj,'type');
+ type(1) = upper(type(1));
+ catch
+ if ~ishandle(obj)
+ type = ['Invalid ' char(node.getName) ' '];
+ handleValueStr = '!!! Perhaps this handle was deleted after this UIInspect tree was already drawn. Try to refresh by selecting any valid node handle';
+ end
+ end
+ nodeTitleStr = sprintf('%s handle %s',type,handleValueStr);
+ try
+ % If the component is invisible, state this in the tooltip
+ if strcmp(get(obj,'Visible'),'off')
+ nodeTitleStr = [nodeTitleStr 'Invisible '];
+ end
+ catch
+ % never mind...
+ end
+ catch
+ % never mind... - ignore
+ end
+ end
+ end % getNodeTitleStr
+
+ %% Handle tree mouse movement callback - used to set the tooltip & context-menu
+ function treeMouseMovedCallback(hTree, eventData)
+ try
+ x = eventData.getX;
+ y = eventData.getY;
+ jtree = eventData.getSource;
+ treePath = jtree.getPathForLocation(x, y);
+ try
+ % Set the tooltip string based on the hovered node
+ node = treePath.getLastPathComponent;
+ userdata = get(node,'userdata');
+ obj = userdata.obj;
+ tooltipStr = getNodeTitleStr(obj,node);
+ set(hTree,'ToolTipText',tooltipStr)
+ catch
+ % clicked location is NOT on top of any node
+ % Note: can also be tested by isempty(treePath)
+ end
+ catch
+ dispError;
+ end
+ return; % denug breakpoint
+ end % treeMouseMovedCallback
+
+ %% Request focus for a specific object handle
+ function requestFocus(hTree, eventData, obj) %#ok hTree & eventData are unused
+ % Ensure the object handle is valid
+ if isjava(obj)
+ obj.requestFocus;
+ return;
+ elseif ~ishandle(obj)
+ msgbox('The selected object does not appear to be a valid handle as defined by the ishandle() function. Perhaps this object was deleted after this hierarchy tree was already drawn. Refresh this tree by selecting a valid node handle and then retry.','FindJObj','warn');
+ beep;
+ return;
+ end
+
+ try
+ foundFlag = 0;
+ while ~foundFlag
+ if isempty(obj), return; end % sanity check
+ type = get(obj,'type');
+ obj = double(obj);
+ foundFlag = any(strcmp(type,{'figure','axes','uicontrol'}));
+ if ~foundFlag
+ obj = get(obj,'Parent');
+ end
+ end
+ feval(type,obj);
+ catch
+ % never mind...
+ dispError;
+ end
+ end % requestFocus
+
+end % FINDJOBJ
+
+% Fast implementation
+function jControl = findjobj_fast(hControl, jContainer)
+ try jControl = hControl.getTable; return, catch, end % fast bail-out for old uitables
+ try jControl = hControl.JavaFrame.getGUIDEView; return, catch, end % bail-out for HG2 matlab.ui.container.Panel
+ oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame');
+ if nargin < 2 || isempty(jContainer)
+ % Use a HG2 matlab.ui.container.Panel jContainer if the control's parent is a uipanel
+ try
+ hParent = get(hControl,'Parent');
+ catch
+ % Probably indicates an invalid/deleted/empty handle
+ jControl = [];
+ return
+ end
+ try jContainer = hParent.JavaFrame.getGUIDEView; catch, jContainer = []; end
+ end
+ if isempty(jContainer)
+ hFig = ancestor(hControl,'figure');
+ jf = get(hFig, 'JavaFrame');
+ jContainer = jf.getFigurePanelContainer.getComponent(0);
+ end
+ warning(oldWarn);
+ jControl = [];
+ counter = 20; % 2018-09-21 speedup (100 x 0.001 => 20 x 0.005) - Martin Lehmann suggestion on FEX 2016-06-07
+ specialTooltipStr = '!@#$%^&*';
+ try % Fix for R2018b suggested by Eddie (FEX comment 2018-09-19)
+ tooltipPropName = 'TooltipString';
+ oldTooltip = get(hControl,tooltipPropName);
+ set(hControl,tooltipPropName,specialTooltipStr);
+ catch
+ tooltipPropName = 'Tooltip';
+ oldTooltip = get(hControl,tooltipPropName);
+ set(hControl,tooltipPropName,specialTooltipStr);
+ end
+ while isempty(jControl) && counter>0
+ counter = counter - 1;
+ pause(0.005);
+ jControl = findTooltipIn(jContainer, specialTooltipStr);
+ end
+ set(hControl,tooltipPropName,oldTooltip);
+ try jControl.setToolTipText(oldTooltip); catch, end
+ try jControl = jControl.getParent.getView.getParent.getParent; catch, end % return JScrollPane if exists
+end
+function jControl = findTooltipIn(jContainer, specialTooltipStr)
+ try
+ jControl = []; % Fix suggested by H. Koch 11/4/2017
+ tooltipStr = jContainer.getToolTipText;
+ %if strcmp(char(tooltipStr),specialTooltipStr)
+ if ~isempty(tooltipStr) && tooltipStr.startsWith(specialTooltipStr) % a bit faster
+ jControl = jContainer;
+ else
+ for idx = 1 : jContainer.getComponentCount
+ jControl = findTooltipIn(jContainer.getComponent(idx-1), specialTooltipStr);
+ if ~isempty(jControl), return; end
+ end
+ end
+ catch
+ % ignore
+ end
+end
+
+%% TODO TODO TODO
+%{
+- Enh: Improve interactive-GUI performance - esp. expandNode()
+- Enh: Add property listeners - same problem in MathWork's inspect.m
+- Enh: Display additional properties - same problem in MathWork's inspect.m
+- Enh: Add axis (plot, Graphics) component handles
+- Enh: Add figure thumbnail image below the java tree (& indicate corresponding jObject when selected)
+- Enh: scroll initially-selected node into view (problem because treenode has no pixel location)
+- Fix: java exceptions when getting some fields (com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run)
+- Fix: use EDT if available (especially in flashComponent)
+%}
+
+
diff --git a/@GUI/init.m b/@GUI/init.m
index 24525d16f6c0826860f33bc46e956c3578e2292a..114360734a5cf248522344214d9bbe20844e914b 100644
--- a/@GUI/init.m
+++ b/@GUI/init.m
@@ -15,8 +15,8 @@ elseif object.mode == 0
name = 'Table Tool';
end
% main figure
-object.fig = figure('units','pixels',...
- 'position',[0 0 object.fig_width object.fig_height],...
+object.fig = figure('Units','pixels',...
+ 'Position',[0 0 object.fig_width object.fig_height],...
'menubar','none',...
'name','Table Tool',...
'numbertitle','off',...
@@ -27,43 +27,43 @@ object.fig = figure('units','pixels',...
% edit button
-object.edit_tog = uicontrol('style','toggle',...
- 'units','pix',...
- 'string','Edit',...
+object.edit_tog = uicontrol('Style','togglebutton',...
+ 'Units','pix',...
+ 'String','Edit',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'Value',object.edit,...
'callback',@(src,event)edit_tog_call(object,src,event));
% Save button
-object.save_pb = uicontrol('style','push',...
- 'units','pix',...
- 'string','Save',...
+object.save_pb = uicontrol('Style','pushbutton',...
+ 'Units','pix',...
+ 'String','Save',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'callback',@(src,event)save_call(object,src,event));
% Close button
-object.close_pb = uicontrol('style','push',...
- 'units','pix',...
- 'string','Close',...
+object.close_pb = uicontrol('Style','pushbutton',...
+ 'Units','pix',...
+ 'String','Close',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'callback',@(src,event)close_fig(object,src,event));
% Save external button
-object.save_ext_pb = uicontrol('style','push',...
- 'units','pix',...
- 'string','Save Ext',...
+object.save_ext_pb = uicontrol('Style','pushbutton',...
+ 'Units','pix',...
+ 'String','Save Ext',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'callback',@(src,event)save_ext_call(object,src,event));
% Check button
-object.check_pb = uicontrol('style','push',...
- 'units','pix',...
- 'string','Syntax',...
+object.check_pb = uicontrol('Style','pushbutton',...
+ 'Units','pix',...
+ 'String','Syntax',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'Max',2.0,...
@@ -72,38 +72,38 @@ object.check_pb = uicontrol('style','push',...
% PVS button
-object.pvs_pb = uicontrol('style','push',...
- 'units','pix',...
- 'string','Typecheck',...
+object.pvs_pb = uicontrol('Style','pushbutton',...
+ 'Units','pix',...
+ 'String','Typecheck',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'callback',@(src,event)typecheck_call(object,src,event));
% Input/Output button
-object.input_pb = uicontrol('style','push',...
- 'units','pix',...
- 'string','Ports',...
+object.input_pb = uicontrol('Style','pushbutton',...
+ 'Units','pix',...
+ 'String','Ports',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'callback',@(src,event)input_call(object,src,event));
% Settings button
-object.settings_pb = uicontrol('style','push',...
- 'units','pix',...
- 'string','Settings',...
+object.settings_pb = uicontrol('Style','pushbutton',...
+ 'Units','pix',...
+ 'String','Settings',...
'HorizontalAlign','left',...
'Parent',object.fig,...
'callback',@(src,event)settings_call(object,src,event));
% Expression Name Label
-object.name_label = uicontrol('style','text',...
- 'string','Expression Name',...
+object.name_label = uicontrol('Style','text',...
+ 'String','Expression Name',...
'HorizontalAlign','right',...
'BackgroundColor',get(object.fig,'Color'));
% Expression Name Edit box
-object.function_name_control = uicontrol('style','edit',...
- 'units','pix',...
+object.function_name_control = uicontrol('Style','edit',...
+ 'Units','pix',...
'Parent',object.fig,...
'HorizontalAlign','center',...
'FontWeight','bold',...
@@ -113,14 +113,14 @@ object.function_name_control = uicontrol('style','edit',...
'BackgroundColor',[1 1 1]);
% input list label
-object.input_label = uicontrol('style','text',...
- 'string','Inputs',...
+object.input_label = uicontrol('Style','text',...
+ 'String','Inputs',...
'HorizontalAlign','right',...
'BackgroundColor',get(object.fig,'Color'));
% input list edit box
-object.function_inputs_control = uicontrol('style','edit',...
- 'units','pix',...
+object.function_inputs_control = uicontrol('Style','edit',...
+ 'Units','pix',...
'Parent',object.fig,...
'HorizontalAlign','center',...
'FontWeight','bold',...
diff --git a/@GUI/save_call.m b/@GUI/save_call.m
index def7f8eedee9bec33214eb2d8fc6b29e1dcc6c6a..245655484a00757f237745d5aced8530d1353505 100644
--- a/@GUI/save_call.m
+++ b/@GUI/save_call.m
@@ -44,6 +44,8 @@ elseif object.mode == 1
load_system('simulink');
% generate the code
+ %object
+ %findobj(object)
redo = object.check_output_consistent;
if redo
object.EMLGen.set_datatype(object.output_data_type);
diff --git a/@GUI/textbox_callback.m b/@GUI/textbox_callback.m
index f0829ae0970398d7c92f3cbcc8c8cc156c979311..3379381880744a40705088e19a1949fbdc151e39 100644
--- a/@GUI/textbox_callback.m
+++ b/@GUI/textbox_callback.m
@@ -39,6 +39,24 @@ if(~isempty(unicode2native(event.Character)))
% hack because api does not update the string field of
% textbox until after it loses focus. temporarily focus on
% label, read string, refocus on textbox.
+
+ % When we temporarily lose focus, we would want to save the cursor
+ % position so we can return to the cursor position were we left of.
+
+ % The cursor position is a uicontrol property that is not exposed by
+ % Matlab. Since all Matlab uicontrols are based on underlying Java
+ % Swing controls, accessing these features is possible via their
+ % Java control peers.
+
+ % the findobj function finds java objects contained within a specified
+ % Matlab GUI handle
+
+ %class(src)
+ %{
+ java_obj = findjobj(src);
+ java_obj = java_obj.getComponent(0).getComponent(0);
+ Cursor_Pos = java_obj.getCaretPosition();
+ %}
uicontrol(object.name_label);
undo_data.action = 1;
@@ -50,6 +68,7 @@ if(~isempty(unicode2native(event.Character)))
object.undo_man.new_state(undo_data);
uicontrol(src);
+ %java_obj.setCaretPosition(Cursor_Pos);
figure(object.fig);
object.update_undoredo;
diff --git a/@RGrid/delete_g1s.m b/@RGrid/delete_g1s.m
index 2c5258b1578a6fd3ec9f24baf9026cd6430d9f49..536ea6bfc54712537f3f19b3aa52138611e4c7c7 100644
--- a/@RGrid/delete_g1s.m
+++ b/@RGrid/delete_g1s.m
@@ -13,11 +13,10 @@ deleted = [];
for i=1:size(object.Cells,2)
if (object.Cells(i).Cell1 == cell)
deleted = [deleted i];
-
end
end
if(~isempty(deleted))
- delete(object.Cells(deleted).result);
+ delete([object.Cells(deleted).result]);
object.Cells(deleted) = [];
end
end
diff --git a/@RGrid/delete_g2s.m b/@RGrid/delete_g2s.m
index cf356c529b4ee6309b79109ad4c0dc8bef7157af..4e7c5278d9f284ae471aac99127584b2dfa6eb1d 100644
--- a/@RGrid/delete_g2s.m
+++ b/@RGrid/delete_g2s.m
@@ -20,7 +20,7 @@ for i=1:size(object.Cells,2)
end
end
if(~isempty(deleted))
- delete(object.Cells(deleted).result);
+ delete([object.Cells(deleted).result]);
object.Cells(deleted) = [];
end
end
diff --git a/Examples/Jin_Parnas_Example.mdl.r2010a b/Examples/Jin_Parnas_Example.mdl.r2010a
new file mode 100644
index 0000000000000000000000000000000000000000..0b5a8b9ff481e6d5d2b1519f174c1d6a42f7cc32
--- /dev/null
+++ b/Examples/Jin_Parnas_Example.mdl.r2010a
@@ -0,0 +1,1243 @@
+Model {
+ Name "Jin_Parnas_Example"
+ Version 7.5
+ MdlSubVersion 0
+ GraphicalInterface {
+ NumRootInports 0
+ NumRootOutports 0
+ ParameterArgumentNames ""
+ ComputedModelVersion "1.2"
+ NumModelReferences 0
+ NumTestPointedSignals 0
+ }
+ SavedCharacterEncoding "ISO-8859-1"
+ SaveDefaultBlockParams on
+ ScopeRefreshTime 0.035000
+ OverrideScopeRefreshTime on
+ DisableAllScopes off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ MinMaxOverflowArchiveMode "Overwrite"
+ MaxMDLFileLineLength 120
+ Created "Mon Jan 24 12:34:29 2011"
+ Creator "colin"
+ UpdateHistory "UpdateHistoryNever"
+ ModifiedByFormat "%"
+ LastModifiedBy "matthew"
+ ModifiedDateFormat "%"
+ LastModifiedDate "Thu May 15 15:26:50 2014"
+ RTWModifiedTimeStamp 322068405
+ ModelVersionFormat "1.%"
+ ConfigurationManager "none"
+ SampleTimeColors off
+ SampleTimeAnnotations off
+ LibraryLinkDisplay "none"
+ WideLines off
+ ShowLineDimensions off
+ ShowPortDataTypes off
+ ShowLoopsOnError on
+ IgnoreBidirectionalLines off
+ ShowStorageClass off
+ ShowTestPointIcons on
+ ShowSignalResolutionIcons on
+ ShowViewerIcons on
+ SortedOrder off
+ ExecutionContextIcon off
+ ShowLinearizationAnnotations on
+ BlockNameDataTip off
+ BlockParametersDataTip off
+ BlockDescriptionStringDataTip off
+ ToolBar on
+ StatusBar on
+ BrowserShowLibraryLinks off
+ BrowserLookUnderMasks off
+ SimulationMode "normal"
+ LinearizationMsg "none"
+ Profile off
+ ParamWorkspaceSource "MATLABWorkspace"
+ AccelSystemTargetFile "accel.tlc"
+ AccelTemplateMakefile "accel_default_tmf"
+ AccelMakeCommand "make_rtw"
+ TryForcingSFcnDF off
+ RecordCoverage off
+ CovPath "/"
+ CovSaveName "covdata"
+ CovMetricSettings "dw"
+ CovNameIncrementing off
+ CovHtmlReporting on
+ CovForceBlockReductionOff on
+ covSaveCumulativeToWorkspaceVar on
+ CovSaveSingleToWorkspaceVar on
+ CovCumulativeVarName "covCumulativeData"
+ CovCumulativeReport off
+ CovReportOnPause on
+ CovModelRefEnable "Off"
+ CovExternalEMLEnable off
+ ExtModeBatchMode off
+ ExtModeEnableFloating on
+ ExtModeTrigType "manual"
+ ExtModeTrigMode "normal"
+ ExtModeTrigPort "1"
+ ExtModeTrigElement "any"
+ ExtModeTrigDuration 1000
+ ExtModeTrigDurationFloating "auto"
+ ExtModeTrigHoldOff 0
+ ExtModeTrigDelay 0
+ ExtModeTrigDirection "rising"
+ ExtModeTrigLevel 0
+ ExtModeArchiveMode "off"
+ ExtModeAutoIncOneShot off
+ ExtModeIncDirWhenArm off
+ ExtModeAddSuffixToVar off
+ ExtModeWriteAllDataToWs off
+ ExtModeArmWhenConnect on
+ ExtModeSkipDownloadWhenConnect off
+ ExtModeLogAll on
+ ExtModeAutoUpdateStatusClock on
+ BufferReuse on
+ ShowModelReferenceBlockVersion off
+ ShowModelReferenceBlockIO off
+ Array {
+ Type "Handle"
+ Dimension 1
+ Simulink.ConfigSet {
+ $ObjectID 1
+ Version "1.10.0"
+ Array {
+ Type "Handle"
+ Dimension 8
+ Simulink.SolverCC {
+ $ObjectID 2
+ Version "1.10.0"
+ StartTime "0.0"
+ StopTime "10.0"
+ AbsTol "auto"
+ FixedStep "auto"
+ InitialStep "auto"
+ MaxNumMinSteps "-1"
+ MaxOrder 5
+ ZcThreshold "auto"
+ ConsecutiveZCsStepRelTol "10*128*eps"
+ MaxConsecutiveZCs "1000"
+ ExtrapolationOrder 4
+ NumberNewtonIterations 1
+ MaxStep "auto"
+ MinStep "auto"
+ MaxConsecutiveMinStep "1"
+ RelTol "1e-3"
+ SolverMode "Auto"
+ Solver "ode45"
+ SolverName "ode45"
+ SolverJacobianMethodControl "auto"
+ ShapePreserveControl "DisableAll"
+ ZeroCrossControl "UseLocalSettings"
+ ZeroCrossAlgorithm "Nonadaptive"
+ AlgebraicLoopSolver "TrustRegion"
+ SolverResetMethod "Fast"
+ PositivePriorityOrder off
+ AutoInsertRateTranBlk off
+ SampleTimeConstraint "Unconstrained"
+ InsertRTBMode "Whenever possible"
+ }
+ Simulink.DataIOCC {
+ $ObjectID 3
+ Version "1.10.0"
+ Decimation "1"
+ ExternalInput "[t, u]"
+ FinalStateName "xFinal"
+ InitialState "xInitial"
+ LimitDataPoints on
+ MaxDataPoints "1000"
+ LoadExternalInput off
+ LoadInitialState off
+ SaveFinalState off
+ SaveCompleteFinalSimState off
+ SaveFormat "Array"
+ SaveOutput on
+ SaveState off
+ SignalLogging on
+ DSMLogging on
+ InspectSignalLogs off
+ SaveTime on
+ ReturnWorkspaceOutputs off
+ StateSaveName "xout"
+ TimeSaveName "tout"
+ OutputSaveName "yout"
+ SignalLoggingName "logsout"
+ DSMLoggingName "dsmout"
+ OutputOption "RefineOutputTimes"
+ OutputTimes "[]"
+ ReturnWorkspaceOutputsName "out"
+ Refine "1"
+ }
+ Simulink.OptimizationCC {
+ $ObjectID 4
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 7
+ Cell "BooleansAsBitfields"
+ Cell "PassReuseOutputArgsAs"
+ Cell "PassReuseOutputArgsThreshold"
+ Cell "ZeroExternalMemoryAtStartup"
+ Cell "ZeroInternalMemoryAtStartup"
+ Cell "OptimizeModelRefInitCode"
+ Cell "NoFixptDivByZeroProtection"
+ PropName "DisabledProps"
+ }
+ BlockReduction on
+ BooleanDataType on
+ ConditionallyExecuteInputs on
+ InlineParams off
+ UseIntDivNetSlope off
+ InlineInvariantSignals off
+ OptimizeBlockIOStorage on
+ BufferReuse on
+ EnhancedBackFolding off
+ StrengthReduction off
+ EnforceIntegerDowncast on
+ ExpressionFolding on
+ BooleansAsBitfields off
+ BitfieldContainerType "uint_T"
+ EnableMemcpy on
+ MemcpyThreshold 64
+ PassReuseOutputArgsAs "Structure reference"
+ ExpressionDepthLimit 2147483647
+ FoldNonRolledExpr on
+ LocalBlockOutputs on
+ RollThreshold 5
+ SystemCodeInlineAuto off
+ StateBitsets off
+ DataBitsets off
+ UseTempVars off
+ ZeroExternalMemoryAtStartup on
+ ZeroInternalMemoryAtStartup on
+ InitFltsAndDblsToZero off
+ NoFixptDivByZeroProtection off
+ EfficientFloat2IntCast off
+ EfficientMapNaN2IntZero on
+ OptimizeModelRefInitCode off
+ LifeSpan "inf"
+ MaxStackSize "Inherit from target"
+ BufferReusableBoundary on
+ SimCompilerOptimization "Off"
+ AccelVerboseBuild off
+ }
+ Simulink.DebuggingCC {
+ $ObjectID 5
+ Version "1.10.0"
+ RTPrefix "error"
+ ConsistencyChecking "none"
+ ArrayBoundsChecking "none"
+ SignalInfNanChecking "none"
+ SignalRangeChecking "none"
+ ReadBeforeWriteMsg "UseLocalSettings"
+ WriteAfterWriteMsg "UseLocalSettings"
+ WriteAfterReadMsg "UseLocalSettings"
+ AlgebraicLoopMsg "warning"
+ ArtificialAlgebraicLoopMsg "warning"
+ SaveWithDisabledLinksMsg "warning"
+ SaveWithParameterizedLinksMsg "warning"
+ CheckSSInitialOutputMsg on
+ UnderspecifiedInitializationDetection "Classic"
+ MergeDetectMultiDrivingBlocksExec "none"
+ CheckExecutionContextPreStartOutputMsg off
+ CheckExecutionContextRuntimeOutputMsg off
+ SignalResolutionControl "UseLocalSettings"
+ BlockPriorityViolationMsg "warning"
+ MinStepSizeMsg "warning"
+ TimeAdjustmentMsg "none"
+ MaxConsecutiveZCsMsg "error"
+ SolverPrmCheckMsg "warning"
+ InheritedTsInSrcMsg "warning"
+ DiscreteInheritContinuousMsg "warning"
+ MultiTaskDSMMsg "error"
+ MultiTaskCondExecSysMsg "error"
+ MultiTaskRateTransMsg "error"
+ SingleTaskRateTransMsg "none"
+ TasksWithSamePriorityMsg "warning"
+ SigSpecEnsureSampleTimeMsg "warning"
+ CheckMatrixSingularityMsg "none"
+ IntegerOverflowMsg "warning"
+ Int32ToFloatConvMsg "warning"
+ ParameterDowncastMsg "error"
+ ParameterOverflowMsg "error"
+ ParameterUnderflowMsg "none"
+ ParameterPrecisionLossMsg "warning"
+ ParameterTunabilityLossMsg "warning"
+ FixptConstUnderflowMsg "none"
+ FixptConstOverflowMsg "none"
+ FixptConstPrecisionLossMsg "none"
+ UnderSpecifiedDataTypeMsg "none"
+ UnnecessaryDatatypeConvMsg "none"
+ VectorMatrixConversionMsg "none"
+ InvalidFcnCallConnMsg "error"
+ FcnCallInpInsideContextMsg "Use local settings"
+ SignalLabelMismatchMsg "none"
+ UnconnectedInputMsg "warning"
+ UnconnectedOutputMsg "warning"
+ UnconnectedLineMsg "warning"
+ SFcnCompatibilityMsg "none"
+ UniqueDataStoreMsg "none"
+ BusObjectLabelMismatch "warning"
+ RootOutportRequireBusObject "warning"
+ AssertControl "UseLocalSettings"
+ EnableOverflowDetection off
+ ModelReferenceIOMsg "none"
+ ModelReferenceVersionMismatchMessage "none"
+ ModelReferenceIOMismatchMessage "none"
+ ModelReferenceCSMismatchMessage "none"
+ UnknownTsInhSupMsg "warning"
+ ModelReferenceDataLoggingMessage "warning"
+ ModelReferenceSymbolNameMessage "warning"
+ ModelReferenceExtraNoncontSigs "error"
+ StateNameClashWarn "warning"
+ SimStateInterfaceChecksumMismatchMsg "warning"
+ StrictBusMsg "ErrorLevel1"
+ BusNameAdapt "WarnAndRepair"
+ NonBusSignalsTreatedAsBus "none"
+ LoggingUnavailableSignals "error"
+ BlockIODiagnostic "none"
+ }
+ Simulink.HardwareCC {
+ $ObjectID 6
+ Version "1.10.0"
+ ProdBitPerChar 8
+ ProdBitPerShort 16
+ ProdBitPerInt 32
+ ProdBitPerLong 32
+ ProdIntDivRoundTo "Undefined"
+ ProdEndianess "Unspecified"
+ ProdWordSize 32
+ ProdShiftRightIntArith on
+ ProdHWDeviceType "32-bit Generic"
+ TargetBitPerChar 8
+ TargetBitPerShort 16
+ TargetBitPerInt 32
+ TargetBitPerLong 32
+ TargetShiftRightIntArith on
+ TargetIntDivRoundTo "Undefined"
+ TargetEndianess "Unspecified"
+ TargetWordSize 32
+ TargetTypeEmulationWarnSuppressLevel 0
+ TargetPreprocMaxBitsSint 32
+ TargetPreprocMaxBitsUint 32
+ TargetHWDeviceType "Specified"
+ TargetUnknown off
+ ProdEqTarget on
+ }
+ Simulink.ModelReferenceCC {
+ $ObjectID 7
+ Version "1.10.0"
+ UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+ CheckModelReferenceTargetMessage "error"
+ EnableParallelModelReferenceBuilds off
+ ParallelModelReferenceMATLABWorkerInit "None"
+ ModelReferenceNumInstancesAllowed "Multi"
+ PropagateVarSize "Infer from blocks in model"
+ ModelReferencePassRootInputsByReference on
+ ModelReferenceMinAlgLoopOccurrences off
+ PropagateSignalLabelsOutOfModel off
+ SupportModelReferenceSimTargetCustomCode off
+ }
+ Simulink.SFSimCC {
+ $ObjectID 8
+ Version "1.10.0"
+ SFSimEnableDebug on
+ SFSimOverflowDetection on
+ SFSimEcho on
+ SimBlas on
+ SimCtrlC on
+ SimExtrinsic on
+ SimIntegrity on
+ SimUseLocalCustomCode off
+ SimBuildMode "sf_incremental_build"
+ }
+ Simulink.RTWCC {
+ $BackupClass "Simulink.RTWCC"
+ $ObjectID 9
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 6
+ Cell "IncludeHyperlinkInReport"
+ Cell "GenerateTraceInfo"
+ Cell "GenerateTraceReport"
+ Cell "GenerateTraceReportSl"
+ Cell "GenerateTraceReportSf"
+ Cell "GenerateTraceReportEml"
+ PropName "DisabledProps"
+ }
+ SystemTargetFile "grt.tlc"
+ GenCodeOnly off
+ MakeCommand "make_rtw"
+ GenerateMakefile on
+ TemplateMakefile "grt_default_tmf"
+ GenerateReport off
+ SaveLog off
+ RTWVerbose on
+ RetainRTWFile off
+ ProfileTLC off
+ TLCDebug off
+ TLCCoverage off
+ TLCAssert off
+ ProcessScriptMode "Default"
+ ConfigurationMode "Optimized"
+ ConfigAtBuild off
+ RTWUseLocalCustomCode off
+ RTWUseSimCustomCode off
+ IncludeHyperlinkInReport off
+ LaunchReport off
+ TargetLang "C"
+ IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+ IncludeERTFirstTime off
+ GenerateTraceInfo off
+ GenerateTraceReport off
+ GenerateTraceReportSl off
+ GenerateTraceReportSf off
+ GenerateTraceReportEml off
+ GenerateCodeInfo off
+ RTWCompilerOptimization "Off"
+ CheckMdlBeforeBuild "Off"
+ CustomRebuildMode "OnUpdate"
+ Array {
+ Type "Handle"
+ Dimension 2
+ Simulink.CodeAppCC {
+ $ObjectID 10
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 19
+ Cell "IgnoreCustomStorageClasses"
+ Cell "IgnoreTestpoints"
+ Cell "InsertBlockDesc"
+ Cell "SFDataObjDesc"
+ Cell "SimulinkDataObjDesc"
+ Cell "DefineNamingRule"
+ Cell "SignalNamingRule"
+ Cell "ParamNamingRule"
+ Cell "InlinedPrmAccess"
+ Cell "CustomSymbolStr"
+ Cell "CustomSymbolStrGlobalVar"
+ Cell "CustomSymbolStrType"
+ Cell "CustomSymbolStrField"
+ Cell "CustomSymbolStrFcn"
+ Cell "CustomSymbolStrFcnArg"
+ Cell "CustomSymbolStrBlkIO"
+ Cell "CustomSymbolStrTmpVar"
+ Cell "CustomSymbolStrMacro"
+ Cell "ReqsInCode"
+ PropName "DisabledProps"
+ }
+ ForceParamTrailComments off
+ GenerateComments on
+ IgnoreCustomStorageClasses on
+ IgnoreTestpoints off
+ IncHierarchyInIds off
+ MaxIdLength 31
+ PreserveName off
+ PreserveNameWithParent off
+ ShowEliminatedStatement off
+ IncAutoGenComments off
+ SimulinkDataObjDesc off
+ SFDataObjDesc off
+ IncDataTypeInIds off
+ MangleLength 1
+ CustomSymbolStrGlobalVar "$R$N$M"
+ CustomSymbolStrType "$N$R$M"
+ CustomSymbolStrField "$N$M"
+ CustomSymbolStrFcn "$R$N$M$F"
+ CustomSymbolStrFcnArg "rt$I$N$M"
+ CustomSymbolStrBlkIO "rtb_$N$M"
+ CustomSymbolStrTmpVar "$N$M"
+ CustomSymbolStrMacro "$R$N$M"
+ DefineNamingRule "None"
+ ParamNamingRule "None"
+ SignalNamingRule "None"
+ InsertBlockDesc off
+ SimulinkBlockComments on
+ EnableCustomComments off
+ InlinedPrmAccess "Literals"
+ ReqsInCode off
+ UseSimReservedNames off
+ }
+ Simulink.GRTTargetCC {
+ $BackupClass "Simulink.TargetCC"
+ $ObjectID 11
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 17
+ Cell "GeneratePreprocessorConditionals"
+ Cell "IncludeMdlTerminateFcn"
+ Cell "CombineOutputUpdateFcns"
+ Cell "SuppressErrorStatus"
+ Cell "ERTCustomFileBanners"
+ Cell "GenerateSampleERTMain"
+ Cell "GenerateTestInterfaces"
+ Cell "ModelStepFunctionPrototypeControlCompliant"
+ Cell "CPPClassGenCompliant"
+ Cell "MultiInstanceERTCode"
+ Cell "PurelyIntegerCode"
+ Cell "SupportNonFinite"
+ Cell "SupportComplex"
+ Cell "SupportAbsoluteTime"
+ Cell "SupportContinuousTime"
+ Cell "SupportNonInlinedSFcns"
+ Cell "PortableWordSizes"
+ PropName "DisabledProps"
+ }
+ TargetFcnLib "ansi_tfl_table_tmw.mat"
+ TargetLibSuffix ""
+ TargetPreCompLibLocation ""
+ TargetFunctionLibrary "ANSI_C"
+ UtilityFuncGeneration "Auto"
+ ERTMultiwordTypeDef "System defined"
+ ERTCodeCoverageTool "None"
+ ERTMultiwordLength 256
+ MultiwordLength 2048
+ GenerateFullHeader on
+ GenerateSampleERTMain off
+ GenerateTestInterfaces off
+ IsPILTarget off
+ ModelReferenceCompliant on
+ ParMdlRefBuildCompliant on
+ CompOptLevelCompliant on
+ IncludeMdlTerminateFcn on
+ GeneratePreprocessorConditionals "Disable all"
+ CombineOutputUpdateFcns off
+ SuppressErrorStatus off
+ ERTFirstTimeCompliant off
+ IncludeFileDelimiter "Auto"
+ ERTCustomFileBanners off
+ SupportAbsoluteTime on
+ LogVarNameModifier "rt_"
+ MatFileLogging on
+ MultiInstanceERTCode off
+ SupportNonFinite on
+ SupportComplex on
+ PurelyIntegerCode off
+ SupportContinuousTime on
+ SupportNonInlinedSFcns on
+ SupportVariableSizeSignals off
+ EnableShiftOperators on
+ ParenthesesLevel "Nominal"
+ PortableWordSizes off
+ ModelStepFunctionPrototypeControlCompliant off
+ CPPClassGenCompliant off
+ AutosarCompliant off
+ UseMalloc off
+ ExtMode off
+ ExtModeStaticAlloc off
+ ExtModeTesting off
+ ExtModeStaticAllocSize 1000000
+ ExtModeTransport 0
+ ExtModeMexFile "ext_comm"
+ ExtModeIntrfLevel "Level1"
+ RTWCAPISignals off
+ RTWCAPIParams off
+ RTWCAPIStates off
+ GenerateASAP2 off
+ }
+ PropName "Components"
+ }
+ }
+ PropName "Components"
+ }
+ Name "Configuration"
+ CurrentDlgPage "Solver"
+ ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] "
+ }
+ PropName "ConfigurationSets"
+ }
+ Simulink.ConfigSet {
+ $PropName "ActiveConfigurationSet"
+ $ObjectID 1
+ }
+ BlockDefaults {
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ NamePlacement "normal"
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ ShowName on
+ BlockRotation 0
+ BlockMirror off
+ }
+ AnnotationDefaults {
+ HorizontalAlignment "center"
+ VerticalAlignment "middle"
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ UseDisplayTextAsClickCallback off
+ }
+ LineDefaults {
+ FontName "Helvetica"
+ FontSize 9
+ FontWeight "normal"
+ FontAngle "normal"
+ }
+ BlockParameterDefaults {
+ Block {
+ BlockType Demux
+ Outputs "4"
+ DisplayOption "none"
+ BusSelectionMode off
+ }
+ Block {
+ BlockType Inport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ LatchByDelayingOutsideSignal off
+ LatchInputForFeedbackSignals off
+ Interpolate on
+ }
+ Block {
+ BlockType Outport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ SourceOfInitialOutputValue "Dialog"
+ OutputWhenDisabled "held"
+ InitialOutput "[]"
+ }
+ Block {
+ BlockType "S-Function"
+ FunctionName "system"
+ SFunctionModules "''"
+ PortCounts "[]"
+ SFunctionDeploymentMode off
+ }
+ Block {
+ BlockType SubSystem
+ ShowPortLabels "FromPortIcon"
+ Permissions "ReadWrite"
+ PermitHierarchicalResolution "All"
+ TreatAsAtomicUnit off
+ CheckFcnCallInpInsideContextMsg off
+ SystemSampleTime "-1"
+ RTWFcnNameOpts "Auto"
+ RTWFileNameOpts "Auto"
+ RTWMemSecFuncInitTerm "Inherit from model"
+ RTWMemSecFuncExecute "Inherit from model"
+ RTWMemSecDataConstants "Inherit from model"
+ RTWMemSecDataInternal "Inherit from model"
+ RTWMemSecDataParameters "Inherit from model"
+ SimViewingDevice off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ }
+ Block {
+ BlockType Terminator
+ }
+ }
+ System {
+ Name "Jin_Parnas_Example"
+ Location [1009, 551, 1589, 811]
+ Open on
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ ReportName "simulink-default.rpt"
+ SIDHighWatermark 6
+ Block {
+ BlockType SubSystem
+ Name "jin_ex"
+ SID 1
+ Ports [2, 1]
+ Position [80, 54, 245, 121]
+ LibraryVersion "1.12"
+ UserDataPersistent on
+ UserData "DataTag0"
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5,"
+ " 0.9, 'Tabular Expression', 'horizontalAlignment', 'center')\ncolor('green')\ntext(0.5, 0.1, 'Checked', 'horizon"
+ "talAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "jin_ex"
+ Location [433, 447, 931, 747]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 4
+ Position [35, 38, 65, 52]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 5
+ Position [35, 38, 65, 52]
+ Port "2"
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType SubSystem
+ Name "code"
+ SID 3
+ Ports [2, 1]
+ Position [250, 49, 320, 96]
+ LibraryVersion "1.31"
+ PermitHierarchicalResolution "ExplicitOnly"
+ TreatAsAtomicUnit on
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskType "Stateflow"
+ MaskDescription "Embedded MATLAB block"
+ MaskDisplay "disp('jin_ex');"
+ MaskSelfModifiable on
+ MaskIconFrame on
+ MaskIconOpaque off
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "autoscale"
+ System {
+ Name "code"
+ Location [257, 457, 812, 717]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ SIDHighWatermark 19
+ SIDPrevWatermark 13
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 1
+ Position [20, 101, 40, 119]
+ IconDisplay "Port number"
+ OutDataType "sfix(16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 18
+ Position [20, 136, 40, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Demux
+ Name " Demux "
+ SID 15
+ Ports [1, 1]
+ Position [270, 160, 320, 200]
+ Outputs "1"
+ }
+ Block {
+ BlockType "S-Function"
+ Name " SFunction "
+ SID 14
+ Tag "Stateflow S-Function Jin_Parnas_Example 2"
+ Ports [2, 2]
+ Position [180, 100, 230, 160]
+ FunctionName "sf_sfun"
+ PortCounts "[2 2]"
+ EnableBusSupport off
+ Port {
+ PortNumber 2
+ Name "output"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ }
+ Block {
+ BlockType Terminator
+ Name " Terminator "
+ SID 17
+ Position [460, 171, 480, 189]
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 19
+ Position [460, 101, 480, 119]
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock " SFunction "
+ SrcPort 1
+ DstBlock " Demux "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 2
+ }
+ Line {
+ Name "output"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 2
+ DstBlock "output"
+ DstPort 1
+ }
+ Line {
+ SrcBlock " Demux "
+ SrcPort 1
+ DstBlock " Terminator "
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 6
+ Position [35, 53, 65, 67]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 2
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 1
+ DstBlock "output"
+ DstPort 1
+ }
+ }
+ }
+ Annotation {
+ Name "Table1 from Jin and Parnas' paper \"Defining the meaning\nof tabular mathematical expressions\"\n\n"
+ "2 Dimensional normal function table of 2 variables\n\nprovable in PVS and CVC3"
+ Position [413, 93]
+ }
+ }
+}
+MatData {
+ NumRecords 1
+ DataRecord {
+ Tag DataTag0
+ Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ! !0 X #@,@ !@ @ ) 4"
+ " ( 0 + R ! ( \"P,@ %)30 . $#( 8 ( @ % \" $ ! 0 "
+ " % 0 !0 $ % 34-/4P . R#$ 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E<"
+ "E]? #@ (@Q & \" $ !0 @ !9 0 $ #@ (@) & \" D !0 @ "
+ " !8\"0 0 $ @ %@) \" + -@! X @ . ( !@$ \"X\" 6 D 1W)I9# 0V5L;', 0V5L;#$"
+ " 8V]N9%]T97AT &-E;&Q?:6YD97@ <&%R96YT7V=R:60 8V5L;', 1W)I9 !P87)E;G1?8V5L; !S<&QI=%]P8@!N=6U?8V5L;', 9W)I9%]I;F1E>"
+ " !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F 0 # 0 \"H A 0 \"L B 0 \"P 7 0 \"T "
+ " ! , ! +@ \"$ ! +P \"( ! , !< ! ,0 $ P $ R (0 $ S "
+ " (@ $ T %P $ U 0 # 0 #8 A 0 #< B 0 #@ 7 0 #D !"
+ " , ! .@ \"$ ! .P \"( ! / !< ! /0 $ P $ ^ (0 $ _ ("
+ "@ $ ! %P $ !! 0 # 0 $( A 0 $, B 0 $0 7 0 $4 ! "
+ " , ! 1@ \"$ ! 1P \"( ! 2 !< ! 20 "
+ " "
+ " #@ . , 8 ( ! % \" "
+ "$ # 0 0 , >#PP X X !@ @ & 4 ( 0 $ ! D ( "
+ "\\#\\. , 8 ( ! % \" $ $ 0 0 0 >#T], X X !@ @ & 4"
+ " ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 ! 0 "
+ " & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ ! D "
+ " ( \\#\\. , 8 ( ! % \" $ # 0 0 , >#XP X X !@ @ "
+ " & 4 ( 0 $ ! D ( \"$ . 2 8 ( #0 % \" 8 "
+ " ! 0 & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ "
+ " ! D ( \\#\\. 4 8 ( #0 % \" @ ! 0 & ( "
+ " -T\" 0 , $ !@ < \" #@ #@ & \" 8 !0 @ ! 0 $ \"0 "
+ "@ (0 X X !@ @ & 4 ( 0 $ ! D ( \\#\\. 2 "
+ "8 ( #0 % \" 8 ! 0 & & -T\" 0 $ \" P X !( !@ "
+ " @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! #@ #@ & \" "
+ "8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $"
+ " ! 8 8 W0( ! 0 0 \" #@ # & \" 0 !0 @ ! P $"
+ " $ # 'D\\, . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #"
+ " & \" 0 !0 @ ! ! $ $ $ 'D]/3 . . 8 ( !@ % \" "
+ "$ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 $ !@ !"
+ "@ #= @ $ ! \"0 $ . . 8 ( !@ % \" $ ! 0 ) \" "
+ " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ "
+ " @ & 4 ( 0 $ ! D ( \\#\\. , 8 ( ! % \" "
+ " $ # 0 0 , >3XP X X !@ @ & 4 ( 0 $ ! D ( "
+ " \"$ . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ) 0 "
+ " X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ "
+ " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 "
+ " $ \"0 @ #P/PX !0 !@ @ - 4 ( \" $ ! 8 @ "
+ "W0( ! P @ * \"P ( . . 8 ( !@ % \" $ ! 0 ) \" "
+ " A #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ 0 X !( !@ "
+ " @ - 4 ( !@ $ ! 8 8 W0( ! 0 ( # #@ $@ & \" "
+ " T !0 @ & 0 $ !@ !@ #= @ $ ! \"0 $ . . 8 ( !@ "
+ " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 "
+ " $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! D ( "
+ " \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ( @ "
+ " X X !@ @ $ 4 ( 0 < ! ! ' >%XR+7E>,@ . 2 8 ( !@ "
+ " % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - "
+ " 4 ( !@ $ ! 8 8 W0( ! 0 0 \" #@ $@ & \" T !0 "
+ " @ & 0 $ !@ !@ #= @ $ ! \"@ ( . , 8 ( ! % \" "
+ " $ # 0 0 , >\"MY X !( !@ @ & 4 ( 0 , ! D 8 "
+ " \\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ "
+ " $ ! ! ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 "
+ " $ + @ X X !@ @ $ 4 ( 0 < ! ! ' >%XR*WE>,@ . 2 "
+ "8 ( !@ % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ "
+ " @ - 4 ( !@ $ ! 8 8 W0( ! 0 8 \" #@ $@ & \" "
+ " T !0 @ & 0 $ !@ !@ #= @ $ ! \" ( . . 8 ( ! "
+ " % \" $ ' 0 0 !P 'A>,BMY7C( #@ $@ & \" 8 !0 @ ! P "
+ "$ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 "
+ " & & -T\" 0 $ & @ X !( !@ @ - 4 ( !@ $ ! "
+ " 8 8 W0( ! 0 H \" #@ #@ & \" 0 !0 @ ! !P $ $ "
+ " < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 \\#\\ #P/"
+ "P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! !@ "
+ "( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ + @ "
+ "X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 !0 @"
+ " ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" "
+ " 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4 ( !@ "
+ "$ ! 8 8 W0( ! 0 @ \" #@ #@ & \" 0 !0 @ ! !P "
+ "$ $ < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 "
+ "\\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $"
+ " ! !P ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $"
+ " * @ X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 "
+ " !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4"
+ " ( !@ $ ! 8 8 W0( ! 0 L \" #@ #@ & \" 0 !0 @"
+ " ! !P $ $ < !X7C(K>5XR X !( !@ @ & 4 ( 0 , ! D "
+ " 8 \\#\\ #P/P / _#@ &@ & \" T !0 @ . 0 $ !@ #@ "
+ " #= @ $ ) P P - #@ \\ 0 $0 !( 3 ! X !( !@ @ - 4 "
+ " ( !@ $ ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ "
+ " & 0 $ !@ !@ #= @ $ ! \"0 $ . 2 8 ( #0 % \" 8 "
+ " ! 0 & & -T\" 0 $ \" P X !( !@ @ - 4 ( !@ $ "
+ " ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ & 0 $ "
+ " !@ !@ #= @ $ ! \"0 $ . . 8 ( ! % \" $ & 0 "
+ "0 !@ &II;E]E> #@ # & \" 0 !0 @ ! P $ $ # '@L>0 . F $ 8 ("
+ " @ % \" $ ! 0 % 0 !P $ C '0 8V5L;%]I;F1E> '!A'1?> "
+ " &-O;F1I=&EO;E]T97AT7WD !C;VYD:71I;VY?=&5X=%]O9F9S970 9W)I9%]P=7-H7W=I9'1H X P !@ @ & "
+ " 4 ( ! D #@ # & \" 8 !0 @ $ "
+ " \"0 . , 8 ( !@ % \" 0 ) X X !@ @ & "
+ " 4 ( 0 $ ! D ( . , 8 ( !@ % \" "
+ " 0 ) X X !@ @ & 4 ( 0 $ ! D ( . . "
+ " 8 ( !@ % \" $ ! 0 ) \" #@ # & \" 8 !"
+ "0 @ $ \"0 . . 8 ( !@ % \" $ ! 0 ) \""
+ " #@ # & \" 8 !0 @ $ \"0 . . 8 ( !"
+ "@ % \" $ ! 0 ) \" &E #@ #@ & \" 8 !0 @ ! "
+ " 0 $ \"0 @ !.0 X X !@ @ & 4 ( 0 $ ! D ( "
+ " )$ . . 8 ( !@ % \" $ ! 0 ) \" \"1 #@ #@ & "
+ "\" 8 !0 @ ! 0 $ \"0 @ T0 X X !@ @ & 4 ( "
+ " 0 $ ! D ( /D . ^ 8 ( @ % \" $ ! 0 % 0 !"
+ "@ $ 2 0V5L;', 1W)I9#$ 1W)I9#( #@ # & \" 8 !0 @ $ \""
+ "0 . , 8 ( !@ % \" 0 ) X P !@ @ & "
+ " 4 ( ! D #@ ) ! & \" ( !0 @ ! 0 $ !0 "
+ "$ P ! / $-E;&PQ $-E;&PR ')E0)\n output = x^2-y^2;\n end\nelseif(y==0)\n if(x<0)\n"
+ " output = x+y;\n elseif(x==0)\n output = x^2-y^2;\n elseif(x>0)\n output = x+y;\n end\nelseif(y>0)\n"
+ " if(x<0)\n output = x^2+y^2;\n elseif(x==0)\n output = x+y;\n elseif(x>0)\n output = x^2+y^2;\n end"
+ "\nend\n"
+ editorLayout "100 M4x1[205 227 1080 733]"
+ }
+ }
+ junction {
+ id 4
+ position [23.5747 49.5747 7]
+ chart 2
+ linkNode [2 0 0]
+ subviewer 2
+ ssIdNumber 3
+ type CONNECTIVE_JUNCTION
+ }
+ transition {
+ id 5
+ labelString "{eML_blk_kernel();}"
+ labelPosition [32.125 19.875 102.544 14.964]
+ fontSize 12
+ src {
+ intersection [0 0 1 0 23.5747 14.625 0 0]
+ }
+ dst {
+ id 4
+ intersection [7 0 -1 -1 23.5747 42.5747 0 0]
+ }
+ midPoint [23.5747 24.9468]
+ chart 2
+ linkNode [2 0 0]
+ dataLimits [23.575 23.575 14.625 34.575]
+ subviewer 2
+ drawStyle SMART
+ executionOrder 1
+ ssIdNumber 2
+ }
+ data {
+ id 6
+ ssIdNumber 4
+ name "x"
+ linkNode [2 0 7]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 7
+ ssIdNumber 5
+ name "y"
+ linkNode [2 6 8]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 8
+ ssIdNumber 6
+ name "output"
+ linkNode [2 7 0]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ instance {
+ id 9
+ name "jin_ex/code"
+ machine 1
+ chart 2
+ }
+ target {
+ id 10
+ name "sfun"
+ description "Default Simulink S-Function Target."
+ machine 1
+ linkNode [1 0 0]
+ }
+}
diff --git a/Examples/ReadabilityExample.mdl b/Examples/ReadabilityExample.mdl
index 6b727d404a29d25a13c121a5d587def6ef31eed4..b589cc9921e3f8c8497faca3b5e2516021a3d6a9 100644
--- a/Examples/ReadabilityExample.mdl
+++ b/Examples/ReadabilityExample.mdl
@@ -1,3 +1,4885 @@
+<<<<<<< HEAD
+# MathWorks OPC Text Package
+Model {
+ Version 10.4
+ Description "Simulink model saved in R2021b"
+}
+__MWOPC_PACKAGE_BEGIN__ R2021b
+__MWOPC_PART_BEGIN__ /[Content_Types].xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /_rels/.rels
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml
+
+
+ model
+ 2010-12-22T18:30:47Z
+ lawford
+ pesaraamarasekera
+ 2022-05-11T19:33:18Z
+ 24.0
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml
+
+
+ application/vnd.mathworks.simulink.model
+ Simulink Model
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml
+
+
+ 33faaa3e-bf28-490c-80cd-a61f9200ea98
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml
+
+
+
+ 9.11.0.1809720
+ R2021b
+ Update 1
+ Nov 02 2021
+ 3710740051
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml
+
+
+
+ center
+ middle
+
+
+
+
+
+
+
+
+
+
+ 4
+ bar
+ off
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ off
+ on
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ Dialog
+ held
+ []
+ off
+ off
+ 0
+ on
+
+
+ system
+ ''
+ []
+ auto
+
+
+ FromPortIcon
+ ReadWrite
+ All
+ off
+ off
+ Sample time
+ -1
+ Auto
+ Auto
+ Auto
+ void_void
+ off
+ off
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ off
+ UseLocalSettings
+ AllNumericTypes
+ UseLocalSettings
+ off
+ off
+ NONE
+ off
+ expression
+ update diagram
+ off
+ off
+ on
+ off
+ off
+ off
+ 0
+ off
+ off
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64
+AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAABAAAAEQAAAA4AAADA/AIABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA
+AJD8AgABAAAAAAAAAAIAAACQ/AIAAAFJTQAAAAAOAAAA8PsCAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAqPsCAAYAAAAI
+AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAGj7
+AgAGAAAACAAAAAEAAAAAAAAABQAAAAgAAADHAwAAAQAAAAEAAAAAAAAADgAAADiqAAAGAAAACAAA
+AAkAAAAAAAAABQAAAAgAAAAIqgAAAQAAAAEAAAAAAAAAAgAAAAiqAAADAAAA7wAAADANAACgDgAA
+6BEAAGAnAADgogAACKoAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZABIb3Jpem9udGFs
+QWxpZ25tZW50TW9kZQBtYW51YWwATWF4TW9kZQBNYXhfSQBNaW5Nb2RlAFN0cmluZ01vZGUAU3Ry
+aW5nX0kAU3R5bGVNb2RlAFN0eWxlX0kAZWRpdABQb3NpdGlvbk1vZGUAUG9zaXRpb25fSQBCYWNr
+Z3JvdW5kQ29sb3JNb2RlAEJhY2tncm91bmRDb2xvcl9JAENoaWxkcmVuAGhhbmRsZQBtYXRsYWIu
+dWkuY29udHJvbC5DbGllbnRDb21wb25lbnQuU3RvcmFnZVVuaXRQb3MAVW5pdHNNb2RlAFVuaXRz
+X0kAcGl4ZWxzAFJlZkZyYW1lTW9kZQBSZWZGcmFtZV9JAFNjcmVlblJlc29sdXRpb25Nb2RlAFNj
+cmVlblJlc29sdXRpb25fSQBDaGFyYWN0ZXJXaWR0aE1vZGUAQ2hhcmFjdGVyV2lkdGhfSQBDaGFy
+YWN0ZXJIZWlnaHRNb2RlAENoYXJhY3RlckhlaWdodF9JAFVuaXRzQ2FjaGUAUmVmRnJhbWVJbml0
+aWFsaXplZABvbgBDaGFyV2lkdGhJbml0aWFsaXplZABDaGFySGVpZ2h0SW5pdGlhbGl6ZWQARFBJ
+SW5pdGlhbGl6ZWQAUG9zaXRpb25DYWNoZQBVbml0UG9zAG1hdGxhYi51aS5pbnRlcm5hbABWaXNp
+YmxlTW9kZQBJbnRlcm5hbABTZXJpYWxpemFibGVBcHBsaWNhdGlvbkRhdGEAQ29weWFibGUAbWF0
+bGFiLmdyYXBoaWNzLmludGVybmFsLkdyYXBoaWNzQ29yZVByb3BlcnRpZXMuU2VyaWFsaXphYmxl
+VUlDb250ZXh0TWVudQBHcmFwaGljc1BsYWNlaG9sZGVyAG1hdGxhYi5ncmFwaGljcwBtYXRsYWIu
+Z3JhcGhpY3MuaW50ZXJuYWwuR3JhcGhpY3NDb3JlUHJvcGVydGllcy5Ub3BMZXZlbFNlcmlhbGl6
+ZWRPYmplY3QAb2ZmAEJlaW5nRGVsZXRlZABLZXlQcmVzc0Zjbk1vZGUAS2V5UHJlc3NGY25fSVMA
+YW55AGZ1bmN0aW9uX2hhbmRsZV93b3Jrc3BhY2UAR3JpZDIAY2VsbHMAR1VJAEdyaWQxAG1haW5f
+ZmlnAGZyYW1lAGZpZwBzY3JvbGxfdgBlZGl0X3RvZwBzYXZlX3BiAHB2c19wYgBjbG9zZV9wYgBz
+YXZlX2V4dF9wYgBjaGVja19wYgBpbnB1dF9wYgBzZXR0aW5nc19wYgBmdW5jdGlvbl9uYW1lX2Nv
+bnRyb2wAZnVuY3Rpb25fbmFtZV90ZXh0AGZ1bmN0aW9uX2lucHV0c190ZXh0AGZ1bmN0aW9uX2lu
+cHV0c19jb250cm9sAGluaXRpYWxpemVkAGJsb2NrX2hhbmRsZQBzZXR0aW5ncwBoZWFkZXJfaGVp
+Z2h0AGZpZ19oZWlnaHQAZmlnX3dpZHRoAHBiX29mZnNldABwYl93aWR0aABwYl9oZWlnaHQAaHR4
+X2hlaWdodAB0ZXh0X3dpZHRoAG5hbWVfbGFiZWwAaW5wdXRfbGFiZWwARGF0YQBQVlMAQ1ZDAHB2
+c19jaGVja2VkAG1vZGUARU1MR2VuAFRhYmxlQmxrAHNhdmVkAHZhbGlkYXRpb25fcmVwb3J0X2hh
+bmRsZQBtdWx0aV90eXBlAG11bHRpX21vZGUAbXVsdGlfZ3JwAG11bHRpX29wdF9yZWcAbXVsdGlf
+b3B0X291dABwcm92ZXJfb3B0X3B2cwBwcm92ZXJfb3B0X2N2YwB2ZXJzaW9uAHVuZG9fbWFuAHVu
+ZG9fb3B0AHJlZG9fb3B0AGRlZmF1bHRfcHJvdmVyAFBWU19jb25zdABDVkNfY29uc3QARm9udFNp
+emVNb2RlAEZvbnRXZWlnaHRNb2RlAEZvbnRXZWlnaHRfSQBib2xkAG1hdGxhYi51aS5pbnRlcm5h
+bC5taXhpbi5Gb250UmVuZGVyYWJsZS5Gb250U3RvcmFnZQBwb2ludHMAbWF0bGFiLnVpLmludGVy
+bmFsLlVuaXRQb3MuVW5pdHNDYWNoZQBtYXRsYWIudWkuaW50ZXJuYWwuVW5pdFBvcy5SZWZGcmFt
+ZUluaXRpYWxpemVkAG1hdGxhYi51aS5pbnRlcm5hbC5Vbml0UG9zLkRQSUluaXRpYWxpemVkAG1h
+dGxhYi51aS5pbnRlcm5hbC5Vbml0UG9zLlBvc2l0aW9uQ2FjaGUARm9udFN0b3JhZ2UAbWF0bGFi
+LnVpLmludGVybmFsLm1peGluLk5vTWFyZ2luc1VuaXRzT25seVBvc2l0aW9uYWJsZS5PdXRlclBv
+c2l0aW9uU3RvcmFnZQBVSUNvbnRyb2wAbWF0bGFiLnVpLmNvbnRyb2wAY29uZF90ZXh0AGNlbGxf
+aW5kZXgAcGFyZW50X2dyaWQAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2VsbHMAZ3Jp
+ZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgB3aWR0aABoZWlnaHQAZ3Jp
+ZF9wYgBIb3Jpem9udGFsQWxpZ25tZW50X0kAbGVmdABDYWxsYmFja01vZGUAQ2FsbGJhY2tfSVMA
+Q2VsbABzdWJncmlkAHBiX2ZsYWcAY29sb3IAY29uZGl0aW9uX3RleHRfd2lkdGgAY29uZGl0aW9u
+X3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAY29uZGl0aW9uX3RleHRfeQBjb25kaXRpb25f
+dGV4dF9vZmZzZXQAZ3JpZF9wdXNoX3dpZHRoAFNlcmlhbGl6YWJsZVVzZXJEYXRhAFJHcmlkAEVu
+YWJsZU1vZGUAU3RvcmFnZVBvc2l0aW9uAFN0b3JhZ2VPdXRlclBvc2l0aW9uAENsb3NlUmVxdWVz
+dEZjbk1vZGUAQ2xvc2VSZXF1ZXN0RmNuX0lTAFNpemVDaGFuZ2VkRmNuTW9kZQBTaXplQ2hhbmdl
+ZEZjbl9JUwBNZW51QmFyTW9kZQBNZW51QmFyX0kAbm9uZQBOYW1lTW9kZQBOYW1lX0kATnVtYmVy
+VGl0bGVNb2RlAE51bWJlclRpdGxlX0kAUG9pbnRlclNoYXBlQ0RhdGFfSVMAUG9pbnRlclNoYXBl
+SG90U3BvdF9JUwBtYXRsYWIudWkuY29udGFpbmVyLkNvbnRhaW5lci5TZXJpYWxpemFibGVDaGls
+ZHJlbgBMYWJlbE1vZGUATGFiZWxfSQBNZW51AG1hdGxhYi51aS5jb250YWluZXIAU2VwYXJhdG9y
+TW9kZQBTZXBhcmF0b3JfSQBDaGVja2VkTW9kZQBDaGVja2VkX0kAQWNjZWxlcmF0b3JNb2RlAEFj
+Y2VsZXJhdG9yX0kARW5hYmxlX0kAcmlnaHQAdGV4dAB0b2dnbGVidXR0b24AVmFsdWVNb2RlAFZh
+bHVlX0kAV2ViQ29tcG9uZW50AFJlc2l6ZU1vZGUAbWF0bGFiLnVpLmludGVybmFsLm1peGluLlBy
+aW50YWJsZS5QYXBlclBvc2l0aW9uU3RvcmFnZQBpbmNoZXMAUGFwZXJQb3NpdGlvblN0b3JhZ2UA
+bWF0bGFiLnVpLmludGVybmFsLm1peGluLlByaW50YWJsZS5QYXBlclR5cGVTdG9yYWdlAFBhcGVy
+VHlwZVN0b3JhZ2UAU2NyZWVuUGl4ZWxzUGVySW5jaE1vZGUARmlndXJlAG1hdGxhYi51aQBjb3Vu
+dGVyX3RyaWFscwBjb3VudGVyX3JhbmdlAGV4Y2VwdABUVFNldHRpbmdzAHB2c19pbmNsdWRlcwBv
+cGVuAGJ1dHRvbl93aWR0aABidXR0b25faGVpZ2h0AGJ1dHRvbl9vZmZzZXQAdGl0bGVfaGVpZ2h0
+AGxhYmVsX2hlaWdodABsYWJlbF93aWR0aAB0ZXh0X29mZnNldABpbmNsdWRlX3RleHQAY291bnRf
+dGV4dAByYW5nZV90ZXh0AGV4Y2VwdF9jaGVjawBmdW5jdGlvbl9uYW1lAGZ1bmN0aW9uX2lucHV0
+cwBjaGVja2VkAGRhdGEAUFZTX2NoZWNrZXIAZGVmYXVsdF90eXBlAHB2c192ZXJzaW9uAG91dHB1
+dF90eXBlAGlucHV0X3R5cGUAdHlwZV9tb2RlAENWQ19jaGVja2VyAGNvbW1hbmQARU1MR2VuZXJh
+dG9yAGRhdGF0eXBlAG11bHRpX291dHB1dABjdXJyZW50X2RlcHRoAHVuZG9fbGV2ZWwAVW5kb01h
+bmFnZXIAcXVldWUAbWF4X2RlcHRoAENlbGwyAHJlc3VsdAByZXN1bHRfdGV4dABSQ2VsbAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAApAAAAKAAAAAAAAAAAAAAAMAAAAC8AAAAAAAAA
+AAAAAAAAAAA3AAAAAAAAAAAAAAAAAAAAOgAAAAAAAAAAAAAAKQAAAHoAAAAAAAAAAAAAAH0AAAB8
+AAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAACbAAAAAAAAAAAA
+AACwAAAArwAAAAAAAAAAAAAAfQAAAL0AAAAAAAAAAAAAACkAAADBAAAAAAAAAAAAAAApAAAAwwAA
+AAAAAAAAAAAAxgAAAMUAAAAAAAAAAAAAAAAAAADKAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAA
+AAAAANwAAAAAAAAAAAAAAAAAAADiAAAAAAAAAAAAAAAAAAAA5AAAAAAAAAAAAAAAAAAAAOkAAAAA
+AAAAAAAAAAAAAADvAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA2AAAAAQAAAIkDAAABAAAANgAAAAEA
+AAAYAAAAAQAAADYAAAABAAAAKgAAAAEAAAA2AAAAAQAAAEwAAAABAAAANgAAAAEAAABeAAAAAQAA
+ADYAAAABAAAAgAAAAAEAAAA2AAAAAQAAAJIAAAABAAAANgAAAAEAAACuAAAAAQAAADYAAAABAAAA
+xAAAAAEAAAA2AAAAAQAAAOUAAAABAAAANgAAAAEAAAD6AAAAAQAAADYAAAABAAAAEAEAAAEAAAA2
+AAAAAQAAADABAAABAAAANgAAAAEAAAAyAQAAAQAAADYAAAABAAAAQwEAAAEAAAA2AAAAAQAAAFkB
+AAABAAAANgAAAAEAAABvAQAAAQAAADYAAAABAAAAhQEAAAEAAAA2AAAAAQAAAJsBAAABAAAANgAA
+AAEAAACxAQAAAQAAADYAAAABAAAAvAEAAAEAAAA2AAAAAQAAAMIBAAABAAAANgAAAAEAAADMAQAA
+AQAAADYAAAABAAAA0gEAAAEAAAA2AAAAAQAAANgBAAABAAAANgAAAAEAAADeAQAAAQAAADYAAAAB
+AAAA5AEAAAEAAAA2AAAAAQAAAO4BAAABAAAANgAAAAEAAAD0AQAAAQAAADYAAAABAAAA+wEAAAEA
+AAA2AAAAAQAAAAECAAABAAAANgAAAAEAAAALAgAAAQAAADYAAAABAAAAFgIAAAEAAAA2AAAAAQAA
+ABwCAAABAAAANgAAAAEAAAAmAgAAAQAAADYAAAABAAAAMQIAAAEAAAA2AAAAAQAAADgCAAABAAAA
+NgAAAAEAAABDAgAAAQAAADYAAAABAAAASQIAAAEAAAA2AAAAAQAAAFACAAABAAAANgAAAAEAAABW
+AgAAAQAAADYAAAABAAAAXQIAAAEAAAA2AAAAAQAAAHICAAABAAAANgAAAAEAAACaAgAAAQAAADYA
+AAABAAAAuAIAAAEAAAA2AAAAAQAAAMwCAAABAAAANgAAAAEAAADgAgAAAQAAADYAAAABAAAA9QIA
+AAEAAAA2AAAAAQAAAAkDAAABAAAANgAAAAEAAAAdAwAAAQAAADYAAAABAAAAMQMAAAEAAAA2AAAA
+AQAAAEYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAQAAAOQAAAAK
+AAAAAAAAAAAAAAAAAAAAAgAAAOMAAAAWAAAAAAAAAAAAAAAAAAAAAwAAAN0AAAAJAAAAAAAAAAAA
+AAAAAAAABAAAANwAAAAHAAAAAAAAAAAAAAAAAAAABQAAANsAAAACAAAAAAAAAAAAAAAAAAAABgAA
+AAEAAAAEAAAAAAAAAAAAAAABAAAAAAAAANgAAAAFAAAAAAAAAAAAAAAAAAAABwAAANcAAAAIAAAA
+AAAAAAAAAAAAAAAACAAAAC0AAAAJAAAAAAAAAAAAAAAAAAAACQAAAAwAAAAHAAAAAAAAAAAAAAAA
+AAAACgAAAAYAAAACAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAEAAAAAAAAAAAAAAACAAAAAAAAAAMA
+AAAGAAAAAAAAAAAAAAAAAAAADAAAAAQAAAACAAAAAAAAAAAAAAAAAAAADQAAAAUAAAAHAAAAAAAA
+AAAAAAAAAAAADgAAAAsAAAAEAAAAAAAAAAAAAAADAAAAAAAAAAcAAAACAAAAAAAAAAAAAAAAAAAA
+DwAAAAgAAAAGAAAAAAAAAAAAAAAAAAAAEAAAAAkAAAACAAAAAAAAAAAAAAAAAAAAEQAAAAoAAAAJ
+AAAAAAAAAAAAAAAAAAAAEgAAABcAAAAHAAAAAAAAAAAAAAAAAAAAEwAAABEAAAACAAAAAAAAAAAA
+AAAAAAAAFAAAAA0AAAAEAAAAAAAAAAAAAAAEAAAAAAAAAA4AAAAGAAAAAAAAAAAAAAAAAAAAFQAA
+AA8AAAACAAAAAAAAAAAAAAAAAAAAFgAAABAAAAAHAAAAAAAAAAAAAAAAAAAAFwAAABYAAAAEAAAA
+AAAAAAAAAAAFAAAAAAAAABIAAAACAAAAAAAAAAAAAAAAAAAAGAAAABMAAAAGAAAAAAAAAAAAAAAA
+AAAAGQAAABQAAAACAAAAAAAAAAAAAAAAAAAAGgAAABUAAAAJAAAAAAAAAAAAAAAAAAAAGwAAACIA
+AAAHAAAAAAAAAAAAAAAAAAAAHAAAABwAAAACAAAAAAAAAAAAAAAAAAAAHQAAABgAAAAEAAAAAAAA
+AAAAAAAGAAAAAAAAABkAAAAGAAAAAAAAAAAAAAAAAAAAHgAAABoAAAACAAAAAAAAAAAAAAAAAAAA
+HwAAABsAAAAHAAAAAAAAAAAAAAAAAAAAIAAAACEAAAAEAAAAAAAAAAAAAAAHAAAAAAAAAB0AAAAC
+AAAAAAAAAAAAAAAAAAAAIQAAAB4AAAAGAAAAAAAAAAAAAAAAAAAAIgAAAB8AAAACAAAAAAAAAAAA
+AAAAAAAAIwAAACAAAAAHAAAAAAAAAAAAAAAAAAAAJAAAACcAAAAEAAAAAAAAAAAAAAAIAAAAAAAA
+ACMAAAACAAAAAAAAAAAAAAAAAAAAJQAAACQAAAAGAAAAAAAAAAAAAAAAAAAAJgAAACUAAAACAAAA
+AAAAAAAAAAAAAAAAJwAAACYAAAAHAAAAAAAAAAAAAAAAAAAAKAAAACwAAAAEAAAAAAAAAAAAAAAJ
+AAAAAAAAACgAAAACAAAAAAAAAAAAAAAAAAAAKQAAACkAAAAGAAAAAAAAAAAAAAAAAAAAKgAAACoA
+AAACAAAAAAAAAAAAAAAAAAAAKwAAACsAAAAIAAAAAAAAAAAAAAAAAAAALAAAAD4AAAAJAAAAAAAA
+AAAAAAAAAAAALQAAADMAAAAHAAAAAAAAAAAAAAAAAAAALgAAADIAAAACAAAAAAAAAAAAAAAAAAAA
+LwAAAC4AAAAEAAAAAAAAAAAAAAAKAAAAAAAAAC8AAAAGAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAC
+AAAAAAAAAAAAAAAAAAAAMQAAADEAAAAHAAAAAAAAAAAAAAAAAAAAMgAAADgAAAAEAAAAAAAAAAAA
+AAALAAAAAAAAADQAAAACAAAAAAAAAAAAAAAAAAAAMwAAADUAAAAGAAAAAAAAAAAAAAAAAAAANAAA
+ADYAAAACAAAAAAAAAAAAAAAAAAAANQAAADcAAAAHAAAAAAAAAAAAAAAAAAAANgAAAD0AAAAEAAAA
+AAAAAAAAAAAMAAAAAAAAADkAAAACAAAAAAAAAAAAAAAAAAAANwAAADoAAAAGAAAAAAAAAAAAAAAA
+AAAAOAAAADsAAAACAAAAAAAAAAAAAAAAAAAAOQAAADwAAAAPAAAAAAAAAAAAAAAAAAAAOgAAANEA
+AAACAAAAAAAAAAAAAAAAAAAAOwAAAD8AAAACAAAAAAAAAAAAAAAAAAAAPAAAAEAAAAAEAAAAAAAA
+AAAAAAANAAAAAAAAAEEAAAAEAAAAAAAAAAAAAAAOAAAAAAAAAEIAAAAHAAAAAAAAAAAAAAAAAAAA
+PQAAAEcAAAACAAAAAAAAAAAAAAAAAAAAPgAAAEMAAAAEAAAAAAAAAAAAAAAPAAAAAAAAAEQAAAAG
+AAAAAAAAAAAAAAAAAAAAPwAAAEUAAAACAAAAAAAAAAAAAAAAAAAAQAAAAEYAAAAHAAAAAAAAAAAA
+AAAAAAAAQQAAAEwAAAACAAAAAAAAAAAAAAAAAAAAQgAAAEgAAAAEAAAAAAAAAAAAAAAQAAAAAAAA
+AEkAAAAGAAAAAAAAAAAAAAAAAAAAQwAAAEoAAAACAAAAAAAAAAAAAAAAAAAARAAAAEsAAAAHAAAA
+AAAAAAAAAAAAAAAARQAAAFEAAAACAAAAAAAAAAAAAAAAAAAARgAAAE0AAAAEAAAAAAAAAAAAAAAR
+AAAAAAAAAE4AAAAGAAAAAAAAAAAAAAAAAAAARwAAAE8AAAACAAAAAAAAAAAAAAAAAAAASAAAAFAA
+AAAHAAAAAAAAAAAAAAAAAAAASQAAAFYAAAACAAAAAAAAAAAAAAAAAAAASgAAAFIAAAAEAAAAAAAA
+AAAAAAASAAAAAAAAAFMAAAAGAAAAAAAAAAAAAAAAAAAASwAAAFQAAAACAAAAAAAAAAAAAAAAAAAA
+TAAAAFUAAAAHAAAAAAAAAAAAAAAAAAAATQAAAFsAAAACAAAAAAAAAAAAAAAAAAAATgAAAFcAAAAE
+AAAAAAAAAAAAAAATAAAAAAAAAFgAAAAGAAAAAAAAAAAAAAAAAAAATwAAAFkAAAACAAAAAAAAAAAA
+AAAAAAAAUAAAAFoAAAAHAAAAAAAAAAAAAAAAAAAAUQAAAGAAAAACAAAAAAAAAAAAAAAAAAAAUgAA
+AFwAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAF0AAAAGAAAAAAAAAAAAAAAAAAAAUwAAAF4AAAACAAAA
+AAAAAAAAAAAAAAAAVAAAAF8AAAALAAAAAAAAAAAAAAAAAAAAVQAAAGUAAAALAAAAAAAAAAAAAAAA
+AAAAVgAAAGIAAAAEAAAAAAAAAAAAAAAVAAAAAAAAAGEAAAALAAAAAAAAAAAAAAAAAAAAVwAAAGQA
+AAAEAAAAAAAAAAAAAAAWAAAAAAAAAGMAAAALAAAAAAAAAAAAAAAAAAAAWAAAAHwAAAALAAAAAAAA
+AAAAAAAAAAAAWQAAAGcAAAAEAAAAAAAAAAAAAAAXAAAAAAAAAGYAAAALAAAAAAAAAAAAAAAAAAAA
+WgAAAGkAAAAEAAAAAAAAAAAAAAAYAAAAAAAAAGgAAAALAAAAAAAAAAAAAAAAAAAAWwAAAGsAAAAE
+AAAAAAAAAAAAAAAZAAAAAAAAAGoAAAALAAAAAAAAAAAAAAAAAAAAXAAAAG0AAAAEAAAAAAAAAAAA
+AAAaAAAAAAAAAGwAAAALAAAAAAAAAAAAAAAAAAAAXQAAAG8AAAAEAAAAAAAAAAAAAAAbAAAAAAAA
+AG4AAAALAAAAAAAAAAAAAAAAAAAAXgAAAHAAAAALAAAAAAAAAAAAAAAAAAAAXwAAAHIAAAAEAAAA
+AAAAAAAAAAAcAAAAAAAAAHEAAAALAAAAAAAAAAAAAAAAAAAAYAAAAHQAAAAEAAAAAAAAAAAAAAAd
+AAAAAAAAAHMAAAALAAAAAAAAAAAAAAAAAAAAYQAAAHkAAAALAAAAAAAAAAAAAAAAAAAAYgAAAHYA
+AAAEAAAAAAAAAAAAAAAeAAAAAAAAAHUAAAALAAAAAAAAAAAAAAAAAAAAYwAAAHgAAAAEAAAAAAAA
+AAAAAAAfAAAAAAAAAHcAAAALAAAAAAAAAAAAAAAAAAAAZAAAAHsAAAAEAAAAAAAAAAAAAAAgAAAA
+AAAAAHoAAAALAAAAAAAAAAAAAAAAAAAAZQAAAIkAAAALAAAAAAAAAAAAAAAAAAAAZgAAAIEAAAAL
+AAAAAAAAAAAAAAAAAAAAZwAAAH4AAAAEAAAAAAAAAAAAAAAhAAAAAAAAAH0AAAALAAAAAAAAAAAA
+AAAAAAAAaAAAAIAAAAAEAAAAAAAAAAAAAAAiAAAAAAAAAH8AAAALAAAAAAAAAAAAAAAAAAAAaQAA
+AIMAAAAEAAAAAAAAAAAAAAAjAAAAAAAAAIIAAAALAAAAAAAAAAAAAAAAAAAAagAAAIQAAAALAAAA
+AAAAAAAAAAAAAAAAawAAAIYAAAAEAAAAAAAAAAAAAAAkAAAAAAAAAIUAAAALAAAAAAAAAAAAAAAA
+AAAAbAAAAIgAAAAEAAAAAAAAAAAAAAAlAAAAAAAAAIcAAAALAAAAAAAAAAAAAAAAAAAAbQAAAJQA
+AAALAAAAAAAAAAAAAAAAAAAAbgAAAIsAAAAEAAAAAAAAAAAAAAAmAAAAAAAAAIoAAAALAAAAAAAA
+AAAAAAAAAAAAbwAAAI0AAAAEAAAAAAAAAAAAAAAnAAAAAAAAAIwAAAALAAAAAAAAAAAAAAAAAAAA
+cAAAAI8AAAAEAAAAAAAAAAAAAAAoAAAAAAAAAI4AAAALAAAAAAAAAAAAAAAAAAAAcQAAAJEAAAAE
+AAAAAAAAAAAAAAApAAAAAAAAAJAAAAALAAAAAAAAAAAAAAAAAAAAcgAAAJMAAAAEAAAAAAAAAAAA
+AAAqAAAAAAAAAJIAAAAHAAAAAAAAAAAAAAAAAAAAcwAAAJkAAAACAAAAAAAAAAAAAAAAAAAAdAAA
+AJUAAAAEAAAAAAAAAAAAAAArAAAAAAAAAJYAAAAGAAAAAAAAAAAAAAAAAAAAdQAAAJcAAAACAAAA
+AAAAAAAAAAAAAAAAdgAAAJgAAAAHAAAAAAAAAAAAAAAAAAAAdwAAAJ0AAAACAAAAAAAAAAAAAAAA
+AAAAeAAAAJoAAAAGAAAAAAAAAAAAAAAAAAAAeQAAAJsAAAACAAAAAAAAAAAAAAAAAAAAegAAAJwA
+AAAHAAAAAAAAAAAAAAAAAAAAewAAAKIAAAACAAAAAAAAAAAAAAAAAAAAfAAAAJ4AAAAEAAAAAAAA
+AAAAAAAsAAAAAAAAAJ8AAAAGAAAAAAAAAAAAAAAAAAAAfQAAAKAAAAACAAAAAAAAAAAAAAAAAAAA
+fgAAAKEAAAAHAAAAAAAAAAAAAAAAAAAAfwAAAKYAAAACAAAAAAAAAAAAAAAAAAAAgAAAAKMAAAAG
+AAAAAAAAAAAAAAAAAAAAgQAAAKQAAAACAAAAAAAAAAAAAAAAAAAAggAAAKUAAAAHAAAAAAAAAAAA
+AAAAAAAAgwAAAKsAAAAEAAAAAAAAAAAAAAAtAAAAAAAAAKcAAAACAAAAAAAAAAAAAAAAAAAAhAAA
+AKgAAAAGAAAAAAAAAAAAAAAAAAAAhQAAAKkAAAACAAAAAAAAAAAAAAAAAAAAhgAAAKoAAAAHAAAA
+AAAAAAAAAAAAAAAAhwAAALAAAAAEAAAAAAAAAAAAAAAuAAAAAAAAAKwAAAACAAAAAAAAAAAAAAAA
+AAAAiAAAAK0AAAAGAAAAAAAAAAAAAAAAAAAAiQAAAK4AAAACAAAAAAAAAAAAAAAAAAAAigAAAK8A
+AAAHAAAAAAAAAAAAAAAAAAAAiwAAALUAAAAEAAAAAAAAAAAAAAAvAAAAAAAAALEAAAACAAAAAAAA
+AAAAAAAAAAAAjAAAALIAAAAGAAAAAAAAAAAAAAAAAAAAjQAAALMAAAACAAAAAAAAAAAAAAAAAAAA
+jgAAALQAAAAHAAAAAAAAAAAAAAAAAAAAjwAAALoAAAAEAAAAAAAAAAAAAAAwAAAAAAAAALYAAAAC
+AAAAAAAAAAAAAAAAAAAAkAAAALcAAAAGAAAAAAAAAAAAAAAAAAAAkQAAALgAAAACAAAAAAAAAAAA
+AAAAAAAAkgAAALkAAAAHAAAAAAAAAAAAAAAAAAAAkwAAAL8AAAAEAAAAAAAAAAAAAAAxAAAAAAAA
+ALsAAAACAAAAAAAAAAAAAAAAAAAAlAAAALwAAAAGAAAAAAAAAAAAAAAAAAAAlQAAAL0AAAACAAAA
+AAAAAAAAAAAAAAAAlgAAAL4AAAAHAAAAAAAAAAAAAAAAAAAAlwAAAMQAAAAEAAAAAAAAAAAAAAAy
+AAAAAAAAAMAAAAACAAAAAAAAAAAAAAAAAAAAmAAAAMEAAAAGAAAAAAAAAAAAAAAAAAAAmQAAAMIA
+AAACAAAAAAAAAAAAAAAAAAAAmgAAAMMAAAAHAAAAAAAAAAAAAAAAAAAAmwAAAMkAAAAEAAAAAAAA
+AAAAAAAzAAAAAAAAAMUAAAACAAAAAAAAAAAAAAAAAAAAnAAAAMYAAAAGAAAAAAAAAAAAAAAAAAAA
+nQAAAMcAAAACAAAAAAAAAAAAAAAAAAAAngAAAMgAAAAHAAAAAAAAAAAAAAAAAAAAnwAAAM4AAAAE
+AAAAAAAAAAAAAAA0AAAAAAAAAMoAAAACAAAAAAAAAAAAAAAAAAAAoAAAAMsAAAAGAAAAAAAAAAAA
+AAAAAAAAoQAAAMwAAAACAAAAAAAAAAAAAAAAAAAAogAAAM0AAAANAAAAAAAAAAAAAAAAAAAAowAA
+AM8AAAAOAAAAAAAAAAAAAAAAAAAApAAAANAAAAAQAAAAAAAAAAAAAAAAAAAApQAAANIAAAASAAAA
+AAAAAAAAAAAAAAAApgAAANMAAAATAAAAAAAAAAAAAAAAAAAApwAAANQAAAAUAAAAAAAAAAAAAAAA
+AAAAqAAAANUAAAAVAAAAAAAAAAAAAAAAAAAAqQAAANYAAAAGAAAAAAAAAAAAAAAAAAAAqgAAANkA
+AAACAAAAAAAAAAAAAAAAAAAAqwAAANoAAAAWAAAAAAAAAAAAAAAAAAAArAAAAN4AAAAWAAAAAAAA
+AAAAAAAAAAAArQAAAN8AAAAWAAAAAAAAAAAAAAAAAAAArgAAAOAAAAAWAAAAAAAAAAAAAAAAAAAA
+rwAAAOEAAAAWAAAAAAAAAAAAAAAAAAAAsAAAAOIAAAAAAAAAAAAAAAoAAAABAAAAAQAAALkDAAA7
+AAAAAQAAALoDAAA4AAAAAQAAALsDAADYAAAAAQAAALwDAADZAAAAAQAAAL0DAABOAAAAAQAAAL4D
+AADaAAAAAQAAAL8DAADMAAAAAQAAAMADAAA+AAAAAQAAAMEDAABjAAAAAQAAAMIDAAAAAAAAAwAA
+AAIAAAABAAAAtgMAADsAAAABAAAAtwMAADgAAAABAAAAuAMAAAUAAAADAAAAAQAAAJgDAADsAAAA
+AQAAAJkDAADtAAAAAQAAAJoDAADuAAAAAQAAAJsDAACTAAAAAQAAAJwDAAAFAAAABAAAAAEAAACT
+AwAAfgAAAAEAAACUAwAAfwAAAAEAAACVAwAAgAAAAAEAAACWAwAAkgAAAAEAAACXAwAAHQAAAAUA
+AAAAAAAABgAAAAcAAAAAAAAABgAAAAgAAAABAAAAAAAAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAA
+AAsAAAABAAAAAQAAAAwAAAAAAAAABgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAA
+AgAAABEAAAAAAAAABgAAABIAAAABAAAAAwAAABMAAAABAAAABAAAABUAAAABAAAACQAAACoAAAAA
+AAAABgAAACsAAAACAAAAAAAAACwAAAABAAAACgAAAC0AAAACAAAAAQAAAC4AAAABAAAACwAAADEA
+AAAAAAAAMgAAADMAAAAAAAAAMgAAADQAAAAAAAAABgAAADUAAAABAAAAigMAAHAAAAAAAAAABgAA
+AHEAAAAAAAAABgAAAHIAAAAAAAAAcwAAAHQAAAABAAAAjQMAAHsAAAABAAAAkgMAABYAAAAAAAAA
+BgAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAAUAAAAb
+AAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAAYAAAAfAAAAAAAAAAYA
+AAAgAAAAAQAAAAcAAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAA
+ACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAAgAAAAAAAAAJQAAADgAAAABAAAA2AAAADsAAAABAAAA
+JAEAAAEAAAABAAAAJQEAAD4AAAABAAAAXwMAAEAAAAABAAAAYAMAAEEAAAABAAAAYQMAAEIAAAAB
+AAAAYgMAAEMAAAABAAAAYwMAAEQAAAABAAAAZAMAAEUAAAABAAAAZQMAAEYAAAABAAAAZgMAAEcA
+AAABAAAAZwMAAEgAAAABAAAAaAMAAEkAAAABAAAAaQMAAEoAAAABAAAAagMAAEsAAAABAAAAawMA
+AEwAAAABAAAAbAMAAE0AAAABAAAAbQMAAE4AAAABAAAAcQMAAFcAAAABAAAAcgMAAFgAAAABAAAA
+cwMAAFkAAAABAAAAdAMAAFoAAAABAAAAdgMAAFsAAAABAAAAeAMAAFwAAAABAAAAeQMAAF0AAAAB
+AAAAegMAAF4AAAABAAAAfAMAAGAAAAABAAAAfQMAAGMAAAABAAAAfgMAAGUAAAABAAAAfwMAAGYA
+AAABAAAAgAMAAGcAAAABAAAAgQMAAGgAAAABAAAAggMAAGoAAAABAAAAhQMAAGsAAAABAAAAhgMA
+AGwAAAABAAAAhwMAAG0AAAABAAAAiAMAAAYAAAA5AAAAAQAAAKgAAACEAAAAAQAAAKkAAACFAAAA
+AQAAAKoAAACGAAAAAQAAAKsAAACHAAAAAQAAAMEAAACIAAAAAQAAANcAAAAAAAAACQAAAAQAAAAB
+AAAAIgAAAH4AAAABAAAAIwAAAH8AAAABAAAAJAAAAIAAAAABAAAAJQAAAIkAAAABAAAAJgAAAIoA
+AAABAAAAJwAAAIsAAAABAAAAPQAAAJIAAAABAAAAPgAAAJMAAAABAAAAPwAAAB0AAAAFAAAAAAAA
+AAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAAwAAAAJAAAAAAAAAAYAAAAKAAAAAAAAAAYAAAALAAAA
+AQAAAA0AAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAAAQAAAA4AAAAR
+AAAAAAAAAAYAAAASAAAAAQAAAA8AAAATAAAAAQAAABAAAAAVAAAAAQAAABUAAAAqAAAAAAAAAAYA
+AAArAAAAAgAAAAAAAAAsAAAAAQAAABYAAAAtAAAAAgAAAAEAAAAuAAAAAQAAABcAAAAxAAAAAAAA
+ADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAABkAAABwAAAAAAAAAAYAAABxAAAA
+AAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAABwAAAB7AAAAAQAAACEAAAAWAAAAAAAAAAYAAAAQ
+AAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAARAAAAGwAAAAAA
+AAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAASAAAAHwAAAAAAAAAGAAAAIAAA
+AAEAAAATAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAA
+JgAAAAAAAAAjAAAAJwAAAAEAAAAUAAAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZ
+AAAAAAAAAAYAAAAaAAAAAQAAABoAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUA
+AAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAABsAAAAAAAAAEAAAABYAAAAAAAAABgAA
+ABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAHQAAABsAAAAAAAAABgAAABwAAAACAAAA
+kAAAAB0AAAAAAAAABgAAAB4AAAABAAAAHgAAAB8AAAAAAAAABgAAACAAAAABAAAAHwAAACEAAAAA
+AAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcA
+AAABAAAAIAAAAAAAAAAVAAAABQAAAAAAAAAGAAAAjAAAAAAAAACNAAAACgAAAAAAAAAGAAAACwAA
+AAEAAAAoAAAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEAAAApAAAAjgAAAAAAAAAGAAAA
+jwAAAAEAAAArAAAAEwAAAAEAAAAsAAAAFQAAAAEAAAAxAAAAKwAAAAIAAAAAAAAALAAAAAEAAAAy
+AAAALQAAAAIAAAABAAAALgAAAAEAAAAzAAAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAAmgAAAAEA
+AAA0AAAAdAAAAAEAAAA3AAAAewAAAAEAAAA8AAAAFgAAAAAAAAAGAAAAEAAAABYAAAAAAAAABgAA
+ABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAALQAAABsAAAAAAAAABgAAABwAAAACAAAA
+kAAAAB0AAAAAAAAABgAAAB4AAAABAAAALgAAAB8AAAAAAAAABgAAACAAAAABAAAALwAAACEAAAAA
+AAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcA
+AAABAAAAMAAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAA
+AAEAAAA1AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAA
+eAAAAAAAAAAjAAAAeQAAAAEAAAA2AAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZ
+AAAAAAAAAAYAAAAaAAAAAQAAADgAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYA
+AAAeAAAAAQAAADkAAAAfAAAAAAAAAAYAAAAgAAAAAQAAADoAAAAhAAAAAAAAABgAAAAiAAAAAAAA
+ACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAADsAAAAAAAAA
+CQAAAAQAAAABAAAAVgAAAH4AAAABAAAAVwAAAH8AAAABAAAAWAAAAIAAAAABAAAAWQAAAIkAAAAB
+AAAAWgAAAIoAAAABAAAAWwAAAIsAAAABAAAAcQAAAJIAAAABAAAAcgAAAJMAAAABAAAAcwAAAB0A
+AAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAEAAAAAJAAAAAAAAAAYAAAAKAAAAAAAA
+AAYAAAALAAAAAQAAAEEAAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAA
+AQAAAEIAAAARAAAAAAAAAAYAAAASAAAAAQAAAEMAAAATAAAAAQAAAEQAAAAVAAAAAQAAAEkAAAAq
+AAAAAAAAAAYAAAArAAAAAgAAAAAAAAAsAAAAAQAAAEoAAAAtAAAAAgAAAAEAAAAuAAAAAQAAAEsA
+AAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAAE0AAABwAAAAAAAA
+AAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAFAAAAB7AAAAAQAAAFUAAAAWAAAA
+AAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABF
+AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAABGAAAAHwAAAAAA
+AAAGAAAAIAAAAAEAAABHAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAA
+AAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAABIAAAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAE4AAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2
+AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAAE8AAAAAAAAAEAAAABYA
+AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAUQAAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAUgAAAB8AAAAAAAAABgAAACAAAAABAAAA
+UwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA
+AAAAIwAAACcAAAABAAAAVAAAAAAAAAAVAAAABQAAAAAAAAAGAAAAjAAAAAAAAACNAAAACgAAAAAA
+AAAGAAAACwAAAAEAAABcAAAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEAAABdAAAAjgAA
+AAAAAAAGAAAAjwAAAAEAAABfAAAAEwAAAAEAAABgAAAAFQAAAAEAAABlAAAAKwAAAAIAAAAAAAAA
+LAAAAAEAAABmAAAALQAAAAIAAAABAAAALgAAAAEAAABnAAAAMQAAAAAAAAAyAAAAMwAAAAAAAAAy
+AAAAmgAAAAEAAABoAAAAdAAAAAEAAABrAAAAewAAAAEAAABwAAAAFgAAAAAAAAAGAAAAEAAAABYA
+AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAYQAAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAYgAAAB8AAAAAAAAABgAAACAAAAABAAAA
+YwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA
+AAAAIwAAACcAAAABAAAAZAAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAA
+AAAGAAAAGgAAAAEAAABpAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAA
+AAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAABqAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAGwAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAd
+AAAAAAAAAAYAAAAeAAAAAQAAAG0AAAAfAAAAAAAAAAYAAAAgAAAAAQAAAG4AAAAhAAAAAAAAABgA
+AAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAA
+AG8AAAAAAAAACQAAAAQAAAABAAAAigAAAH4AAAABAAAAiwAAAH8AAAABAAAAjAAAAIAAAAABAAAA
+jQAAAIkAAAABAAAAjgAAAIoAAAABAAAAjwAAAIsAAAABAAAApQAAAJIAAAABAAAApgAAAJMAAAAB
+AAAApwAAAB0AAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAHQAAAAJAAAAAAAAAAYA
+AAAKAAAAAAAAAAYAAAALAAAAAQAAAHUAAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAA
+AAYAAAAQAAAAAQAAAHYAAAARAAAAAAAAAAYAAAASAAAAAQAAAHcAAAATAAAAAQAAAHgAAAAVAAAA
+AQAAAH0AAAAqAAAAAAAAAAYAAAArAAAAAgAAAAAAAAAsAAAAAQAAAH4AAAAtAAAAAgAAAAEAAAAu
+AAAAAQAAAH8AAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAAIEA
+AABwAAAAAAAAAAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAIQAAAB7AAAAAQAA
+AIkAAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAA
+GgAAAAEAAAB5AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAB6
+AAAAHwAAAAAAAAAGAAAAIAAAAAEAAAB7AAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAA
+AAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAB8AAAAAAAAAAoAAAAWAAAAAAAA
+AAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIIAAAAbAAAAAAAAAAYAAAAcAAAA
+AgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAAIMAAAAA
+AAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAhQAAABsA
+AAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAhgAAAB8AAAAAAAAABgAA
+ACAAAAABAAAAhwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAA
+IwAAACYAAAAAAAAAIwAAACcAAAABAAAAiAAAAAAAAAAVAAAABQAAAAAAAAAGAAAAjAAAAAAAAACN
+AAAACgAAAAAAAAAGAAAACwAAAAEAAACQAAAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEA
+AACRAAAAjgAAAAAAAAAGAAAAjwAAAAEAAACTAAAAEwAAAAEAAACUAAAAFQAAAAEAAACZAAAAKwAA
+AAIAAAAAAAAALAAAAAEAAACaAAAALQAAAAIAAAABAAAALgAAAAEAAACbAAAAMQAAAAAAAAAyAAAA
+MwAAAAAAAAAyAAAAmgAAAAEAAACcAAAAdAAAAAEAAACfAAAAewAAAAEAAACkAAAAFgAAAAAAAAAG
+AAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAlQAAABsA
+AAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAlgAAAB8AAAAAAAAABgAA
+ACAAAAABAAAAlwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAA
+IwAAACYAAAAAAAAAIwAAACcAAAABAAAAmAAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1
+AAAAGQAAAAAAAAAGAAAAGgAAAAEAAACdAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAA
+AAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAACeAAAAAAAAABAAAAAWAAAAAAAA
+AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAKAAAAAbAAAAAAAAAAYAAAAcAAAA
+AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAKEAAAAfAAAAAAAAAAYAAAAgAAAAAQAAAKIAAAAh
+AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA
+AAAnAAAAAQAAAKMAAAAAAAAAFQAAAAUAAAAAAAAABgAAAIwAAAAAAAAAjQAAAAoAAAAAAAAABgAA
+AAsAAAABAAAArAAAAAwAAAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAArQAAAI4AAAAAAAAA
+BgAAAI8AAAABAAAArwAAABMAAAABAAAAsAAAABUAAAABAAAAtQAAACsAAAACAAAAAAAAACwAAAAB
+AAAAtgAAAC0AAAACAAAAAQAAAC4AAAABAAAAtwAAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAJoA
+AAABAAAAuAAAAHQAAAABAAAAuwAAAHsAAAABAAAAwAAAABYAAAAAAAAABgAAABAAAAAWAAAAAAAA
+AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAALEAAAAbAAAAAAAAAAYAAAAcAAAA
+AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAALIAAAAfAAAAAAAAAAYAAAAgAAAAAQAAALMAAAAh
+AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA
+AAAnAAAAAQAAALQAAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAA
+ABoAAAABAAAAuQAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAA
+IwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAugAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY
+AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAC8AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA
+AAAGAAAAHgAAAAEAAAC9AAAAHwAAAAAAAAAGAAAAIAAAAAEAAAC+AAAAIQAAAAAAAAAYAAAAIgAA
+AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAC/AAAA
+AAAAABYAAAAFAAAAAAAAAAYAAACMAAAAAAAAAI0AAAAKAAAAAAAAAAYAAAALAAAAAQAAAMIAAAAM
+AAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQAAAAAQAAAMMAAACOAAAAAAAAAAYAAACPAAAAAQAAAMUA
+AAATAAAAAQAAAMYAAAAVAAAAAQAAAMsAAACcAAAAAAAAAAYAAAArAAAAAgAAAAAAAAAsAAAAAQAA
+AMwAAAAtAAAAAgAAAAEAAAAuAAAAAQAAAM0AAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAACaAAAA
+AQAAAM4AAAB0AAAAAQAAANEAAAB7AAAAAQAAANYAAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYAAAAA
+AAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAxwAAABsAAAAAAAAABgAAABwA
+AAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAyAAAAB8AAAAAAAAABgAAACAAAAABAAAAyQAA
+ACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAA
+IwAAACcAAAABAAAAygAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAG
+AAAAGgAAAAEAAADPAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAA
+AAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAADQAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAA
+ABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAANIAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAA
+AAAAAAYAAAAeAAAAAQAAANMAAAAfAAAAAAAAAAYAAAAgAAAAAQAAANQAAAAhAAAAAAAAABgAAAAi
+AAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAANUA
+AAAAAAAABgAAADkAAAABAAAA9AAAAIQAAAABAAAA9QAAAIUAAAABAAAA9gAAAIYAAAABAAAA9wAA
+AIcAAAABAAAADQEAAIgAAAABAAAAIwEAAAAAAAAFAAAABAAAAAEAAADvAAAAfgAAAAEAAADwAAAA
+fwAAAAEAAADxAAAAgAAAAAEAAADyAAAAkgAAAAEAAADzAAAAHQAAAAUAAAAAAAAABgAAAAcAAAAA
+AAAABgAAAAgAAAABAAAA2QAAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAA2gAAAAwA
+AAAAAAAABgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAA2wAAABEAAAAAAAAABgAA
+ABIAAAABAAAA3AAAABMAAAABAAAA3QAAABUAAAABAAAA4gAAACoAAAAAAAAABgAAACsAAAACAAAA
+AAAAACwAAAABAAAA4wAAAC0AAAACAAAAAQAAAC4AAAABAAAA5AAAADEAAAAAAAAAMgAAADMAAAAA
+AAAAMgAAADQAAAAAAAAABgAAADUAAAABAAAA5gAAAHAAAAAAAAAABgAAAHEAAAAAAAAABgAAAHIA
+AAAAAAAAcwAAAHQAAAABAAAA6QAAAHsAAAABAAAA7gAAABYAAAAAAAAABgAAABAAAAAWAAAAAAAA
+AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAN4AAAAbAAAAAAAAAAYAAAAcAAAA
+AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAN8AAAAfAAAAAAAAAAYAAAAgAAAAAQAAAOAAAAAh
+AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA
+AAAnAAAAAQAAAOEAAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAA
+ABoAAAABAAAA5wAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAA
+IwAAAHgAAAAAAAAAIwAAAHkAAAABAAAA6AAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY
+AAAAGQAAAAAAAAAGAAAAGgAAAAEAAADqAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA
+AAAGAAAAHgAAAAEAAADrAAAAHwAAAAAAAAAGAAAAIAAAAAEAAADsAAAAIQAAAAAAAAAYAAAAIgAA
+AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAADtAAAA
+AAAAABUAAAAFAAAAAAAAAAYAAACMAAAAAAAAAI0AAAAKAAAAAAAAAAYAAAALAAAAAQAAAPgAAAAM
+AAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQAAAAAQAAAPkAAACOAAAAAAAAAAYAAACPAAAAAQAAAPsA
+AAATAAAAAQAAAPwAAAAVAAAAAQAAAAEBAAArAAAAAgAAAAAAAAAsAAAAAQAAAAIBAAAtAAAAAgAA
+AAEAAAAuAAAAAQAAAAMBAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAACaAAAAAQAAAAQBAAB0AAAA
+AQAAAAcBAAB7AAAAAQAAAAwBAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY
+AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAD9AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA
+AAAGAAAAHgAAAAEAAAD+AAAAHwAAAAAAAAAGAAAAIAAAAAEAAAD/AAAAIQAAAAAAAAAYAAAAIgAA
+AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAAAQAA
+AAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAAUBAAAb
+AAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMA
+AAB5AAAAAQAAAAYBAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAA
+ABoAAAABAAAACAEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAA
+CQEAAB8AAAAAAAAABgAAACAAAAABAAAACgEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAA
+AAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAACwEAAAAAAAAWAAAABQAAAAAA
+AAAGAAAAjAAAAAAAAACNAAAACgAAAAAAAAAGAAAACwAAAAEAAAAOAQAADAAAAAAAAAAGAAAADwAA
+AAAAAAAGAAAAEAAAAAEAAAAPAQAAjgAAAAAAAAAGAAAAjwAAAAEAAAARAQAAEwAAAAEAAAASAQAA
+FQAAAAEAAAAXAQAAnAAAAAAAAAAGAAAAKwAAAAIAAAAAAAAALAAAAAEAAAAYAQAALQAAAAIAAAAB
+AAAALgAAAAEAAAAZAQAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAAmgAAAAEAAAAaAQAAdAAAAAEA
+AAAdAQAAewAAAAEAAAAiAQAAFgAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAA
+ABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAABMBAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAA
+AAAAAAYAAAAeAAAAAQAAABQBAAAfAAAAAAAAAAYAAAAgAAAAAQAAABUBAAAhAAAAAAAAABgAAAAi
+AAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAABYB
+AAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAAABoAAAABAAAAGwEA
+ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAA
+IwAAAHkAAAABAAAAHAEAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAG
+AAAAGgAAAAEAAAAeAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEA
+AAAfAQAAHwAAAAAAAAAGAAAAIAAAAAEAAAAgAQAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAA
+AAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAhAQAAAAAAABsAAAAPAAAA
+AAAAAAYAAAAWAAAAAAAAAAYAAACdAAAAAQAAACoBAACeAAAAAQAAAC8BAACfAAAAAAAAAAYAAACg
+AAAAAQAAADEBAAChAAAAAAAAAAYAAACiAAAAAQAAADMBAACjAAAAAAAAAAYAAACkAAAAAAAAAKUA
+AACmAAAAAAAAAAYAAACnAAAAAQAAADQBAACoAAAAAAAAAAYAAACpAAAAAAAAADIAAACqAAAAAQAA
+ADUBAACrAAAAAQAAADYBAACsAAAAAQAAAFgDAAArAAAAAgAAAAAAAAAsAAAAAQAAAFkDAAAtAAAA
+AgAAAAEAAAAuAAAAAQAAAFoDAAAxAAAAAAAAACMAAAAzAAAAAAAAADIAAAC+AAAAAAAAAAYAAAC/
+AAAAAQAAAFwDAADCAAAAAQAAAF4DAADEAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAA
+AAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAAmAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAA
+AAAAAAAGAAAAHgAAAAEAAAAnAQAAHwAAAAAAAAAGAAAAIAAAAAEAAAAoAQAAIQAAAAAAAAAYAAAA
+IgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAp
+AQAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAACsB
+AAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAACwBAAAfAAAAAAAA
+AAYAAAAgAAAAAQAAAC0BAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAA
+AAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAC4BAAAAAAAAHAAAAAUAAAAAAAAABgAAAAcAAAAA
+AAAABgAAAAgAAAABAAAANwEAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAAOAEAAAwA
+AAAAAAAABgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAAOQEAABEAAAAAAAAABgAA
+ABIAAAABAAAAOgEAABMAAAABAAAAOwEAABUAAAABAAAAQAEAACsAAAACAAAAAAAAACwAAAABAAAA
+QQEAAC0AAAACAAAAAQAAAC4AAAABAAAAQgEAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAADQAAAAA
+AAAABgAAADUAAAABAAAARAEAAHAAAAAAAAAABgAAAHEAAAAAAAAABgAAAHIAAAAAAAAAcwAAAHQA
+AAABAAAARwEAAHsAAAABAAAATAEAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAA
+AAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAA8AQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAA
+HQAAAAAAAAAGAAAAHgAAAAEAAAA9AQAAHwAAAAAAAAAGAAAAIAAAAAEAAAA+AQAAIQAAAAAAAAAY
+AAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEA
+AAA/AQAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAA
+AEUBAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAA
+AAAAACMAAAB5AAAAAQAAAEYBAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAA
+AAAABgAAABoAAAABAAAASAEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4A
+AAABAAAASQEAAB8AAAAAAAAABgAAACAAAAABAAAASgEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAA
+ACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAASwEAAAAAAAAcAAAA
+BQAAAAAAAAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAABNAQAACQAAAAAAAAAGAAAACgAAAAAAAAAG
+AAAACwAAAAEAAABOAQAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAAAAAGAAAAEAAAAAEA
+AABPAQAAEQAAAAAAAAAGAAAAEgAAAAEAAABQAQAAEwAAAAEAAABRAQAAFQAAAAEAAABWAQAAKwAA
+AAIAAAAAAAAALAAAAAEAAABXAQAALQAAAAIAAAABAAAALgAAAAEAAABYAQAAMQAAAAAAAAAyAAAA
+MwAAAAAAAAAyAAAANAAAAAAAAAAGAAAANQAAAAEAAABaAQAAcAAAAAAAAAAGAAAAcQAAAAAAAAAG
+AAAAcgAAAAAAAABzAAAAdAAAAAEAAABdAQAAewAAAAEAAABiAQAAFgAAAAAAAAAGAAAAAAAAABAA
+AAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAFIBAAAbAAAAAAAA
+AAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAFMBAAAfAAAAAAAAAAYAAAAgAAAA
+AQAAAFQBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAm
+AAAAAAAAACMAAAAnAAAAAQAAAFUBAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkA
+AAAAAAAABgAAABoAAAABAAAAWwEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAA
+AHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAXAEAAAAAAAAQAAAAFgAAAAAAAAAGAAAA
+FwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABeAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQ
+AAAAHQAAAAAAAAAGAAAAHgAAAAEAAABfAQAAHwAAAAAAAAAGAAAAIAAAAAEAAABgAQAAIQAAAAAA
+AAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAA
+AAEAAABhAQAAAAAAABwAAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAGMBAAAJAAAA
+AAAAAAYAAAAKAAAAAAAAAAYAAAALAAAAAQAAAGQBAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAP
+AAAAAAAAAAYAAAAQAAAAAQAAAGUBAAARAAAAAAAAAAYAAAASAAAAAQAAAGYBAAATAAAAAQAAAGcB
+AAAVAAAAAQAAAGwBAAArAAAAAgAAAAAAAAAsAAAAAQAAAG0BAAAtAAAAAgAAAAEAAAAuAAAAAQAA
+AG4BAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAAHABAABwAAAA
+AAAAAAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAHMBAAB7AAAAAQAAAHgBAAAW
+AAAAAAAAAAYAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoA
+AAABAAAAaAEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAaQEA
+AB8AAAAAAAAABgAAACAAAAABAAAAagEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAA
+IwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAawEAAAAAAAAKAAAAFgAAAAAAAAAG
+AAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEAAABxAQAAGwAAAAAAAAAGAAAAHAAAAAIA
+AACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAByAQAAAAAA
+ABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAHQBAAAbAAAA
+AAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAHUBAAAfAAAAAAAAAAYAAAAg
+AAAAAQAAAHYBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMA
+AAAmAAAAAAAAACMAAAAnAAAAAQAAAHcBAAAAAAAAHAAAAAUAAAAAAAAABgAAAAcAAAAAAAAABgAA
+AAgAAAABAAAAeQEAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAAegEAAAwAAAAAAAAA
+BgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAAewEAABEAAAAAAAAABgAAABIAAAAB
+AAAAfAEAABMAAAABAAAAfQEAABUAAAABAAAAggEAACsAAAACAAAAAAAAACwAAAABAAAAgwEAAC0A
+AAACAAAAAQAAAC4AAAABAAAAhAEAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAADQAAAAAAAAABgAA
+ADUAAAABAAAAhgEAAHAAAAAAAAAABgAAAHEAAAAAAAAABgAAAHIAAAAAAAAAcwAAAHQAAAABAAAA
+iQEAAHsAAAABAAAAjgEAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY
+AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAB+AQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA
+AAAGAAAAHgAAAAEAAAB/AQAAHwAAAAAAAAAGAAAAIAAAAAEAAACAAQAAIQAAAAAAAAAYAAAAIgAA
+AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACBAQAA
+AAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIcBAAAb
+AAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMA
+AAB5AAAAAQAAAIgBAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAA
+ABoAAAABAAAAigEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAA
+iwEAAB8AAAAAAAAABgAAACAAAAABAAAAjAEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAA
+AAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAjQEAAAAAAAAcAAAABQAAAAAA
+AAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAACPAQAACQAAAAAAAAAGAAAACgAAAAAAAAAGAAAACwAA
+AAEAAACQAQAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAAAAAGAAAAEAAAAAEAAACRAQAA
+EQAAAAAAAAAGAAAAEgAAAAEAAACSAQAAEwAAAAEAAACTAQAAFQAAAAEAAACYAQAAKwAAAAIAAAAA
+AAAALAAAAAEAAACZAQAALQAAAAIAAAABAAAALgAAAAEAAACaAQAAMQAAAAAAAAAyAAAAMwAAAAAA
+AAAyAAAANAAAAAAAAAAGAAAANQAAAAEAAACcAQAAcAAAAAAAAAAGAAAAcQAAAAAAAAAGAAAAcgAA
+AAAAAABzAAAAdAAAAAEAAACfAQAAewAAAAEAAACkAQAAFgAAAAAAAAAGAAAAAAAAABAAAAAWAAAA
+AAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAJQBAAAbAAAAAAAAAAYAAAAc
+AAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAJUBAAAfAAAAAAAAAAYAAAAgAAAAAQAAAJYB
+AAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAA
+ACMAAAAnAAAAAQAAAJcBAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAA
+BgAAABoAAAABAAAAnQEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAA
+AAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAngEAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAA
+AAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAACgAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAA
+AAAAAAAGAAAAHgAAAAEAAAChAQAAHwAAAAAAAAAGAAAAIAAAAAEAAACiAQAAIQAAAAAAAAAYAAAA
+IgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACj
+AQAAAAAAABwAAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAKUBAAAJAAAAAAAAAAYA
+AAAKAAAAAAAAAAYAAAALAAAAAQAAAKYBAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAA
+AAYAAAAQAAAAAQAAAKcBAAARAAAAAAAAAAYAAAASAAAAAQAAAKgBAAATAAAAAQAAAKkBAAAVAAAA
+AQAAAK4BAAArAAAAAgAAAAAAAAAsAAAAAQAAAK8BAAAtAAAAAgAAAAEAAAAuAAAAAQAAALABAAAx
+AAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1AAAAAQAAALIBAABwAAAAAAAAAAYA
+AABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAALUBAAB7AAAAAQAAALoBAAAWAAAAAAAA
+AAYAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA
+qgEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAqwEAAB8AAAAA
+AAAABgAAACAAAAABAAAArAEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUA
+AAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAArQEAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAA
+AAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEAAACzAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAA
+dgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAC0AQAAAAAAABAAAAAW
+AAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAALYBAAAbAAAAAAAAAAYA
+AAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAALcBAAAfAAAAAAAAAAYAAAAgAAAAAQAA
+ALgBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAA
+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
+AgAAAAAAAAAsAAAAAQAAAP8BAAAtAAAAAgAAAAEAAAAuAAAAAQAAAAACAAAxAAAAAAAAADIAAAAz
+AAAAAAAAADIAAAAAAAAADQAAAI4AAAAAAAAABgAAAI8AAAABAAAAAgIAALMAAAAAAAAABgAAALQA
+AAAAAAAAIwAAAK0AAAAAAAAABgAAAK4AAAABAAAAAwIAAKwAAAABAAAABAIAACsAAAACAAAAAAAA
+ACwAAAABAAAABQIAAC0AAAACAAAAAQAAAC4AAAABAAAABgIAADEAAAAAAAAAMgAAADMAAAAAAAAA
+MgAAAA0AAAC1AAAAAAAAAAYAAAC2AAAAAQAAAAoCAACOAAAAAAAAAAYAAACPAAAAAQAAAAwCAACt
+AAAAAAAAAAYAAACuAAAAAQAAAA0CAACsAAAAAQAAAA4CAAArAAAAAgAAAAAAAAAsAAAAAQAAAA8C
+AAAtAAAAAgAAAAEAAAAuAAAAAQAAABACAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAAJAAAArQAA
+AAAAAAAGAAAArgAAAAEAAAAUAgAArAAAAAEAAAA+AgAAKwAAAAIAAAAAAAAALAAAAAEAAAA/AgAA
+LQAAAAIAAAABAAAALgAAAAEAAABAAgAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAACQAAAK0AAAAA
+AAAABgAAAK4AAAABAAAAFQIAAKwAAAABAAAAIgIAACsAAAACAAAAAAAAACwAAAABAAAAIwIAAC0A
+AAACAAAAAQAAAC4AAAABAAAAJAIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAAwAAACOAAAAAAAA
+AAYAAACPAAAAAQAAABcCAACzAAAAAAAAAAYAAACtAAAAAAAAAAYAAACuAAAAAQAAABgCAACsAAAA
+AQAAABkCAAArAAAAAgAAAAAAAAAsAAAAAQAAABoCAAAtAAAAAgAAAAEAAAAuAAAAAQAAABsCAAAx
+AAAAAAAAADIAAAAzAAAAAAAAADIAAAAAAAAADQAAAI4AAAAAAAAABgAAAI8AAAABAAAAHQIAALMA
+AAAAAAAABgAAALQAAAAAAAAAIwAAAK0AAAAAAAAABgAAAK4AAAABAAAAHgIAAKwAAAABAAAAHwIA
+ACsAAAACAAAAAAAAACwAAAABAAAAIAIAAC0AAAACAAAAAQAAAC4AAAABAAAAIQIAADEAAAAAAAAA
+MgAAADMAAAAAAAAAMgAAAA0AAAC1AAAAAAAAAAYAAAC2AAAAAQAAACUCAACOAAAAAAAAAAYAAACP
+AAAAAQAAACcCAACtAAAAAAAAAAYAAACuAAAAAQAAACgCAACsAAAAAQAAACkCAAArAAAAAgAAAAAA
+AAAsAAAAAQAAACoCAAAtAAAAAgAAAAEAAAAuAAAAAQAAACsCAAAxAAAAAAAAADIAAAAzAAAAAAAA
+ADIAAAANAAAAsQAAAAAAAAAGAAAAsgAAAAAAAAAjAAAAswAAAAAAAAAGAAAAtAAAAAAAAAAjAAAA
+rQAAAAAAAAAGAAAArgAAAAEAAAAsAgAArAAAAAEAAAAtAgAAKwAAAAIAAAAAAAAALAAAAAEAAAAu
+AgAALQAAAAIAAAABAAAALgAAAAEAAAAvAgAAMQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAADwAAAJwA
+AAAAAAAABgAAALcAAAAAAAAAMgAAALUAAAAAAAAABgAAALYAAAABAAAAMAIAAI4AAAAAAAAABgAA
+AI8AAAABAAAAMgIAAK0AAAAAAAAABgAAAK4AAAABAAAAMwIAAKwAAAABAAAANAIAACsAAAACAAAA
+AAAAACwAAAABAAAANQIAAC0AAAACAAAAAQAAAC4AAAABAAAANgIAADEAAAAAAAAAMgAAADMAAAAA
+AAAAMgAAAA8AAACcAAAAAAAAAAYAAAC3AAAAAAAAADIAAAC1AAAAAAAAAAYAAAC2AAAAAQAAADcC
+AACOAAAAAAAAAAYAAACPAAAAAQAAADkCAACtAAAAAAAAAAYAAACuAAAAAQAAADoCAACsAAAAAQAA
+ADsCAAArAAAAAgAAAAAAAAAsAAAAAQAAADwCAAAtAAAAAgAAAAEAAAAuAAAAAQAAAD0CAAAxAAAA
+AAAAADIAAAAzAAAAAAAAADIAAAAJAAAArQAAAAAAAAAGAAAArgAAAAEAAABBAgAArAAAAAEAAABj
+AgAAKwAAAAIAAAAAAAAALAAAAAEAAABkAgAALQAAAAIAAAABAAAALgAAAAEAAABlAgAAMQAAAAAA
+AAAyAAAAMwAAAAAAAAAyAAAADwAAALEAAAAAAAAABgAAALIAAAAAAAAAIwAAALUAAAAAAAAABgAA
+ALYAAAABAAAAQgIAAI4AAAAAAAAABgAAAI8AAAABAAAARAIAAK0AAAAAAAAABgAAAK4AAAABAAAA
+RQIAAKwAAAABAAAARgIAACsAAAACAAAAAAAAACwAAAABAAAARwIAAC0AAAACAAAAAQAAAC4AAAAB
+AAAASAIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAAsAAACOAAAAAAAAAAYAAACPAAAAAQAAAEoC
+AACtAAAAAAAAAAYAAACuAAAAAQAAAEsCAACsAAAAAQAAAEwCAAArAAAAAgAAAAAAAAAsAAAAAQAA
+AE0CAAAtAAAAAgAAAAEAAAAuAAAAAQAAAE4CAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAAPAAAA
+sQAAAAAAAAAGAAAAsgAAAAAAAAAjAAAAtQAAAAAAAAAGAAAAtgAAAAEAAABPAgAAjgAAAAAAAAAG
+AAAAjwAAAAEAAABRAgAArQAAAAAAAAAGAAAArgAAAAEAAABSAgAArAAAAAEAAABTAgAAKwAAAAIA
+AAAAAAAALAAAAAEAAABUAgAALQAAAAIAAAABAAAALgAAAAEAAABVAgAAMQAAAAAAAAAyAAAAMwAA
+AAAAAAAyAAAACwAAAI4AAAAAAAAABgAAAI8AAAABAAAAVwIAAK0AAAAAAAAABgAAAK4AAAABAAAA
+WAIAAKwAAAABAAAAWQIAACsAAAACAAAAAAAAACwAAAABAAAAWgIAAC0AAAACAAAAAQAAAC4AAAAB
+AAAAWwIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAA0AAAC1AAAAAAAAAAYAAAC2AAAAAQAAAFwC
+AACOAAAAAAAAAAYAAACPAAAAAQAAAF4CAACtAAAAAAAAAAYAAACuAAAAAQAAAF8CAACsAAAAAQAA
+AGACAAArAAAAAgAAAAAAAAAsAAAAAQAAAGECAAAtAAAAAgAAAAEAAAAuAAAAAQAAAGICAAAxAAAA
+AAAAADIAAAAzAAAAAAAAADIAAAAbAAAABQAAAAAAAAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAABm
+AgAACgAAAAAAAAAGAAAACwAAAAEAAABnAgAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAA
+AAAGAAAAEAAAAAEAAABoAgAAEQAAAAAAAAAGAAAAEgAAAAEAAABpAgAAEwAAAAEAAABqAgAAFQAA
+AAEAAABvAgAAKwAAAAIAAAAAAAAALAAAAAEAAABwAgAALQAAAAIAAAABAAAALgAAAAEAAABxAgAA
+MQAAAAAAAAAyAAAAMwAAAAAAAAAyAAAANAAAAAAAAAAGAAAANQAAAAEAAABzAgAAcAAAAAAAAAAG
+AAAAcQAAAAAAAAAGAAAAcgAAAAAAAABzAAAAdAAAAAEAAAB2AgAAewAAAAEAAAB7AgAAFgAAAAAA
+AAAGAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAawIA
+ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAbAIAAB8AAAAAAAAA
+BgAAACAAAAABAAAAbQIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAA
+AAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAbgIAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAA
+AAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAB0AgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAA
+AAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAB1AgAAAAAAABAAAAAWAAAA
+AAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAHcCAAAbAAAAAAAAAAYAAAAc
+AAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAHgCAAAfAAAAAAAAAAYAAAAgAAAAAQAAAHkC
+AAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAA
+ACMAAAAnAAAAAQAAAHoCAAAAAAAAEwAAAAUAAAAAAAAABgAAAIwAAAAAAAAAuAAAAAoAAAAAAAAA
+BgAAAAsAAAABAAAAfAIAAAwAAAAAAAAABgAAAA0AAAAAAAAAuQAAAA8AAAAAAAAABgAAABAAAAAB
+AAAAfQIAABEAAAAAAAAABgAAABMAAAABAAAAfgIAABUAAAABAAAAgwIAACsAAAACAAAAAAAAACwA
+AAABAAAAhAIAAC0AAAACAAAAAQAAAC4AAAABAAAAhQIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAA
+AHQAAAABAAAAiAIAAHsAAAABAAAAjQIAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAA
+AAAAAAYAAAAaAAAAAQAAAH8CAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAe
+AAAAAQAAAIACAAAfAAAAAAAAAAYAAAAgAAAAAQAAAIECAAAhAAAAAAAAABgAAAAiAAAAAAAAACMA
+AAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAIICAAAAAAAACgAA
+ABYAAAAAAAAABgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAAABoAAAABAAAAhgIAABsAAAAAAAAA
+BgAAABwAAAACAAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAAB
+AAAAhwIAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEA
+AACJAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAACKAgAAHwAA
+AAAAAAAGAAAAIAAAAAEAAACLAgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAA
+JQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACMAgAAAAAAABsAAAAFAAAAAAAAAAYAAAAH
+AAAAAAAAAAYAAAAIAAAAAQAAAI4CAAAKAAAAAAAAAAYAAAALAAAAAQAAAI8CAAAMAAAAAAAAAAYA
+AAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAAAQAAAJACAAARAAAAAAAAAAYAAAASAAAAAQAA
+AJECAAATAAAAAQAAAJICAAAVAAAAAQAAAJcCAAArAAAAAgAAAAAAAAAsAAAAAQAAAJgCAAAtAAAA
+AgAAAAEAAAAuAAAAAQAAAJkCAAAxAAAAAAAAADIAAAAzAAAAAAAAADIAAAA0AAAAAAAAAAYAAAA1
+AAAAAQAAAJsCAABwAAAAAAAAAAYAAABxAAAAAAAAAAYAAAByAAAAAAAAAHMAAAB0AAAAAQAAAJ4C
+AAB7AAAAAQAAAKMCAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAA
+AAAAAAAGAAAAGgAAAAEAAACTAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAA
+HgAAAAEAAACUAgAAHwAAAAAAAAAGAAAAIAAAAAEAAACVAgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAj
+AAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACWAgAAAAAAAAoA
+AAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAJwCAAAbAAAAAAAA
+AAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAA
+AQAAAJ0CAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAAB
+AAAAnwIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAoAIAAB8A
+AAAAAAAABgAAACAAAAABAAAAoQIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAA
+ACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAogIAAAAAAAATAAAABQAAAAAAAAAGAAAA
+jAAAAAAAAAC4AAAACgAAAAAAAAAGAAAACwAAAAEAAACkAgAADAAAAAAAAAAGAAAADQAAAAAAAAC5
+AAAADwAAAAAAAAAGAAAAEAAAAAEAAAClAgAAEQAAAAAAAAAGAAAAEwAAAAEAAACmAgAAFQAAAAEA
+AACrAgAAKwAAAAIAAAAAAAAALAAAAAEAAACsAgAALQAAAAIAAAABAAAALgAAAAEAAACtAgAAMQAA
+AAAAAAAyAAAAMwAAAAAAAAAyAAAAdAAAAAEAAACwAgAAewAAAAEAAAC1AgAAEAAAABYAAAAAAAAA
+BgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAApwIAABsAAAAAAAAABgAAABwAAAAC
+AAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAqAIAAB8AAAAAAAAABgAAACAAAAABAAAAqQIAACEA
+AAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAA
+ACcAAAABAAAAqgIAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAA
+GgAAAAEAAACuAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAj
+AAAAeAAAAAAAAAAjAAAAeQAAAAEAAACvAgAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgA
+AAAZAAAAAAAAAAYAAAAaAAAAAQAAALECAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAA
+AAYAAAAeAAAAAQAAALICAAAfAAAAAAAAAAYAAAAgAAAAAQAAALMCAAAhAAAAAAAAABgAAAAiAAAA
+AAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAALQCAAAA
+AAAAFAAAAAUAAAAAAAAABgAAAIwAAAAAAAAAjQAAAAoAAAAAAAAABgAAAAsAAAABAAAAtgIAAAwA
+AAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAAtwIAAI4AAAAAAAAABgAAAI8AAAABAAAAuQIA
+ABMAAAABAAAAugIAABUAAAABAAAAvwIAACsAAAACAAAAAAAAACwAAAABAAAAwAIAAC0AAAACAAAA
+AQAAAC4AAAABAAAAwQIAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAHQAAAABAAAAxAIAAHsAAAAB
+AAAAyQIAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAA
+AAAGAAAAGgAAAAEAAAC7AgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAA
+AAEAAAC8AgAAHwAAAAAAAAAGAAAAIAAAAAEAAAC9AgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAA
+JAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAC+AgAAAAAAAAoAAAAW
+AAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAMICAAAbAAAAAAAAAAYA
+AAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAA
+AMMCAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA
+xQIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAxgIAAB8AAAAA
+AAAABgAAACAAAAABAAAAxwIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUA
+AAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAyAIAAAAAAAAUAAAABQAAAAAAAAAGAAAAjAAA
+AAAAAACNAAAACgAAAAAAAAAGAAAACwAAAAEAAADKAgAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAA
+EAAAAAEAAADLAgAAjgAAAAAAAAAGAAAAjwAAAAEAAADNAgAAEwAAAAEAAADOAgAAFQAAAAEAAADT
+AgAAKwAAAAIAAAAAAAAALAAAAAEAAADUAgAALQAAAAIAAAABAAAALgAAAAEAAADVAgAAMQAAAAAA
+AAAyAAAAMwAAAAAAAAAyAAAAdAAAAAEAAADYAgAAewAAAAEAAADdAgAAFgAAAAAAAAAGAAAAAAAA
+ABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAM8CAAAbAAAA
+AAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAANACAAAfAAAAAAAAAAYAAAAg
+AAAAAQAAANECAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMA
+AAAmAAAAAAAAACMAAAAnAAAAAQAAANICAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdQAA
+ABkAAAAAAAAABgAAABoAAAABAAAA1gIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHYAAAAAAAAA
+dQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAA1wIAAAAAAAAQAAAAFgAAAAAAAAAG
+AAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAADZAgAAGwAAAAAAAAAGAAAAHAAAAAIA
+AACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAADaAgAAHwAAAAAAAAAGAAAAIAAAAAEAAADbAgAAIQAA
+AAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAA
+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
+FgAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAa
+AAAAAQAAAAwDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAA0D
+AAAfAAAAAAAAAAYAAAAgAAAAAQAAAA4DAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAA
+ACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAA8DAAAAAAAACgAAABYAAAAAAAAA
+BgAAABcAAAAAAAAAdQAAABkAAAAAAAAABgAAABoAAAABAAAAEwMAABsAAAAAAAAABgAAABwAAAAC
+AAAAkAAAAHYAAAAAAAAAdQAAAHcAAAAAAAAAIwAAAHgAAAAAAAAAIwAAAHkAAAABAAAAFAMAAAAA
+AAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAAWAwAAGwAA
+AAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAAXAwAAHwAAAAAAAAAGAAAA
+IAAAAAEAAAAYAwAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAj
+AAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAZAwAAAAAAABQAAAAFAAAAAAAAAAYAAACMAAAAAAAAAI0A
+AAAKAAAAAAAAAAYAAAALAAAAAQAAABsDAAAMAAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQAAAAAQAA
+ABwDAACOAAAAAAAAAAYAAACPAAAAAQAAAB4DAAATAAAAAQAAAB8DAAAVAAAAAQAAACQDAAArAAAA
+AgAAAAAAAAAsAAAAAQAAACUDAAAtAAAAAgAAAAEAAAAuAAAAAQAAACYDAAAxAAAAAAAAADIAAAAz
+AAAAAAAAADIAAAB0AAAAAQAAACkDAAB7AAAAAQAAAC4DAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYA
+AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAIAMAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAIQMAAB8AAAAAAAAABgAAACAAAAABAAAA
+IgMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA
+AAAAIwAAACcAAAABAAAAIwMAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAA
+AAAGAAAAGgAAAAEAAAAnAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAA
+AAAAAAAjAAAAeAAAAAAAAAAjAAAAeQAAAAEAAAAoAwAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAACoDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAd
+AAAAAAAAAAYAAAAeAAAAAQAAACsDAAAfAAAAAAAAAAYAAAAgAAAAAQAAACwDAAAhAAAAAAAAABgA
+AAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAA
+AC0DAAAAAAAAFAAAAAUAAAAAAAAABgAAAIwAAAAAAAAAjQAAAAoAAAAAAAAABgAAAAsAAAABAAAA
+LwMAAAwAAAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAAMAMAAI4AAAAAAAAABgAAAI8AAAAB
+AAAAMgMAABMAAAABAAAAMwMAABUAAAABAAAAOAMAACsAAAACAAAAAAAAACwAAAABAAAAOQMAAC0A
+AAACAAAAAQAAAC4AAAABAAAAOgMAADEAAAAAAAAAMgAAADMAAAAAAAAAMgAAAHQAAAABAAAAPQMA
+AHsAAAABAAAAQgMAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAA
+GQAAAAAAAAAGAAAAGgAAAAEAAAA0AwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAG
+AAAAHgAAAAEAAAA1AwAAHwAAAAAAAAAGAAAAIAAAAAEAAAA2AwAAIQAAAAAAAAAYAAAAIgAAAAAA
+AAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAA3AwAAAAAA
+AAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAADsDAAAbAAAA
+AAAAAAYAAAAcAAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5
+AAAAAQAAADwDAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoA
+AAABAAAAPgMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAPwMA
+AB8AAAAAAAAABgAAACAAAAABAAAAQAMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAA
+IwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAQQMAAAAAAAAXAAAABQAAAAAAAAAG
+AAAAjAAAAAAAAACNAAAACgAAAAAAAAAGAAAACwAAAAEAAABDAwAADAAAAAAAAAAGAAAADQAAAAAA
+AAC6AAAAuwAAAAAAAAAGAAAAvAAAAAEAAABEAwAADwAAAAAAAAAGAAAAEAAAAAEAAABFAwAAjgAA
+AAAAAAAGAAAAjwAAAAEAAABHAwAAEwAAAAEAAABIAwAAFQAAAAEAAABNAwAAKwAAAAIAAAAAAAAA
+LAAAAAEAAABOAwAALQAAAAIAAAABAAAALgAAAAEAAABPAwAAMQAAAAAAAAAyAAAAMwAAAAAAAAAy
+AAAAdAAAAAEAAABSAwAAewAAAAEAAABXAwAAFgAAAAAAAAAGAAAAEAAAABYAAAAAAAAABgAAABcA
+AAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAASQMAABsAAAAAAAAABgAAABwAAAACAAAAkAAA
+AB0AAAAAAAAABgAAAB4AAAABAAAASgMAAB8AAAAAAAAABgAAACAAAAABAAAASwMAACEAAAAAAAAA
+GAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAAB
+AAAATAMAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB1AAAAGQAAAAAAAAAGAAAAGgAAAAEA
+AABQAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdgAAAAAAAAB1AAAAdwAAAAAAAAAjAAAAeAAA
+AAAAAAAjAAAAeQAAAAEAAABRAwAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAA
+AAAAAAYAAAAaAAAAAQAAAFMDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAe
+AAAAAQAAAFQDAAAfAAAAAAAAAAYAAAAgAAAAAQAAAFUDAAAhAAAAAAAAABgAAAAiAAAAAAAAACMA
+AAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAFYDAAAAAAAABgAA
+ABcAAAAAAAAAwAAAABsAAAAAAAAABgAAABwAAAACAAAAAQAAAHYAAAAAAAAAwAAAAHgAAAAAAAAA
+IwAAAHkAAAABAAAAWwMAAAAAAAAGAAAAFwAAAAAAAADAAAAAGwAAAAAAAAAGAAAAHAAAAAIAAAAB
+AAAAdgAAAAAAAADAAAAAeAAAAAAAAAAjAAAAeQAAAAEAAABdAwAAAAAAAAMAAADHAAAAAQAAAG4D
+AADIAAAAAQAAAG8DAADJAAAAAQAAAHADAAABAAAA2wAAAAEAAAB1AwAAAQAAANsAAAABAAAAdwMA
+AAEAAADbAAAAAQAAAHsDAAACAAAA5wAAAAEAAACDAwAA6AAAAAEAAACEAwAAAAAAAAoAAAAWAAAA
+AAAAAAYAAAAXAAAAAAAAAHUAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIsDAAAbAAAAAAAAAAYAAAAc
+AAAAAgAAAJAAAAB2AAAAAAAAAHUAAAB3AAAAAAAAACMAAAB4AAAAAAAAACMAAAB5AAAAAQAAAIwD
+AAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAjgMA
+ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAjwMAAB8AAAAAAAAA
+BgAAACAAAAABAAAAkAMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAA
+AAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAkQMAAAAAAAAFAAAAAwAAAAEAAACdAwAA7AAAAAEA
+AACeAwAA7QAAAAEAAACfAwAA7gAAAAEAAACgAwAAkwAAAAEAAAChAwAABQAAAAMAAAABAAAAogMA
+AOwAAAABAAAAowMAAO0AAAABAAAApAMAAO4AAAABAAAApQMAAJMAAAABAAAApgMAAAUAAAADAAAA
+AQAAAKcDAADsAAAAAQAAAKgDAADtAAAAAQAAAKkDAADuAAAAAQAAAKoDAACTAAAAAQAAAKsDAAAF
+AAAAAwAAAAEAAACsAwAA7AAAAAEAAACtAwAA7QAAAAEAAACuAwAA7gAAAAEAAACvAwAAkwAAAAEA
+AACwAwAABQAAAAMAAAABAAAAsQMAAOwAAAABAAAAsgMAAO0AAAABAAAAswMAAO4AAAABAAAAtAMA
+AJMAAAABAAAAtQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAHg8PTEOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHBAAAAAAACgeUAAAAAAAABp
+QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAA
+CQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4A
+AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA
+AAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAcEAAAAAAAKB5
+QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+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
+AQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAA
+AAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3Bh
+dGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAA
+ADIAAABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAA
+AAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJ
+AAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUA
+AAABAAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGlj
+YXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxh
+ciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAANAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAA
+AAAAAAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAOAAAABgAAAA4AAABQAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8A
+AAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAKB0QAAAAAAA
+AGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAPAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAsAAAAHAAAA
+DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHk8MAAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQArAAAADgAAAFAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBqQAAAAAAAoHRA
+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
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAEgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAA
+AAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+TkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAEwAAAAYAAAAO
+AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA
+AAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQGpAAAAAAACg
+dEAAAAAAAAA+QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAFAAAAAIAAAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAQ
+AAAABwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAA
+AAAAAAAJAAAAGAAAAHL8JUR9ye4/tHFEdcii7j++yj5TdvfsPw4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQAeT09MA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAOBw
+QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAA
+AQAAAAAAAAAJAAAAGAAAAHL8JUR9ye4/tHFEdcii7j++yj5TdvfsPw4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEA
+AAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAA
+ACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAk
+QAAAAAAA4HBAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABcAAAACAAAADgAAADgAAAAG
+AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA
+3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAA
+AQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAAAIAAAABQAAAA4AAABQBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAAB
+AAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYA
+BAAAAADdDgAAAOgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+ABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAA
+AAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAf
+AAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAA
+AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACgAgAA
+BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABm
+dW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3Bh
+Y2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAMgAAAAEAAAAAAAAAEAAAADIAAABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxs
+YmFjayhvYmplY3Qsc3JjLGV2ZW50KQAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI
+AAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUAAAABAAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFt
+YXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFk
+ZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BH
+VUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAYAAAABAAAAA4AAAAwAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAAAZAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB
+AAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg
+AAAAAAAAAAAAJEAAAAAAAOBwQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAaAAAAAgAA
+AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAABYAAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAAEAAEAHk9PTAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+APA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAADwPw4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+ABAAAQArAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA
+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
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAHQAAAAIAAAAO
+AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEA
+AAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAA
+ABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAHgAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAQGpAAAAAAADgcEAAAAAAAAA+QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+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
+AQAAAAAAAAAQAAEAQAAAAA4AAACgAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAA
+ZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAA
+AGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAAADIAAABzZiUw
+QChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAAAAAAAA4AAABA
+AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnlt
+b3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUAAAABAAAAAAAA
+ABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3Vw
+cG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNz
+aW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAAjAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA
+AAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAkAAAABgAAAA4AAABQAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAA
+AAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAEBqQAAAAAAAAGlAAAAAAAAA
+TkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAAAlAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACEAAAAHAAAADgAAADAAAAAG
+AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHk+MAAOAAAAOAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAhADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAACQAAAAgAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgAAAAEAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQArAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBqQAAAAAAAQGpAAAAAAAAAPkAA
+AAAAAABOQA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAIAAAAAkA
+AAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAA
+BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABt
+YXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9o
+YW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAA
+AB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAA
+AAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRo
+aW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAACkAAAAB
+AAAAAAAAABAAAAApAAAAc2YlMEAoc3JjLGV2ZW50KXBiX2NhbGwob2JqZWN0LHNyYyxldmVudCkA
+AAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAA
+AAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA
+jQAAAAEAAAAAAAAAEAAAAI0AAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBs
+aWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1
+bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQENlbGwvc2V0X3BiLm0AAAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAAAnAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAABAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEA
+AAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAA
+AACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQGpAAAAAAABAakAAAAAAAAA+QAAAAAAAAE5A
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAKAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAAAIAAAABQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAKQAAAAYAAAAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAA
+AADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQGpAAAAAAABAakAAAAAAAAA+
+QAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAKgAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAmAAAABwAAAA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAA8D8OAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAA
+GAAAAHL8JUR9ye4/tHFEdcii7j++yj5TdvfsPw4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAACAAAAAEAAAABAAAAAAAAAAYAAAAgAAAAAAAA3QIAAAABAAAAAwAAAAoAAAAVAAAAIAAAAAkA
+AAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAAhADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAAKAAAADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAG5ldwAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAACRAAAAAAACAZkAAAAAA
+AABZQAAAAAAAAD5ADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAA
+AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJ
+AAAACAAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4A
+AAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAA
+ANgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAA
+QAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0
+aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAA
+AAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAAC
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAA
+AAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAA
+AHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA
+LQAAAAEAAAAAAAAAEAAAAC0AAABzZiUwQChzcmMsZXZlbnQpcGJfbmV3X2NhbGwob2JqZWN0LHNy
+YyxldmVudCkAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAA
+AAAQAAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAACNAAAAAQAAAAAAAAAQAAAAjQAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5
+L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25z
+L1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR3JpZC9zZXRfcGIubQAAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAACwAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAA
+AAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAAB
+AAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANBy
+QAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAIBmQAAAAAAAAFlAAAAA
+AAAAPkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAAAtAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAA
+AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+QA4A
+AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAuAAAABgAAAA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA
+8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAIBmQAAA
+AAAAAFlAAAAAAAAAPkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAvAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACsAAAAH
+AAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAAEAAAAAYA
+AABkZWxldGUAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA
+AAkAAAAgAAAAAAAAAACAW0AAAAAAAIBmQAAAAAAAAFlAAAAAAAAAPkAOAAAAEAEAAAYAAAAIAAAA
+AQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4A
+AACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAA
+AAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA
+AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAkAAAAIAAAADgAAAEgEAAAGAAAACAAAAAEAAAAA
+AAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA4AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRv
+cgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRM
+QUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAABAAAQBAAAAADgAAAJgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxl
+AAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAwAAAAAQAAAAAAAAAQAAAAMAAAAHNmJTBAKHNy
+YyxldmVudClwYl9kZWxldGVfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQ4AAABAAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4A
+AADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJQAAAABAAAAAAAAABAAAACUAAAAL1Vz
+ZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29y
+a3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gv
+VGFibGVUb29sL0BHcmlkL3NldF9kZWxldGVfcGIubQAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAxAAAABAAA
+AA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAA
+AADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAgFtAAAAAAACAZkAAAAAAAABZQAAAAAAAAD5ADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+MgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAF
+AAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEA
+AAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAA
+BQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPkAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAMwAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAA
+AAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgFtAAAAAAACAZkAAAAAAAABZQAAAAAAAAD5ADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAANAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAwAAAABwAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAkA
+AAAIAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAAQA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA
+AAAAABAAAwB4PjEADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA
+AAAACQAAACAAAAAAAAAAAMB8QAAAAAAAoHlAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAA
+BgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAA
+AAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAwHxAAAAAAACgeUAAAAAAAABpQAAAAAAAAE5ADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAAOAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAF
+AAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYA
+AAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAA
+BAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAH
+AAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAEAAAGAAAACAAA
+AAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNl
+cGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9u
+cy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAA
+AABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAO
+AAAAaAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNm
+JTBAKHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAADgAA
+AEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9u
+eW1vdXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAlQAAAAEAAAAA
+AAAAEAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBT
+dXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJl
+c3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9jcmVhdGVfc3RkX3RleHQubQAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAADkAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA
+AAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADoAAAAGAAAADgAAAFAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJA
+AAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAAoHlAAAAAAAAAaUAAAAAA
+AABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAADsAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAANwAAAAcAAAAOAAAAMAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeD4xAA4AAAA4AAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAA1AAAACAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAAAAAAAN0CAAAAAQAAAAIAAAAEAAAANgAAAAkAAAAA
+AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAACgAAAA4AAAAwAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBuZXcADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAKCEQAAAAAAA4HpAAAAA
+AAAATkAAAAAAAAA0QA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAA
+AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+NQAAAAgAAAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4A
+AADYAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAA
+AEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5j
+dGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAA
+AAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAA
+AgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24A
+AAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAA
+AAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AC0AAAABAAAAAAAAABAAAAAtAAAAc2YlMEAoc3JjLGV2ZW50KXBiX25ld19jYWxsKG9iamVjdCxz
+cmMsZXZlbnQpAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAA
+AAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAjQAAAAEAAAAAAAAAEAAAAI0AAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFy
+eS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9u
+cy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdyaWQvc2V0X3BiLm0AAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAA9AAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAA
+AAAAAAABAAAAAAAAABAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAA
+AQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQ
+ckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAoIRAAAAAAADgekAAAAAAAABOQAAA
+AAAAADRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAPgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAA
+AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANEAO
+AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAPwAAAAYAAAAOAAAA
+UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA
+APC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAoIRAAAAAAADgekAA
+AAAAAABOQAAAAAAAADRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAQAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA8AAAA
+BwAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAAABAAAAAG
+AAAAZGVsZXRlAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAoIRAAAAAAACgeUAAAAAAAABOQAAAAAAAADRADgAAABABAAAGAAAACAAA
+AAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAO
+AAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEA
+AAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA1AAAACAAAAA4AAABIBAAABgAAAAgAAAABAAAA
+AAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAGAAAACAAAAAIAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0
+b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFU
+TEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmls
+ZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAA
+AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMAAAAAEAAAAAAAAAEAAAADAAAABzZiUwQChz
+cmMsZXZlbnQpcGJfZGVsZXRlX2NhbGwob2JqZWN0LHNyYyxldmVudCkOAAAAQAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAAAAAO
+AAAAyAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACUAAAAAQAAAAAAAAAQAAAAlAAAAC9V
+c2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdv
+cmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94
+L1RhYmxlVG9vbC9AR3JpZC9zZXRfZGVsZXRlX3BiLm0AAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAQgAAAAQA
+AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAA
+AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAA
+AAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA
+AAAACQAAACAAAAAAAAAAAKCEQAAAAAAAoHlAAAAAAAAATkAAAAAAAAA0QA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AEMAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+BQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAAB
+AAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAA
+AAUAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEQAAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAA
+AAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAKCEQAAAAAAAoHlAAAAAAAAATkAAAAAAAAA0QA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAAEUAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAQQAAAAcAAAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA1
+AAAACAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAAKAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlkAAAAAA
+ACCMQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAA
+AAEAAAAAAAAACQAAACAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAiUAAAAAAAMCCQA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAEcAAAACAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEA
+AAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAlkAAAAAAACCMQA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAiUAAAAAAAFiEQA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEgAAAACAAAA
+DgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABA
+BAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJv
+b3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAO
+AAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9B
+cHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUA
+AAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxl
+X3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAKwAAAAEAAAAAAAAA
+EAAAACsAAABzZiUwQChzcmMsZXZlbnQpY2xvc2VfZmlnKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAO
+AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu
+b255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAA
+AAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u
+IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw
+cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AEkAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+EAAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAF
+AAAADgAAAEAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMA
+AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAA
+bWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25f
+aGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAA
+AAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAA
+AAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0
+aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAsAAAA
+AQAAAAAAAAAQAAAALAAAAHNmJTFAKHNyYyxldmVudClyZXNpemVfZmlnKG9iamVjdCxzcmMsZXZl
+bnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAA
+AAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBw
+bGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFi
+dWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAASgAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAA
+AQAAAAAAAAAQAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAABAAAQBmAAAADgAAADAIAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAQAAAAEAAAAAEA
+AAAAAAAACQAAAAAIAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPw4AAABAAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAA
+AAkAAAAQAAAAAAAAAAAA8D8AAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAeQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAEBqQAAAAAAAAGlAAAAA
+AAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAA
+GAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADw
+vwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAAQGpAAAAA
+AAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA
+AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEwAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAA
+AAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAA
+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
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAA
+AAAAAEBqQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABPAAAAAgAAAA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAA
+MAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeC95AA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABA
+cEAAAAAAAEBqQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAA
+AAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEA
+AAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAEBwQAAAAAAAQGpAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAFEAAAACAAAA
+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
+AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAABAcEAAAAAAAEBqQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AABUAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAQAAEAeAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB
+AAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAOBwQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA
+AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAA
+iUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAA4HBAAAAAAAAAaUAAAAAAAABOQA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAFYAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABAB
+AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+AAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAF
+AAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQBAAABgAA
+AAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOgDAAAGAAAACAAAAAIAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAA
+AABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNh
+dGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACgAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAA
+AAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgA
+AAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAAADIA
+AABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAAAAAA
+AA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAA
+YW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUAAAAB
+AAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRp
+b24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBF
+eHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAABXAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAA
+AAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAA
+AAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABYAAAABgAAAA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAA
+ANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAOBwQAAAAAAAAGlA
+AAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAABZAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAA
+AAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCp5AA4AAABQAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAcEAAAAAAAOBwQAAAAAAA
+AGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAA
+AAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAA
+DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA
+AAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAA
+4HBAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAFsAAAACAAAADgAAADgAAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAA
+AAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEA
+AAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AAAIAAAABQAAAA4AAABQBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAA
+AA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADd
+DgAAAOgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAAB
+AAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1
+bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAA
+AAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACgAgAABgAAAAgA
+AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlv
+bgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAA
+AAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAAMgAAAAEAAAAAAAAAEAAAADIAAABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhv
+YmplY3Qsc3JjLGV2ZW50KQAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAJUAAAABAAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2Vr
+ZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMv
+Q29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3Jl
+YXRlX3N0ZF90ZXh0Lm0AAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABcAAAABAAAAA4AAAAwAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AABdAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA
+AAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4A
+AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA
+AABAcEAAAAAAAOBwQAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABeAAAAAgAAAA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+AEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCt5
+AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAA
+AAAAAADAfEAAAAAAAKB0QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA
+3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+HEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA
+CQAAACAAAAAAAAAAAMB8QAAAAAAAoHRAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAGAA
+AAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA
+AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAA
+AAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAA
+AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAA
+b2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABQBAAABgAAAAgAAAABAAAAAAAAAAUA
+AAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAA
+AAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1Iy
+MDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+EAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQ
+AAEAQAAAAA4AAACgAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA
+BAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAA
+AAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMgAAAAEAAAAAAAAAEAAAADIAAABzZiUwQChzcmMsZXZl
+bnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50KQAAAAAAAA4AAABAAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAA
+AA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAJUAAAABAAAAAAAAABAAAACVAAAA
+L1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRo
+V29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xi
+b3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0AAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABhAAAA
+BAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAA
+AAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAABiAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAA
+AADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAAAKB0QAAAAAAAAGlAAAAAAAAATkAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+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
+EAAAADIAAABzZiUwQChzcmMsZXZlbnQpdGV4dGJveF9jYWxsYmFjayhvYmplY3Qsc3JjLGV2ZW50
+KQAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAA
+AAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AJUAAAABAAAAAAAAABAAAACVAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBw
+bGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFi
+dWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvY3JlYXRlX3N0ZF90ZXh0Lm0A
+AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAABmAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4A
+AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABnAAAABgAAAA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA
+8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+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
+AAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAA
+AAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAsAAAAAQAAAAAAAAAQAAAALAAAAHNmJTMyQChzcmMsZXZlbnQpaGVscF9jYWxsKG9iamVjdCxz
+cmMsZXZlbnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAA
+AAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI
+AAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJh
+cnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlv
+bnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAbQAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AAwAAAABAAAAAAAAABAAAAAMAAAAUHJvZHVjdCBIZWxwAAAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAA
+AAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEA
+AAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAA
+AAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAFAAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAHAAAAAQAAAAEAAAAAAAAABgAAABwAAAAAAADdAgAAAAIAAAABAAAAagAAAGwAAAAL
+AAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA
+BAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA
+AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAVHlwZWNoZWNrAAAAAAAAAA4AAAAQ
+AQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+BQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAASAQAAAYA
+AAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADgAwAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJyb290AAAA
+AAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUADgAAAFAA
+AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAvQXBwbGlj
+YXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAmAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBlAAAAAAAA
+AAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmlsZV9wYXRo
+AAAAAA4AAABoAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAADMAAAABAAAAAAAAABAAAAAz
+AAAAc2YlMzFAKHNyYyxldmVudClwdnNfZXh0X2NhbGxfc2ltKG9iamVjdCxzcmMsZXZlbnQpAAAA
+AAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAA
+AGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAA
+AQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0
+aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIg
+RXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAHAAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA
+AAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAWAAAAAQAAAAAA
+AAAQAAAAFgAAAFBWUyBUeXBlY2hlY2sgU2ltVHlwZXMAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAA
+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
+EAAAADAAAABzZiUyOUAoc3JjLGV2ZW50KXByZl9maWxlX2NhbGwob2JqZWN0LHNyYyxldmVudCkO
+AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu
+b255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAA
+AAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u
+IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw
+cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AHQAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+EAAAAAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAQAAAAAQAAAAAAAAAQ
+AAAAEAAAAFBWUyBDaGVjayBTdGF0dXMOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUA
+AAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C
+AAAAAAAAAAAAAAADAAAAAAAAAA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEA
+AAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAA
+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
+DgAAAOADAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAAB
+AAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1
+bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAA
+AAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgA
+AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlv
+bgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAA
+AAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAANQAAAAEAAAAAAAAAEAAAADUAAABzZiUyNEAoc3JjLGV2ZW50KXByb3Zlcl9zZWxlY3RfY2Fs
+bChvYmplY3Qsc3JjLGV2ZW50KQAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2Vr
+ZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMv
+Q29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5p
+dC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAgAAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUA
+AAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBQVlMADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAA
+OAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAA
+AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQA
+AAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA
+AAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAAC
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEgEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAA
+AQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAABgAEAAAAAN0OAAAA4AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5l
+bAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAO
+AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4A
+AAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAA
+AJgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAA
+VQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdv
+cmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAaAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAA1AAAAAQAAAAAAAAAQAAAANQAAAHNmJTIzQChzcmMsZXZlbnQpcHJvdmVy
+X3NlbGVjdF9jYWxsKG9iamVjdCxzcmMsZXZlbnQpAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAG
+AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAAAAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVz
+YXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRM
+QUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRv
+b2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACCAAAABAAAAA4AAAAwAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAADAAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAENWQzMOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAAD
+AAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA
+BAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA
+AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABwAAAAEAAAABAAAAAAAAAAYAAAAcAAAAAAAA3QIAAAACAAAAAQAAAH8AAACB
+AAAACwAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAA
+AAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAdAAAAA4AAAAQAQAABgAAAAgAAAAB
+AAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAA
+AJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAA
+BwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAASAQAAAYAAAAIAAAAAQAAAAAA
+AAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADgAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9y
+AAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExB
+Ql9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAAEAABAEAAAAAOAAAAmAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUA
+AAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABoAAAA
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAADEAAAABAAAAAAAAABAAAAAxAAAAc2YlMjJAKHNy
+YyxldmVudCl0eXBlY2hlY2tfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAAAAAAAAAOAAAAQAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAA
+AAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAA
+igAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv
+TWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBU
+b29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAIQAAAAEAAAA
+DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAO
+AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAFR5
+cGVjaGVjawAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA
+AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAA
+AAADAAAAAAAAAA4AAABwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAADwAAAAEAAAABAAAAAAAA
+AAYAAAA8AAAAAAAA3QIAAAAKAAAAAQAAAG8AAABxAAAAcwAAAHUAAAB3AAAAeQAAAHoAAAB8AAAA
+fgAAAIMAAAALAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUA
+AAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAAwAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAABAABABFZGl0DgAAAEAAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAACwAAAAEAAAAAAAAAEAAAAAsAAABPdXRwdXQgTW9kZQAA
+AAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4A
+AABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAGAAAA
+CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxh
+YnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRs
+ZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAA
+AC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5
+cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9m
+aWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAANAAAAAEAAAAA
+AAAAEAAAADQAAABzZiUyMUAoc3JjLGV2ZW50KW11bHRpX3NlbGVjdF9jYWxsKG9iamVjdCxzcmMs
+ZXZlbnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAA
+ABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkv
+QXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMv
+VGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAiAAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAA
+AAAAAQAAAAAAAAAQAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABAA
+AAABAAAAAAAAABAAAAAQAAAATXVsdGlwbGUgT3V0cHV0cw4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAA
+DgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAAB
+AAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYA
+AAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAA
+AAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0
+AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAA
+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
+AQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0
+aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIg
+RXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAIwAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA
+AAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAWAAAAAQAAAAAA
+AAAQAAAAFgAAAFBvcnRzIGFuZCBEYXRhIE1hbmFnZXIAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAA
+DgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAAB
+AAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYA
+AAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAEgAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAEgAAAAEAAAAAAAAAEAAAABIAAABTaG93IGVkaXQgY29udHJvbHMAAAAAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C
+AAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAAwAAAA
+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
+AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp
+bl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALAAAAAEA
+AAAAAAAAEAAAACwAAABzZiUxNkAoc3JjLGV2ZW50KWNsb3NlX2ZpZyhvYmplY3Qsc3JjLGV2ZW50
+KQAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAA
+CQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACK
+AAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxp
+Y2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVs
+YXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAJQAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAAEAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAFAAAAAQAA
+AAAAAAAQAAAABQAAAENsb3NlAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAA
+AQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAA
+AAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAA
+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
+BgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QA
+AAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAA
+UAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBs
+aWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAA
+AAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3Bh
+dGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALAAAAAEAAAAAAAAAEAAA
+ACwAAABzZiUxM0Aoc3JjLGV2ZW50KW9wZW5fY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAAAAAOAAAA
+QAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255
+bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAA
+AAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1
+cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVz
+c2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAJoA
+AAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAA
+AAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAHAAAAAQAAAAAAAAAQAAAA
+BwAAAE9wZW4uLi4ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAA
+AAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAA
+AwAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQ
+AAEAbgAAAA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUA
+AAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAA
+BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABt
+YXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9o
+YW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAA
+AB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAA
+AAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRo
+aW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAACsAAAAB
+AAAAAAAAABAAAAArAAAAc2YlMTJAKHNyYyxldmVudCluZXdfY2FsbChvYmplY3Qsc3JjLGV2ZW50
+KQAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAA
+AAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA
+igAAAAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBs
+aWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1
+bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAACcAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAABAAAAAAAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEA
+AAAAAAAAEAADAE5ldwAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA
+AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAA
+AAADAAAAAAAAAA4AAABYAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAACgAAAAEAAAABAAAAAAAA
+AAYAAAAoAAAAAAAA3QIAAAAFAAAAAQAAAJMAAACVAAAAlwAAAJkAAACbAAAACwAAAA4AAAA4AAAA
+BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAA
+AN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCx5AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACAVkAAAAAAAFB+QAAAAAAAQG9AAAAAAAAA
+TkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAA
+AAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAA
+AAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAIBWQAAAAAAAUH5AAAAAAABA
+b0AAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAJ4AAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMA
+AAAAAAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAA
+AA4AAABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAG
+AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1h
+dGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hh
+bmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAA
+HwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAA
+AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp
+bl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMwAAAAEA
+AAAAAAAAEAAAADMAAABzZiUxMUAoc3JjLGV2ZW50KXRleHRib3hfY2FsbGJhY2sob2JqZWN0LHNy
+YyxldmVudCkAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAA
+AAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI
+AAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJh
+cnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlv
+bnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAnwAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAA
+UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAoAAAAAYAAAAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/
+AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgFZAAAAAAABQfkAAAAAA
+AEBvQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAoQAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAElucHV0cwAADgAAAFAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAUQAAAAAAAUH5A
+AAAAAAAAVEAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAAB
+AAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAA
+AAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAUQAAAAAAAUH5AAAAAAAAAVEAAAAAAAABO
+QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAKMAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAA
+AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+JEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAACkAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAAAAFEAAAAAAAFB+QAAAAAAAAFRAAAAAAAAATkAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AAClAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAQAAEAZgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB
+AAAAAAAAAAkAAAAgAAAAAAAAAACQekAAAAAAAFB+QAAAAAAAQG9AAAAAAAAATkAOAAAASAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA
+AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAA
+iUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAJB6QAAAAAAAUH5AAAAAAABAb0AAAAAAAABOQA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAKcAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAABAB
+AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+AAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAF
+AAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABIBAAABgAA
+AAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAGAAAACAAAAAIAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAA
+AABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNh
+dGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAA
+AAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgA
+AAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMwAAAAEAAAAAAAAAEAAAADMA
+AABzZiUxMEAoc3JjLGV2ZW50KXRleHRib3hfY2FsbGJhY2sob2JqZWN0LHNyYyxldmVudCkAAAAA
+AA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAA
+YW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAIoAAAAB
+AAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRp
+b24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBF
+eHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAAqAAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA
+AAAQAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA
+AAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAAUAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAChADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAqQAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAA
+AACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAkHpAAAAAAABQfkAAAAAAAEBvQAAAAAAAAE5A
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAqgAAAAIAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAPAAAAAQAAAAAAAAAQAAAADwAAAEV4cHJlc3Npb24gTmFtZQAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHVAAAAAAABQfkAAAAAA
+AABUQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAA
+AAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJ
+QAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHVAAAAAAABQfkAAAAAAAABUQAAAAAAAAE5ADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAArAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAK0AAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+HEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA
+CQAAACAAAAAAAAAAAEB1QAAAAAAAUH5AAAAAAAAAVEAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAK4A
+AAACAAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACAAAAAEAAAAAAAAAEAAA
+AAgAAABTZXR0aW5ncw4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAADAgkAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAAEAEAAAYAAAAI
+AAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAA
+AA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAA
+AQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEAEAAAGAAAACAAAAAEA
+AAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFy
+YXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9N
+QVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABm
+aWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAA
+YAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAvAAAAAQAAAAAAAAAQAAAALwAAAHNmJTlA
+KHNyYyxldmVudClzZXR0aW5nc19jYWxsKG9iamVjdCxzcmMsZXZlbnQpAA4AAABAAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAA
+AA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAA
+L1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRo
+V29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xi
+b3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAsAAAAAQAAAAOAAAA
+MAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIA
+AAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAA
+AAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAA
+ACAAAAAAAAAAAMCCQAAAAAAAWIFAAAAAAAAAVEAAAAAAAABEQA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAALEAAAAC
+AAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEA
+AAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAA
+AAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAABEQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACyAAAA
+BgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg
+AAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAA
+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
+AAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAYgEAAAAAA
+AFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAC2AAAAAgAAAA4AAAA4AAAABgAAAAgA
+AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAA
+AAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB
+AAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAtwAAAAYAAAAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQ
+ckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAGIBAAAAAAABYgUAAAAAAAABUQAAA
+AAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAuAAAAAIAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAFR5cGVjaGVjawAAAAAAAAAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4HpAAAAAAABY
+gUAAAAAAAABUQAAAAAAAAERADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAA
+AAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAA
+AAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAA
+AADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAA
+AAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAA
+AGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAA
+AQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAG
+AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5j
+dGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UA
+AAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAMAAAAAEAAAAAAAAAEAAAADAAAABzZiU3QChzcmMsZXZlbnQpdHlwZWNoZWNrX2NhbGwo
+b2JqZWN0LHNyYyxldmVudCkOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAA
+AQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9M
+aWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxl
+Y3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAA
+AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAALoAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8A
+AAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADgekAAAAAAAFiBQAAAAAAA
+AFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAC7AAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAAD
+AAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAvAAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJ
+QAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4HpAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAvQAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAABTeW50YXgAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACQdUAAAAAAAFiBQAAAAAAAAFRA
+AAAAAAAAREAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAF
+AAAADgAAAEAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMA
+AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAA
+bWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25f
+aGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAA
+AAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAA
+AAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0
+aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAsAAAA
+AQAAAAAAAAAQAAAALAAAAHNmJTZAKHNyYyxldmVudCljaGVja19jYWxsKG9iamVjdCxzcmMsZXZl
+bnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAA
+AAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBw
+bGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFi
+dWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAAvwAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAA
+AQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAAB
+AAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAA
+AAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAJB1QAAAAAAAWIFAAAAAAAAAVEAAAAAAAABE
+QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAMAAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAA
+AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+JEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAADBAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAACQdUAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AADCAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAgAAAABAAAAAAAA
+ABAAAAAIAAAAU2F2ZSBFeHQOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA
+AQAAAAAAAAAJAAAAIAAAAAAAAAAAQHBAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAABABAAAG
+AAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAA
+AAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQA
+BwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgA
+AAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABz
+ZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlv
+bnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAA
+AAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAA
+DgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALwAAAAEAAAAAAAAAEAAAAC8AAABz
+ZiU1QChzcmMsZXZlbnQpc2F2ZV9leHRfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAOAAAAQAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAA
+AAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAA
+igAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv
+TWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBU
+b29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMQAAAAEAAAA
+DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAA
+AN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+ABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA
+AAkAAAAgAAAAAAAAAABAcEAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADF
+AAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUA
+BAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA
+AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+xgAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJ
+AAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAA
+UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA
+QHBAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAxwAAAAIAAAAOAAAAOAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAFAAAAAQAAAAAAAAAQAAAABQAAAENsb3NlAAAA
+DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA
+AAAAAOBlQAAAAAAAWIFAAAAAAAAAVEAAAAAAAABEQA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUA
+AAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAA
+CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVj
+dAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA
+AAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNl
+bnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIu
+YXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAv
+AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAA
+AAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAA
+AAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAA
+AAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAACsAAAABAAAAAAAAABAAAAArAAAAc2YlNEAoc3JjLGV2ZW50KWNs
+b3NlX2ZpZyhvYmplY3Qsc3JjLGV2ZW50KQAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAAAAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJh
+YW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIg
+QWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wv
+QEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADJAAAABAAAAA4AAAAwAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAA
+AAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4GVA
+AAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAygAAAAIAAAAOAAAAOAAAAAYA
+AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADd
+AgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERADgAAAFAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMsAAAAGAAAADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAA
+AAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAOBlQAAAAAAAWIFAAAAAAAAA
+VEAAAAAAAABEQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMwAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAFNhdmUOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgFZAAAAAAABYgUAAAAAAAABUQAAA
+AAAAAERADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAA
+AA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAG
+AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1h
+dGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hh
+bmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAA
+HwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAA
+AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp
+bl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAKwAAAAEA
+AAAAAAAAEAAAACsAAABzZiUzQChzcmMsZXZlbnQpc2F2ZV9jYWxsKG9iamVjdCxzcmMsZXZlbnQp
+AAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAA
+CQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACK
+AAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxp
+Y2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVs
+YXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAM4AAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAA
+AAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAA
+AIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACAVkAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAADPAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAA0AAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAgFZAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+0QAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQ
+AAQARWRpdA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA
+AAAAAAAJAAAAIAAAAAAAAAAAABRAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAABABAAAGAAAA
+CAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQA
+AAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAA
+AAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgAAAAB
+AAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBh
+cmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMv
+TUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAA
+ZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAA
+AGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALwAAAAEAAAAAAAAAEAAAAC8AAABzZiUy
+QChzcmMsZXZlbnQpZWRpdF90b2dfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAOAAAAQAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAA
+AAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAAigAA
+AC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0
+aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29s
+Ym94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAANMAAAAEAAAADgAA
+ADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C
+AAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAAAAFEAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADUAAAA
+AgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAB
+AAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAA
+AAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+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
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAALQAAAAHAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAArwAAAAcAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACmAAAA
+BwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBm
+AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHgs
+eQAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAACdAAAABwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAgADdADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAECPQA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAWUAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAA2QAAABAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACrAAAABwAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAKIAAAAHAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAABAAAA
+EQAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAANoAAAASAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAADbAAAAEwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAADcAAAAFAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAiQAAAAsAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAACHAAAACwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAH8AAAALAAAADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAAgQAAAAsAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAJAAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAN0AAAAVAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAkAAAAAsAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACOAAAACwAAAA4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAEAEAAAYAAAAI
+AAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAA
+AA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAA
+AQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAEAAAGAAAACAAAAAEA
+AAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFy
+YXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9N
+QVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABm
+aWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAA
+aAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNmJTBA
+KHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAADgAAAEAA
+AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1v
+dXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAlQAAAAEAAAAAAAAA
+EAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBw
+b3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Np
+b24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9jcmVhdGVfc3RkX3RleHQubQAAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAAcAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA
+AAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAN4AAAAGAAAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAA
+AAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAAoHlAAAAAAAAAaUAAAAAAAABO
+QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAN8AAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAcAAAAOAAAAMAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQAeDw9MQ4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAAA1AAAACAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAACQAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAAoAAAAJAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAZAAAAAcAAAAOAAAAMAAAAAYAAAAIAAAABAAA
+AAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeC15AA4AAABIAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAANgAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAKAAAACQAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAF8AAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEA
+AAAAAAAAEAADAHgreQAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAA
+AAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAAJ
+AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAAFQAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABaAAAABwAAAA4AAAAwAAAA
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB4KnkADgAAAEgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA2AAAACQAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABUAAAAJ
+AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAAVQAAAAcAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAQAAEAeAAAAA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAABAAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAgAAAACQAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAFAAAAAH
+AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHgv
+eQAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAA
+AAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADYAAAAJAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAIAAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABLAAAABwAAAA4AAAAwAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQB5AAAADgAAAEgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8OAAAAYAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAsAAAABAAAAAQAAAAAAAAAGAAAALAAA
+AAAAAN0CAAAAAQAAAAYAAAADAAAA4AAAAOEAAADiAAAA4wAAAOQAAAAWAAAAAAAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAADUAAAAIAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAA
+CgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAADUAAAAIAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAAMAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAZgAAAA4AAAAwAAAA
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB4LHkADgAAAJgBAAAG
+AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAAIwAAAHNl
+dAAAAABpbnB1dHMAY291bnQAAHJhbmdlAABleGNlcHQAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAQI9ADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABZ
+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ
+AAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEYAAAAPAAAADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAACQ
+AAAABgAAAAgAAAAMAAAAAAAAAAUAAAAIAAAAFwAAAAEAAAABAAAAAAAAAAUAAABcAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAPguAAAGAAAACAAAAAEAAAAAAAAA
+BQAAAAgAAAAXAAAAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUA
+AAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAA
+AAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAA
+CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4
+AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAA
+AAAOAAAAYBIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAGQAA
+AAEAAAB4BQAAR3JpZDIAAAAAAAAAAAAAAAAAAAAAAAAAAEdyaWQxAAAAAAAAAAAAAAAAAAAAAAAA
+AABHcmlkMAAAAAAAAAAAAAAAAAAAAAAAAAAAbWFpbl9maWcAAAAAAAAAAAAAAAAAAAAAAGZyYW1l
+AAAAAAAAAAAAAAAAAAAAAAAAAABmaWcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc2Nyb2xsX3YAAAAA
+AAAAAAAAAAAAAAAAAGVkaXRfdG9nAAAAAAAAAAAAAAAAAAAAAABzYXZlX3BiAAAAAAAAAAAAAAAA
+AAAAAAAAcHZzX3BiAAAAAAAAAAAAAAAAAAAAAAAAAGNsb3NlX3BiAAAAAAAAAAAAAAAAAAAAAABz
+YXZlX2V4dF9wYgAAAAAAAAAAAAAAAAAAY2hlY2tfcGIAAAAAAAAAAAAAAAAAAAAAAGlucHV0X3Bi
+AAAAAAAAAAAAAAAAAAAAAABzZXR0aW5nc19wYgAAAAAAAAAAAAAAAAAAZnVuY3Rpb25fbmFtZV9j
+b250cm9sAAAAAGZ1bmN0aW9uX25hbWVfdGV4dAAAAAAAAABmdW5jdGlvbl9pbnB1dHNfdGV4dAAA
+AAAAZnVuY3Rpb25faW5wdXRzX2NvbnRyb2wAAGVkaXQAAAAAAAAAAAAAAAAAAAAAAAAAAABpbml0
+aWFsaXplZAAAAAAAAAAAAAAAAAAAYmxvY2tfaGFuZGxlAAAAAAAAAAAAAAAAAHNldHRpbmdzAAAA
+AAAAAAAAAAAAAAAAAABoZWFkZXJfaGVpZ2h0AAAAAAAAAAAAAAAAZmlnX2hlaWdodAAAAAAAAAAA
+AAAAAAAAAGZpZ193aWR0aAAAAAAAAAAAAAAAAAAAAABwYl9vZmZzZXQAAAAAAAAAAAAAAAAAAAAA
+cGJfd2lkdGgAAAAAAAAAAAAAAAAAAAAAAHBiX2hlaWdodAAAAAAAAAAAAAAAAAAAAABodHhfaGVp
+Z2h0AAAAAAAAAAAAAAAAAAAAdGV4dF93aWR0aAAAAAAAAAAAAAAAAAAAAG5hbWVfbGFiZWwAAAAA
+AAAAAAAAAAAAAABpbnB1dF9sYWJlbAAAAAAAAAAAAAAAAAAARGF0YQAAAAAAAAAAAAAAAAAAAAAA
+AAAAAFBWUwAAAAAAAAAAAAAAAAAAAAAAAAAAAABDVkMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHZz
+X2NoZWNrZWQAAAAAAAAAAAAAAAAAAG1vZGUAAAAAAAAAAAAAAAAAAAAAAAAAAABFTUxHZW4AAAAA
+AAAAAAAAAAAAAAAAAAAAVGFibGVCbGsAAAAAAAAAAAAAAAAAAAAAAHNhdmVkAAAAAAAAAAAAAAAA
+AAAAAAAAAAB2YWxpZGF0aW9uX3JlcG9ydF9oYW5kbGUAbXVsdGlfdHlwZQAAAAAAAAAAAAAAAAAA
+AG11bHRpX21vZGUAAAAAAAAAAAAAAAAAAABtdWx0aV9ncnAAAAAAAAAAAAAAAAAAAAAAbXVsdGlf
+b3B0X3JlZwAAAAAAAAAAAAAAAG11bHRpX29wdF9vdXQAAAAAAAAAAAAAAABwcm92ZXJfb3B0X3B2
+cwAAAAAAAAAAAAAAcHJvdmVyX29wdF9jdmMAAAAAAAAAAAAAAHZlcnNpb24AAAAAAAAAAAAAAAAA
+AAAAAAB1bmRvX21hbgAAAAAAAAAAAAAAAAAAAAAAdW5kb19vcHQAAAAAAAAAAAAAAAAAAAAAAHJl
+ZG9fb3B0AAAAAAAAAAAAAAAAAAAAAABkZWZhdWx0X3Byb3ZlcgAAAAAAAAAAAAAAUFZTX2NvbnN0
+AAAAAAAAAAAAAAAAAAAAAENWQ19jb25zdAAAAAAAAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAXkAOAAAAOAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAwIJADgAAADgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAACJQA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAAFEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAAFRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAABEQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAQG9ADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAFAAAAAQAAAAAAAAAQAAAABQAAADAuNy40AAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAC
+AAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYA
+AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAA
+AMgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAA8AAAABAAAA
+hwAAAHBhcmVudF9jZWxsAAAAAHBhcmVudF9ncmlkAAAAAGNlbGxzAAAAAAAAAAAAAHNwbGl0X3Bi
+AAAAAAAAAG51bV9jZWxscwAAAAAAAGdyaWRfaW5kZXgAAAAAAHJHcmlkAAAAAAAAAAAAAG5ld19j
+ZWxsX3BiAAAAAGRlbGV0ZV9jZWxsX3BiAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAGgFAAAGAAAACAAAAAIAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABYAAAABAAAAYAEAAHN1YmdyaWQAAAAAAAAAAAAA
+AAAAAABjb25kAAAAAAAAAAAAAAAAAAAAAAAAY29uZF90ZXh0AAAAAAAAAAAAAAAAAGNlbGxfaW5k
+ZXgAAAAAAAAAAAAAAABwYXJlbnRfZ3JpZAAAAAAAAAAAAAAAd2lkdGgAAAAAAAAAAAAAAAAAAAAA
+AGhlaWdodAAAAAAAAAAAAAAAAAAAAABncmlkX3BiAAAAAAAAAAAAAAAAAAAAcGJfZmxhZwAAAAAA
+AAAAAAAAAAAAAGNvbG9yAAAAAAAAAAAAAAAAAAAAAABjb25kaXRpb25fdGV4dF93aWR0aAAAY29u
+ZGl0aW9uX3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAAAAAAABjb25kaXRpb25fdGV4dF95
+AAAAAAAAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aAAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAA
+ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA
+AAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAABpQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAkQA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAANEAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAD5A
+DgAAAPgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAYAAAAB
+AAAAEgAAAENlbGxzAEdyaWQxAEdyaWQyAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAA
+AAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4AAAA
+BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAO
+AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEA
+AAAAAAAADgAAANAFAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AA8AAAABAAAAHQEAAHB2c19pbmNsdWRlcwAAAGNvdW50ZXJfdHJpYWxzAGNvdW50ZXJfcmFuZ2UA
+AGV4Y2VwdAAAAAAAAAAAAGZpZ193aWR0aAAAAAAAAGZpZ19oZWlnaHQAAAAAAG9wZW4AAAAAAAAA
+AAAAAGZpZwAAAAAAAAAAAAAAAGJ1dHRvbl93aWR0aAAAAGJ1dHRvbl9oZWlnaHQAAGJ1dHRvbl9v
+ZmZzZXQAAHRpdGxlX2hlaWdodAAAAGxhYmVsX2hlaWdodAAAAGxhYmVsX3dpZHRoAAAAAHRleHRf
+b2Zmc2V0AAAAAGluY2x1ZGVfdGV4dAAAAGNvdW50X3RleHQAAAAAAHJhbmdlX3RleHQAAAAAAGV4
+Y2VwdF9jaGVjawAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAB5QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAADAckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAE5ADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAA+QA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAJEAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AD5ADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAA+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAADAUkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAA
+AAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAA
+AAAAAAEAAAAAAAAACQAAAAAAAAAOAAAACAMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQAEAAAAAEAAACgAAAAR3JpZDAAAAAAAAAAAAAAAEdyaWQxAAAAAAAAAAAA
+AABHcmlkMgAAAAAAAAAAAAAAZnVuY3Rpb25fbmFtZQAAAGZ1bmN0aW9uX2lucHV0cwBzZXR0aW5n
+cwAAAAAAAAAAY2hlY2tlZAAAAAAAAAAAAG9wZW4AAAAAAAAAAAAAAABmaWcAAAAAAAAAAAAAAAAA
+bXVsdGlfbW9kZQAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA
+AAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA
+AAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA
+AAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+CQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ
+AAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkA
+AAAAAAAADgAAAGgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AA0AAAABAAAAaAAAAGRlZmF1bHRfdHlwZQBwdnNfdmVyc2lvbgAAb3V0cHV0X3R5cGUAAGlucHV0
+X3R5cGUAAABkYXRhAAAAAAAAAAAAbW9kZQAAAAAAAAAAAG11bHRpX21vZGUAAAB0eXBlX21vZGUA
+AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAHJl
+YWwOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA
+AA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA
+DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A
+AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AADwPw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAA
+AAAADgAAALgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAgA
+AAABAAAAEAAAAGNvbW1hbmQAZGF0YQAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAQAAQAY3ZjMw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAABABAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEAA0AAAABAAAAJwAAAGRhdGEAAAAAAAAAAABkYXRhdHlwZQAAAAAA
+bXVsdGlfb3V0cHV0AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAADwPw4AAABYAQAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAUABAAOAAAAAQAAADgAAABxdWV1ZQAAAAAAAAAAAG1heF9kZXB0aAAAAAAAY3Vy
+cmVudF9kZXB0aAB1bmRvX2xldmVsAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABJQA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAkAEAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQADAAAAAEAAAA8AAAAQ2VsbDEAAAAAAAAAQ2VsbDIAAAAA
+AAAAcmVzdWx0AAAAAAAAcmVzdWx0X3RleHQAY29sb3IAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAiAAAAAYAAAAIAAAACQAA
+AAAAAAAFAAAACAAAAAEAAABYAAAAAQAAAAAAAAACAAAAWAAAAAABSU0AAAAADgAAAEgAAAAGAAAA
+CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAUAAAABAAAABQAAAE1DT1MA
+AAAADgAAAAAAAAA
+__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml
+
+
+
+ 932f3cac-c6e8-4ef0-91e5-d14c0e1a6678
+ maci64
+
+ %<Auto>
+ %<Auto>
+ 574183990
+ %<AutoIncrement:24.0>
+
+
+ none
+
+
+ normal
+
+ $bdroot
+
+ $bdroot |
+
+
+ |
+
+
+
+
+ warning
+
+
+
+ Ensure deterministic transfer (maximum delay)
+ Ensure data integrity only
+ Ensure deterministic transfer (minimum delay)
+ None
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSet0.xml
+
+
+
+ []
+
+
+
+ []
+
+ []
+ 0.0
+ 10.0
+ auto
+ on
+ auto
+ auto
+ 5
+ auto
+ 10*128*eps
+ 1000
+ 4
+ 1
+ auto
+ auto
+ 1
+ 1e-3
+ on
+ off
+ off
+ ode45
+ auto
+ auto
+ DisableAll
+ UseLocalSettings
+ Nonadaptive
+ TrustRegion
+ off
+ off
+ Fast
+ off
+ off
+ Unconstrained
+ Whenever possible
+ []
+ off
+ off
+ ode3
+
+
+ []
+
+ []
+ 1
+ [t, u]
+ xFinal
+ xInitial
+ on
+ 1000
+ off
+ off
+ off
+ off
+ Array
+ ModelDataLogs
+ on
+ off
+ on
+ on
+ off
+ on
+ off
+ streamout
+ on
+ off
+ xout
+ tout
+ yout
+ logsout
+ dsmout
+ RefineOutputTimes
+ []
+ out
+ 1
+ off
+ timeseries
+ out.mat
+ [-inf, inf]
+
+
+
+ BooleansAsBitfields |
+ PassReuseOutputArgsAs |
+ PassReuseOutputArgsThreshold |
+ ZeroExternalMemoryAtStartup |
+ ZeroInternalMemoryAtStartup |
+ OptimizeModelRefInitCode |
+ NoFixptDivByZeroProtection |
+ UseSpecifiedMinMax |
+ EfficientTunableParamExpr |
+
+
+ []
+ on
+ on
+ on
+ Tunable
+ off
+ off
+ off
+ off
+ double
+ off
+ off
+ on
+ on
+ off
+ off
+ on
+ off
+
+ on
+ off
+ uint_T
+ Same as modeled
+ on
+ 64
+ Structure reference
+ 12
+ 2147483647
+ on
+ 5
+ off
+ off
+ Native Integer
+ on
+ on
+ off
+ off
+ off
+ on
+ inf
+ Inherit from target
+ on
+ off
+ off
+ off
+ on
+ on
+ off
+ off
+ level2
+ Balanced
+ on
+ off
+ off
+ GradualUnderflow
+ off
+
+
+
+ UseOnlyExistingSharedCode |
+
+
+ []
+ error
+ none
+ none
+ none
+ error
+ none
+ UseLocalSettings
+ UseLocalSettings
+ UseLocalSettings
+ warning
+ warning
+ warning
+ warning
+ on
+ Classic
+ none
+ off
+ UseLocalSettings
+ warning
+ warning
+ none
+ error
+ warning
+ warning
+ warning
+ warning
+ error
+ error
+ error
+ none
+ warning
+ none
+ warning
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ none
+ none
+ none
+ none
+ none
+ none
+ warning
+ none
+ warning
+ warning
+ warning
+ error
+ none
+ error
+ none
+ warning
+ warning
+ UseLocalSettings
+ on
+ off
+ none
+ error
+ none
+ none
+ warning
+ warning
+ none
+ warning
+ error
+ warning
+ warning
+ error
+ none
+ warning
+ none
+ warning
+ ErrorLevel1
+ WarnAndRepair
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ error
+ warning
+ warning
+ none
+ warning
+ warning
+ all
+ warning
+ on
+ warning
+ warning
+ off
+
+ none
+ off
+ warning
+ none
+
+
+ []
+
+ []
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ Undefined
+ Unspecified
+ 32
+ on
+ off
+ 32-bit Generic
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ on
+ off
+ Undefined
+ Unspecified
+ 32
+ 32
+ 32
+ Specified
+ off
+ on
+ on
+ on
+ EmbeddedCoderHSP
+
+
+ []
+
+ []
+ IfOutOfDateOrStructuralChange
+ on
+ error
+ off
+ on
+ None
+ Multi
+ Infer from blocks in model
+
+ on
+ off
+ off
+ off
+
+
+ []
+
+ []
+
+
+
+
+ []
+
+
+
+
+
+
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ off
+ on
+ 50
+ on
+ on
+ on
+ 65536
+ off
+ []
+ NotSpecified
+ UseInterfaceOnly
+ off
+ None
+
+ generic
+ C
+ off
+ 200
+ 1024
+ off
+
+
+ mkl-dnn
+ on
+
+
+
+ IncludeHyperlinkInReport |
+ GenerateTraceInfo |
+ GenerateTraceReport |
+ GenerateTraceReportSl |
+ GenerateTraceReportSf |
+ GenerateTraceReportEml |
+ PortableWordSizes |
+ GenerateWebview |
+ GenerateCodeMetricsReport |
+ GenerateCodeReplacementReport |
+ GenerateMissedCodeReplacementReport |
+ GenerateErtSFunction |
+ CreateSILPILBlock |
+ CodeExecutionProfiling |
+ CodeProfilingSaveOptions |
+ CodeProfilingInstrumentation |
+ CodeStackProfiling |
+
+
+ grt.tlc
+ None
+ off
+ off
+
+ off
+ make_rtw
+ on
+ off
+
+ grt_default_tmf
+
+ off
+ on
+ off
+ []
+ off
+ off
+ off
+ off
+ off
+ off
+
+
+
+
+
+
+
+
+
+
+
+ Automatically locate an installed toolchain
+ Faster Builds
+ []
+ off
+ off
+ off
+ None
+ off
+ executionProfile
+ SummaryOnly
+ off
+ off
+ C
+ None
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ []
+
+ Off
+ 1024
+
+ -1
+ discrete
+ 200
+ off
+ 1024
+ on
+ on
+ on
+ off
+ 3.5
+
+
+ 0
+ none
+ on
+ 19.05
+ unspecified
+
+
+
+ IgnoreCustomStorageClasses |
+ IgnoreTestpoints |
+ InsertBlockDesc |
+ InsertPolySpaceComments |
+ SFDataObjDesc |
+ MATLABFcnDesc |
+ SimulinkDataObjDesc |
+ DefineNamingRule |
+ SignalNamingRule |
+ ParamNamingRule |
+ InlinedPrmAccess |
+ CustomSymbolStr |
+ CustomSymbolStrGlobalVar |
+ CustomSymbolStrType |
+ CustomSymbolStrField |
+ CustomSymbolStrFcn |
+ CustomSymbolStrFcnArg |
+ CustomSymbolStrBlkIO |
+ CustomSymbolStrTmpVar |
+ CustomSymbolStrMacro |
+ ReqsInCode |
+ BlockCommentType |
+ InternalIdentifier |
+ CustomSymbolStrModelFcn |
+ CustomSymbolStrUtil |
+ CustomSymbolStrEmxType |
+ CustomSymbolStrEmxFcn |
+ CustomUserTokenString |
+
+
+ []
+
+ off
+ on
+ Auto
+ on
+ off
+ 31
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ 1
+ 8
+ $R$N$M
+ $N$R$M_T
+ $N$M
+ $R$N$M$F
+ $R$N
+ rt$I$N$M
+ rtb_$N$M
+ $N$M
+ $R$N$M
+ $N$C
+ emxArray_$M$N
+ emx$M$N
+
+
+ None
+
+ None
+
+ None
+
+ off
+ off
+ on
+ BlockPathComment
+ on
+ off
+ off
+
+ Shortened
+ Literals
+ off
+ off
+ []
+ error
+
+
+
+ GeneratePreprocessorConditionals |
+ IncludeMdlTerminateFcn |
+ RemoveResetFunc |
+ SuppressErrorStatus |
+ ERTCustomFileBanners |
+ GenerateSampleERTMain |
+ GenerateTestInterfaces |
+ ModelStepFunctionPrototypeControlCompliant |
+ CPPClassGenCompliant |
+ PortableWordSizes |
+ PurelyIntegerCode |
+ SupportComplex |
+ SupportAbsoluteTime |
+ SupportContinuousTime |
+ SupportNonInlinedSFcns |
+ PreserveStateflowLocalDataDimensions |
+ GenerateAllocFcn |
+ ExistingSharedCode |
+ ParenthesesLevel |
+ ERTMultiwordTypeDef |
+ MultiwordTypeDef |
+ RemoveDisableFunc |
+
+
+ []
+ ansi_tfl_table_tmw.mat
+
+
+ NOT IN USE
+ C89/C90 (ANSI)
+ None
+ Auto
+ System defined
+ 2048
+ 256
+ on
+ off
+
+ off
+ off
+ on
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ Auto
+ off
+ on
+ rt_
+ on
+ Nonreusable function
+ off
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ Nominal
+ Nominal
+ Simulink.SoftwareTarget.GRTCustomization
+ off
+ on
+ off
+ off
+ on
+ off
+ on
+ on
+ []
+ []
+ 1,2,3,4,...
+ Size,Breakpoints,Table
+ Size,Breakpoints,Table
+ Column-major
+ error
+ $R$E
+ $R$E
+ $R_data
+
+ None |
+
+ off
+ off
+ off
+ off
+ 1000000
+ 0
+ ext_comm
+
+ Level1
+ off
+ off
+ off
+ off
+ off
+ Error
+
+
+
+
+ []
+ Simulink Coverage Configuration Component
+ []
+ Simulink Coverage
+ off
+ EntireSystem
+ on
+ off
+ /
+ covdata
+
+ dw
+
+
+ off
+ on
+ on
+ on
+ on
+ covCumulativeData
+ off
+ on
+ slcov_output/$ModelName$
+ $ModelName$_cvdata
+ on
+ off
+
+ off
+ on
+ 1e-05
+ 0.01
+ off
+ 0
+ 0
+ Masking
+
+
+ Configuration
+ Solver
+ [ 200, 197, 1080, 827 ]
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml
+
+
+ Configuration
+
+
+__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml
+
+
+ 0
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ Unset
+ 0
+ Simulink
+ 0
+ 0
+ 1
+
+
+__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml
+
+
+
+
+
+
+
+
+ false
+ Default
+ -2147483648
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml
+
+
+
+
+ HighNumberFirst
+ Default
+
+
+
+
+
+ Default
+ graph.Graph
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_8.xml
+
+
+ f/code
+ [364 306 161 561]
+ [0 156.75 0 153.75]
+ [1 1 1366 768 1.25]
+ 8
+ LIBRARY_TOOLBAR
+ 6
+ CLUSTER_CHART
+ EML_CHART
+ 2
+ 1
+
+ f
+
+
+
+ eML_blk_kernel()
+ [18 64.5 118 66]
+ 12
+ SUBCHART
+ 8
+ FUNC_STATE
+ CLUSTER_STATE
+
+ 1
+ function output = f(x,y)
+%%#eml
+output=x-y;
+if(y<0)
+ if(x<=1)
+ output = x-y;
+ elseif(x>1)
+ output = x+y;
+ end
+elseif(y==0)
+ if(x<=1)
+ output = x*y;
+ elseif(x>1)
+ output = x;
+ end
+elseif(y>0)
+ if(x<=1)
+ output = x/y;
+ elseif(x>1)
+ output = y;
+ end
+end
+
+ Matrix(4,1)
+[205.0, 227.0, 1080.0, 733.0]
+ 1
+
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ {eML_blk_kernel();}
+ [32.125 19.875 102.544 14.964]
+ 12
+
+ [0 0 1 0 23.5747 14.625 0 0]
+
+
+ 3
+ [1 0 -1 0 23.5747 42.5747 0 0]
+
+ [23.5747 24.9468]
+ [23.575 23.575 14.625 34.575]
+ 8
+ SMART
+
+ BOTH_STICK
+
+ 1
+
+
+ [23.5747 49.5747 7]
+ 8
+ CONNECTIVE_JUNCTION
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml
+
+
+
+ 80000046
+
+
+ Default Simulink S-Function Target.
+
+
+
+
+
+ 7
+ f/code
+ 8
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml
+
+
+ [361, 208, 947, 921]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ Simulink
+
+ [35, 38, 65, 52]
+ -1
+
+
+ [35, 38, 65, 52]
+ -2
+ 2
+
+
+ [2, 1]
+ [250, 49, 320, 96]
+ -3
+ 1.31
+ Stateflow.Translate.translate
+ ExplicitOnly
+ on
+ off
+ MATLAB Function
+
+
+
+ [35, 53, 65, 67]
+ -4
+
+
+ 1
+ 4#out:1
+ 3#in:1
+
+
+ 2
+ 5#out:1
+ 3#in:2
+
+
+ 3
+ 3#out:1
+ 6#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml
+
+
+ [185, 218, 828, 891]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ 25
+ Simulink
+
+ [20, 101, 40, 119]
+ -1
+
+
+ [20, 136, 40, 154]
+ -2
+ 2
+
+
+ [1, 1]
+ [270, 230, 320, 270]
+ 2
+ 1
+
+
+ Stateflow S-Function 2
+ [2, 2]
+ [180, 100, 230, 160]
+ 1
+ sf_sfun
+ [2 2]
+ off
+ off
+ off
+
+ 2
+ output
+
+
+
+ [460, 241, 480, 259]
+ 3
+
+
+ [460, 101, 480, 119]
+ -6
+
+
+ 6
+ 3::1#out:1
+ [120, 0]
+ 3::23#in:1
+
+
+ 7
+ 3::18#out:1
+ 3::23#in:2
+
+
+ output
+ 8
+ [0, 0]
+ 3::23#out:2
+ 3::19#in:1
+
+
+ 9
+ 3::24#out:1
+ 3::25#in:1
+
+
+ 10
+ 3::23#out:1
+ 3::24#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml
+
+
+ [645, 126, 1313, 799]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ on
+ off
+ Deduce
+ simulink-default.rpt
+ 6
+ Simulink
+
+ [2, 1]
+ [105, 64, 270, 131]
+ -1
+ 1.12
+ on
+
+ TTdiag Copy
+ TTdiag Delete
+ TTdiag Open Simulink
+ off
+
+ port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('green');text(0.5, 0.1, 'Checked', 'horizontalAlignment', 'center')
+ Table Block
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml
+
+
+
+
+ 1
+ [645.0, 126.0, 668.0, 673.0]
+
+ 0
+ Left
+ 50
+ 50
+ 9
+ Unset
+
+
+ 1
+
+
+ 1
+ 1
+ SimulinkTopLevel
+ 0
+ [630.0, 438.0]
+ 1.0
+ [-127.5, -114.5]
+ [-127.5, -114.5, 630.0, 438.0]
+
+
+
+ GLUE2:PropertyInspector
+ Property Inspector
+ 0
+
+
+ 0
+ Right
+ 640
+ 480
+ Unset
+
+
+ Simulink:Editor:ReferencedFiles
+ Referenced Files
+ 0
+
+ {"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"}
+
+ 0
+ Left
+ 640
+ 480
+ Unset
+
+
+ AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAApwAAAHzAAAAAQAAAAIAAAABAAAAAvwAAAAA
+
+ 167c9499-69fb-4016-9e96-f867813b6e8a
+
+
+
+
+
+__MWOPC_PACKAGE_END__
+=======
Model {
Name "ReadabilityExample"
Version 7.5
@@ -1214,3 +6096,4 @@ Stateflow {
linkNode [1 0 0]
}
}
+>>>>>>> 6e8ce001ab8e32d0a66c7fab9f1c8f2d9f1bad69
diff --git a/Examples/ReadabilityExample.mdl.r2010a b/Examples/ReadabilityExample.mdl.r2010a
new file mode 100644
index 0000000000000000000000000000000000000000..6b727d404a29d25a13c121a5d587def6ef31eed4
--- /dev/null
+++ b/Examples/ReadabilityExample.mdl.r2010a
@@ -0,0 +1,1216 @@
+Model {
+ Name "ReadabilityExample"
+ Version 7.5
+ MdlSubVersion 0
+ GraphicalInterface {
+ NumRootInports 0
+ NumRootOutports 0
+ ParameterArgumentNames ""
+ ComputedModelVersion "1.3"
+ NumModelReferences 0
+ NumTestPointedSignals 0
+ }
+ SavedCharacterEncoding "UTF-8"
+ SaveDefaultBlockParams on
+ ScopeRefreshTime 0.035000
+ OverrideScopeRefreshTime on
+ DisableAllScopes off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ MinMaxOverflowArchiveMode "Overwrite"
+ MaxMDLFileLineLength 120
+ Created "Wed Dec 22 13:30:47 2010"
+ Creator "lawford"
+ UpdateHistory "UpdateHistoryNever"
+ ModifiedByFormat "%"
+ LastModifiedBy "matthew"
+ ModifiedDateFormat "%"
+ LastModifiedDate "Thu May 15 16:34:20 2014"
+ RTWModifiedTimeStamp 322072433
+ ModelVersionFormat "1.%"
+ ConfigurationManager "None"
+ SampleTimeColors off
+ SampleTimeAnnotations off
+ LibraryLinkDisplay "none"
+ WideLines off
+ ShowLineDimensions off
+ ShowPortDataTypes off
+ ShowLoopsOnError on
+ IgnoreBidirectionalLines off
+ ShowStorageClass off
+ ShowTestPointIcons on
+ ShowSignalResolutionIcons on
+ ShowViewerIcons on
+ SortedOrder off
+ ExecutionContextIcon off
+ ShowLinearizationAnnotations on
+ BlockNameDataTip off
+ BlockParametersDataTip off
+ BlockDescriptionStringDataTip off
+ ToolBar on
+ StatusBar on
+ BrowserShowLibraryLinks off
+ BrowserLookUnderMasks off
+ SimulationMode "normal"
+ LinearizationMsg "none"
+ Profile off
+ ParamWorkspaceSource "MATLABWorkspace"
+ AccelSystemTargetFile "accel.tlc"
+ AccelTemplateMakefile "accel_default_tmf"
+ AccelMakeCommand "make_rtw"
+ TryForcingSFcnDF off
+ RecordCoverage off
+ CovPath "/"
+ CovSaveName "covdata"
+ CovMetricSettings "dw"
+ CovNameIncrementing off
+ CovHtmlReporting on
+ CovForceBlockReductionOff on
+ covSaveCumulativeToWorkspaceVar on
+ CovSaveSingleToWorkspaceVar on
+ CovCumulativeVarName "covCumulativeData"
+ CovCumulativeReport off
+ CovReportOnPause on
+ CovModelRefEnable "Off"
+ CovExternalEMLEnable off
+ ExtModeBatchMode off
+ ExtModeEnableFloating on
+ ExtModeTrigType "manual"
+ ExtModeTrigMode "normal"
+ ExtModeTrigPort "1"
+ ExtModeTrigElement "any"
+ ExtModeTrigDuration 1000
+ ExtModeTrigDurationFloating "auto"
+ ExtModeTrigHoldOff 0
+ ExtModeTrigDelay 0
+ ExtModeTrigDirection "rising"
+ ExtModeTrigLevel 0
+ ExtModeArchiveMode "off"
+ ExtModeAutoIncOneShot off
+ ExtModeIncDirWhenArm off
+ ExtModeAddSuffixToVar off
+ ExtModeWriteAllDataToWs off
+ ExtModeArmWhenConnect on
+ ExtModeSkipDownloadWhenConnect off
+ ExtModeLogAll on
+ ExtModeAutoUpdateStatusClock on
+ BufferReuse on
+ ShowModelReferenceBlockVersion off
+ ShowModelReferenceBlockIO off
+ Array {
+ Type "Handle"
+ Dimension 1
+ Simulink.ConfigSet {
+ $ObjectID 1
+ Version "1.10.0"
+ Array {
+ Type "Handle"
+ Dimension 8
+ Simulink.SolverCC {
+ $ObjectID 2
+ Version "1.10.0"
+ StartTime "0.0"
+ StopTime "10.0"
+ AbsTol "auto"
+ FixedStep "auto"
+ InitialStep "auto"
+ MaxNumMinSteps "-1"
+ MaxOrder 5
+ ZcThreshold "auto"
+ ConsecutiveZCsStepRelTol "10*128*eps"
+ MaxConsecutiveZCs "1000"
+ ExtrapolationOrder 4
+ NumberNewtonIterations 1
+ MaxStep "auto"
+ MinStep "auto"
+ MaxConsecutiveMinStep "1"
+ RelTol "1e-3"
+ SolverMode "Auto"
+ Solver "ode45"
+ SolverName "ode45"
+ SolverJacobianMethodControl "auto"
+ ShapePreserveControl "DisableAll"
+ ZeroCrossControl "UseLocalSettings"
+ ZeroCrossAlgorithm "Nonadaptive"
+ AlgebraicLoopSolver "TrustRegion"
+ SolverResetMethod "Fast"
+ PositivePriorityOrder off
+ AutoInsertRateTranBlk off
+ SampleTimeConstraint "Unconstrained"
+ InsertRTBMode "Whenever possible"
+ }
+ Simulink.DataIOCC {
+ $ObjectID 3
+ Version "1.10.0"
+ Decimation "1"
+ ExternalInput "[t, u]"
+ FinalStateName "xFinal"
+ InitialState "xInitial"
+ LimitDataPoints on
+ MaxDataPoints "1000"
+ LoadExternalInput off
+ LoadInitialState off
+ SaveFinalState off
+ SaveCompleteFinalSimState off
+ SaveFormat "Array"
+ SaveOutput on
+ SaveState off
+ SignalLogging on
+ DSMLogging on
+ InspectSignalLogs off
+ SaveTime on
+ ReturnWorkspaceOutputs off
+ StateSaveName "xout"
+ TimeSaveName "tout"
+ OutputSaveName "yout"
+ SignalLoggingName "logsout"
+ DSMLoggingName "dsmout"
+ OutputOption "RefineOutputTimes"
+ OutputTimes "[]"
+ ReturnWorkspaceOutputsName "out"
+ Refine "1"
+ }
+ Simulink.OptimizationCC {
+ $ObjectID 4
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 8
+ Cell "BooleansAsBitfields"
+ Cell "PassReuseOutputArgsAs"
+ Cell "PassReuseOutputArgsThreshold"
+ Cell "ZeroExternalMemoryAtStartup"
+ Cell "ZeroInternalMemoryAtStartup"
+ Cell "OptimizeModelRefInitCode"
+ Cell "NoFixptDivByZeroProtection"
+ Cell "UseSpecifiedMinMax"
+ PropName "DisabledProps"
+ }
+ BlockReduction on
+ BooleanDataType on
+ ConditionallyExecuteInputs on
+ InlineParams off
+ UseIntDivNetSlope off
+ InlineInvariantSignals off
+ OptimizeBlockIOStorage on
+ BufferReuse on
+ EnhancedBackFolding off
+ StrengthReduction off
+ EnforceIntegerDowncast on
+ ExpressionFolding on
+ BooleansAsBitfields off
+ BitfieldContainerType "uint_T"
+ EnableMemcpy on
+ MemcpyThreshold 64
+ PassReuseOutputArgsAs "Structure reference"
+ ExpressionDepthLimit 2147483647
+ FoldNonRolledExpr on
+ LocalBlockOutputs on
+ RollThreshold 5
+ SystemCodeInlineAuto off
+ StateBitsets off
+ DataBitsets off
+ UseTempVars off
+ ZeroExternalMemoryAtStartup on
+ ZeroInternalMemoryAtStartup on
+ InitFltsAndDblsToZero off
+ NoFixptDivByZeroProtection off
+ EfficientFloat2IntCast off
+ EfficientMapNaN2IntZero on
+ OptimizeModelRefInitCode off
+ LifeSpan "inf"
+ MaxStackSize "Inherit from target"
+ BufferReusableBoundary on
+ SimCompilerOptimization "Off"
+ AccelVerboseBuild off
+ }
+ Simulink.DebuggingCC {
+ $ObjectID 5
+ Version "1.10.0"
+ RTPrefix "error"
+ ConsistencyChecking "none"
+ ArrayBoundsChecking "none"
+ SignalInfNanChecking "none"
+ SignalRangeChecking "none"
+ ReadBeforeWriteMsg "UseLocalSettings"
+ WriteAfterWriteMsg "UseLocalSettings"
+ WriteAfterReadMsg "UseLocalSettings"
+ AlgebraicLoopMsg "warning"
+ ArtificialAlgebraicLoopMsg "warning"
+ SaveWithDisabledLinksMsg "warning"
+ SaveWithParameterizedLinksMsg "warning"
+ CheckSSInitialOutputMsg on
+ UnderspecifiedInitializationDetection "Classic"
+ MergeDetectMultiDrivingBlocksExec "none"
+ CheckExecutionContextPreStartOutputMsg off
+ CheckExecutionContextRuntimeOutputMsg off
+ SignalResolutionControl "UseLocalSettings"
+ BlockPriorityViolationMsg "warning"
+ MinStepSizeMsg "warning"
+ TimeAdjustmentMsg "none"
+ MaxConsecutiveZCsMsg "error"
+ SolverPrmCheckMsg "warning"
+ InheritedTsInSrcMsg "warning"
+ DiscreteInheritContinuousMsg "warning"
+ MultiTaskDSMMsg "error"
+ MultiTaskCondExecSysMsg "error"
+ MultiTaskRateTransMsg "error"
+ SingleTaskRateTransMsg "none"
+ TasksWithSamePriorityMsg "warning"
+ SigSpecEnsureSampleTimeMsg "warning"
+ CheckMatrixSingularityMsg "none"
+ IntegerOverflowMsg "warning"
+ Int32ToFloatConvMsg "warning"
+ ParameterDowncastMsg "error"
+ ParameterOverflowMsg "error"
+ ParameterUnderflowMsg "none"
+ ParameterPrecisionLossMsg "warning"
+ ParameterTunabilityLossMsg "warning"
+ FixptConstUnderflowMsg "none"
+ FixptConstOverflowMsg "none"
+ FixptConstPrecisionLossMsg "none"
+ UnderSpecifiedDataTypeMsg "none"
+ UnnecessaryDatatypeConvMsg "none"
+ VectorMatrixConversionMsg "none"
+ InvalidFcnCallConnMsg "error"
+ FcnCallInpInsideContextMsg "Use local settings"
+ SignalLabelMismatchMsg "none"
+ UnconnectedInputMsg "warning"
+ UnconnectedOutputMsg "warning"
+ UnconnectedLineMsg "warning"
+ SFcnCompatibilityMsg "none"
+ UniqueDataStoreMsg "none"
+ BusObjectLabelMismatch "warning"
+ RootOutportRequireBusObject "warning"
+ AssertControl "UseLocalSettings"
+ EnableOverflowDetection off
+ ModelReferenceIOMsg "none"
+ ModelReferenceVersionMismatchMessage "none"
+ ModelReferenceIOMismatchMessage "none"
+ ModelReferenceCSMismatchMessage "none"
+ UnknownTsInhSupMsg "warning"
+ ModelReferenceDataLoggingMessage "warning"
+ ModelReferenceSymbolNameMessage "warning"
+ ModelReferenceExtraNoncontSigs "error"
+ StateNameClashWarn "warning"
+ SimStateInterfaceChecksumMismatchMsg "warning"
+ StrictBusMsg "ErrorLevel1"
+ BusNameAdapt "WarnAndRepair"
+ NonBusSignalsTreatedAsBus "none"
+ LoggingUnavailableSignals "error"
+ BlockIODiagnostic "none"
+ }
+ Simulink.HardwareCC {
+ $ObjectID 6
+ Version "1.10.0"
+ ProdBitPerChar 8
+ ProdBitPerShort 16
+ ProdBitPerInt 32
+ ProdBitPerLong 32
+ ProdIntDivRoundTo "Undefined"
+ ProdEndianess "Unspecified"
+ ProdWordSize 32
+ ProdShiftRightIntArith on
+ ProdHWDeviceType "32-bit Generic"
+ TargetBitPerChar 8
+ TargetBitPerShort 16
+ TargetBitPerInt 32
+ TargetBitPerLong 32
+ TargetShiftRightIntArith on
+ TargetIntDivRoundTo "Undefined"
+ TargetEndianess "Unspecified"
+ TargetWordSize 32
+ TargetTypeEmulationWarnSuppressLevel 0
+ TargetPreprocMaxBitsSint 32
+ TargetPreprocMaxBitsUint 32
+ TargetHWDeviceType "Specified"
+ TargetUnknown off
+ ProdEqTarget on
+ }
+ Simulink.ModelReferenceCC {
+ $ObjectID 7
+ Version "1.10.0"
+ UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+ CheckModelReferenceTargetMessage "error"
+ EnableParallelModelReferenceBuilds off
+ ParallelModelReferenceMATLABWorkerInit "None"
+ ModelReferenceNumInstancesAllowed "Multi"
+ PropagateVarSize "Infer from blocks in model"
+ ModelReferencePassRootInputsByReference on
+ ModelReferenceMinAlgLoopOccurrences off
+ PropagateSignalLabelsOutOfModel off
+ SupportModelReferenceSimTargetCustomCode off
+ }
+ Simulink.SFSimCC {
+ $ObjectID 8
+ Version "1.10.0"
+ SFSimEnableDebug on
+ SFSimOverflowDetection on
+ SFSimEcho on
+ SimBlas on
+ SimCtrlC on
+ SimExtrinsic on
+ SimIntegrity on
+ SimUseLocalCustomCode off
+ SimBuildMode "sf_incremental_build"
+ }
+ Simulink.RTWCC {
+ $BackupClass "Simulink.RTWCC"
+ $ObjectID 9
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 7
+ Cell "IncludeHyperlinkInReport"
+ Cell "GenerateTraceInfo"
+ Cell "GenerateTraceReport"
+ Cell "GenerateTraceReportSl"
+ Cell "GenerateTraceReportSf"
+ Cell "GenerateTraceReportEml"
+ Cell "GenerateSLWebview"
+ PropName "DisabledProps"
+ }
+ SystemTargetFile "grt.tlc"
+ GenCodeOnly off
+ MakeCommand "make_rtw"
+ GenerateMakefile on
+ TemplateMakefile "grt_default_tmf"
+ GenerateReport off
+ SaveLog off
+ RTWVerbose on
+ RetainRTWFile off
+ ProfileTLC off
+ TLCDebug off
+ TLCCoverage off
+ TLCAssert off
+ ProcessScriptMode "Default"
+ ConfigurationMode "Optimized"
+ ConfigAtBuild off
+ RTWUseLocalCustomCode off
+ RTWUseSimCustomCode off
+ IncludeHyperlinkInReport off
+ LaunchReport off
+ TargetLang "C"
+ IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+ IncludeERTFirstTime off
+ GenerateTraceInfo off
+ GenerateTraceReport off
+ GenerateTraceReportSl off
+ GenerateTraceReportSf off
+ GenerateTraceReportEml off
+ GenerateCodeInfo off
+ RTWCompilerOptimization "Off"
+ CheckMdlBeforeBuild "Off"
+ CustomRebuildMode "OnUpdate"
+ Array {
+ Type "Handle"
+ Dimension 2
+ Simulink.CodeAppCC {
+ $ObjectID 10
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 21
+ Cell "IgnoreCustomStorageClasses"
+ Cell "IgnoreTestpoints"
+ Cell "InsertBlockDesc"
+ Cell "InsertPolySpaceComments"
+ Cell "SFDataObjDesc"
+ Cell "MATLABFcnDesc"
+ Cell "SimulinkDataObjDesc"
+ Cell "DefineNamingRule"
+ Cell "SignalNamingRule"
+ Cell "ParamNamingRule"
+ Cell "InlinedPrmAccess"
+ Cell "CustomSymbolStr"
+ Cell "CustomSymbolStrGlobalVar"
+ Cell "CustomSymbolStrType"
+ Cell "CustomSymbolStrField"
+ Cell "CustomSymbolStrFcn"
+ Cell "CustomSymbolStrFcnArg"
+ Cell "CustomSymbolStrBlkIO"
+ Cell "CustomSymbolStrTmpVar"
+ Cell "CustomSymbolStrMacro"
+ Cell "ReqsInCode"
+ PropName "DisabledProps"
+ }
+ ForceParamTrailComments off
+ GenerateComments on
+ IgnoreCustomStorageClasses on
+ IgnoreTestpoints off
+ IncHierarchyInIds off
+ MaxIdLength 31
+ PreserveName off
+ PreserveNameWithParent off
+ ShowEliminatedStatement off
+ IncAutoGenComments off
+ SimulinkDataObjDesc off
+ SFDataObjDesc off
+ IncDataTypeInIds off
+ MangleLength 1
+ CustomSymbolStrGlobalVar "$R$N$M"
+ CustomSymbolStrType "$N$R$M_T"
+ CustomSymbolStrField "$N$M"
+ CustomSymbolStrFcn "$R$N$M$F"
+ CustomSymbolStrFcnArg "rt$I$N$M"
+ CustomSymbolStrBlkIO "rtb_$N$M"
+ CustomSymbolStrTmpVar "$N$M"
+ CustomSymbolStrMacro "$R$N$M"
+ DefineNamingRule "None"
+ ParamNamingRule "None"
+ SignalNamingRule "None"
+ InsertBlockDesc off
+ SimulinkBlockComments on
+ EnableCustomComments off
+ InlinedPrmAccess "Literals"
+ ReqsInCode off
+ UseSimReservedNames off
+ }
+ Simulink.GRTTargetCC {
+ $BackupClass "Simulink.TargetCC"
+ $ObjectID 11
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 17
+ Cell "GeneratePreprocessorConditionals"
+ Cell "IncludeMdlTerminateFcn"
+ Cell "CombineOutputUpdateFcns"
+ Cell "SuppressErrorStatus"
+ Cell "ERTCustomFileBanners"
+ Cell "GenerateSampleERTMain"
+ Cell "GenerateTestInterfaces"
+ Cell "ModelStepFunctionPrototypeControlCompliant"
+ Cell "CPPClassGenCompliant"
+ Cell "PortableWordSizes"
+ Cell "PurelyIntegerCode"
+ Cell "SupportComplex"
+ Cell "SupportAbsoluteTime"
+ Cell "SupportContinuousTime"
+ Cell "SupportNonInlinedSFcns"
+ Cell "MultiInstanceERTCode"
+ Cell "SupportNonFinite"
+ PropName "DisabledProps"
+ }
+ TargetFcnLib "ansi_tfl_table_tmw.mat"
+ TargetLibSuffix ""
+ TargetPreCompLibLocation ""
+ TargetFunctionLibrary "ANSI_C"
+ UtilityFuncGeneration "Auto"
+ ERTMultiwordTypeDef "System defined"
+ ERTCodeCoverageTool "None"
+ ERTMultiwordLength 256
+ MultiwordLength 2048
+ GenerateFullHeader on
+ GenerateSampleERTMain off
+ GenerateTestInterfaces off
+ IsPILTarget off
+ ModelReferenceCompliant on
+ ParMdlRefBuildCompliant on
+ CompOptLevelCompliant on
+ IncludeMdlTerminateFcn on
+ GeneratePreprocessorConditionals "Disable all"
+ CombineOutputUpdateFcns off
+ SuppressErrorStatus off
+ ERTFirstTimeCompliant off
+ IncludeFileDelimiter "Auto"
+ ERTCustomFileBanners off
+ SupportAbsoluteTime on
+ LogVarNameModifier "rt_"
+ MatFileLogging on
+ MultiInstanceERTCode off
+ SupportNonFinite on
+ SupportComplex on
+ PurelyIntegerCode off
+ SupportContinuousTime on
+ SupportNonInlinedSFcns on
+ SupportVariableSizeSignals off
+ EnableShiftOperators on
+ ParenthesesLevel "Nominal"
+ PortableWordSizes off
+ ModelStepFunctionPrototypeControlCompliant off
+ CPPClassGenCompliant off
+ AutosarCompliant off
+ UseMalloc off
+ ExtMode off
+ ExtModeStaticAlloc off
+ ExtModeTesting off
+ ExtModeStaticAllocSize 1000000
+ ExtModeTransport 0
+ ExtModeMexFile "ext_comm"
+ ExtModeIntrfLevel "Level1"
+ RTWCAPISignals off
+ RTWCAPIParams off
+ RTWCAPIStates off
+ GenerateASAP2 off
+ }
+ PropName "Components"
+ }
+ }
+ PropName "Components"
+ }
+ Name "Configuration"
+ CurrentDlgPage "Solver"
+ ConfigPrmDlgPosition " [ 200, 197, 1080, 827 ] "
+ }
+ PropName "ConfigurationSets"
+ }
+ Simulink.ConfigSet {
+ $PropName "ActiveConfigurationSet"
+ $ObjectID 1
+ }
+ BlockDefaults {
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ NamePlacement "normal"
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ ShowName on
+ BlockRotation 0
+ BlockMirror off
+ }
+ AnnotationDefaults {
+ HorizontalAlignment "center"
+ VerticalAlignment "middle"
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ UseDisplayTextAsClickCallback off
+ }
+ LineDefaults {
+ FontName "Helvetica"
+ FontSize 9
+ FontWeight "normal"
+ FontAngle "normal"
+ }
+ BlockParameterDefaults {
+ Block {
+ BlockType Demux
+ Outputs "4"
+ DisplayOption "none"
+ BusSelectionMode off
+ }
+ Block {
+ BlockType Inport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ LatchByDelayingOutsideSignal off
+ LatchInputForFeedbackSignals off
+ Interpolate on
+ }
+ Block {
+ BlockType Outport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ SourceOfInitialOutputValue "Dialog"
+ OutputWhenDisabled "held"
+ InitialOutput "[]"
+ }
+ Block {
+ BlockType "S-Function"
+ FunctionName "system"
+ SFunctionModules "''"
+ PortCounts "[]"
+ SFunctionDeploymentMode off
+ }
+ Block {
+ BlockType SubSystem
+ ShowPortLabels "FromPortIcon"
+ Permissions "ReadWrite"
+ PermitHierarchicalResolution "All"
+ TreatAsAtomicUnit off
+ CheckFcnCallInpInsideContextMsg off
+ SystemSampleTime "-1"
+ RTWFcnNameOpts "Auto"
+ RTWFileNameOpts "Auto"
+ RTWMemSecFuncInitTerm "Inherit from model"
+ RTWMemSecFuncExecute "Inherit from model"
+ RTWMemSecDataConstants "Inherit from model"
+ RTWMemSecDataInternal "Inherit from model"
+ RTWMemSecDataParameters "Inherit from model"
+ SimViewingDevice off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ }
+ Block {
+ BlockType Terminator
+ }
+ }
+ System {
+ Name "ReadabilityExample"
+ Location [683, 246, 1311, 741]
+ Open on
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ ReportName "simulink-default.rpt"
+ SIDHighWatermark 6
+ Block {
+ BlockType SubSystem
+ Name "f"
+ SID 1
+ Ports [2, 1]
+ Position [105, 64, 270, 131]
+ LibraryVersion "1.12"
+ UserDataPersistent on
+ UserData "DataTag0"
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5,"
+ " 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('green');text(0.5, 0.1, 'Checked', 'horizonta"
+ "lAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "f"
+ Location [399, 328, 945, 863]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 4
+ Position [35, 38, 65, 52]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 5
+ Position [35, 38, 65, 52]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType SubSystem
+ Name "code"
+ SID 3
+ Ports [2, 1]
+ Position [250, 49, 320, 96]
+ LibraryVersion "1.31"
+ PermitHierarchicalResolution "ExplicitOnly"
+ TreatAsAtomicUnit on
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskType "Stateflow"
+ MaskDescription "Embedded MATLAB block"
+ MaskDisplay "disp('f');"
+ MaskSelfModifiable on
+ MaskIconFrame on
+ MaskIconOpaque off
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "code"
+ Location [223, 338, 826, 833]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ SIDHighWatermark 22
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 1
+ Position [20, 101, 40, 119]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 18
+ Position [20, 136, 40, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Demux
+ Name " Demux "
+ SID 21
+ Ports [1, 1]
+ Position [270, 230, 320, 270]
+ Outputs "1"
+ }
+ Block {
+ BlockType "S-Function"
+ Name " SFunction "
+ SID 20
+ Tag "Stateflow S-Function ReadabilityExample 2"
+ Ports [2, 2]
+ Position [180, 100, 230, 160]
+ FunctionName "sf_sfun"
+ PortCounts "[2 2]"
+ EnableBusSupport off
+ Port {
+ PortNumber 2
+ Name "output"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ }
+ Block {
+ BlockType Terminator
+ Name " Terminator "
+ SID 22
+ Position [460, 241, 480, 259]
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 19
+ Position [460, 101, 480, 119]
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ Points [120, 0]
+ DstBlock " SFunction "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 2
+ }
+ Line {
+ Name "output"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 2
+ DstBlock "output"
+ DstPort 1
+ }
+ Line {
+ SrcBlock " Demux "
+ SrcPort 1
+ DstBlock " Terminator "
+ DstPort 1
+ }
+ Line {
+ SrcBlock " SFunction "
+ SrcPort 1
+ DstBlock " Demux "
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 6
+ Position [35, 53, 65, 67]
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 2
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 1
+ DstBlock "output"
+ DstPort 1
+ }
+ }
+ }
+ }
+}
+MatData {
+ NumRecords 1
+ DataRecord {
+ Tag DataTag0
+ Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ! !0 X # + !@ @ ) 4"
+ " ( 0 ) L ! ( \"0+ %)30 . \\\"L 8 ( @ % \" $ ! 0 "
+ " % 0 !0 $ % 34-/4P . J\"L 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'"
+ "!E !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F 8 $ 0 \\ % 0 ! "
+ "& 0 !$ 4 0 !( 5 0 !, 0 0 !0 !@ 0 ! %0 4 ! %@ 8 ! "
+ " %P !0 ! & !4 ! &0 ! ! &@ $ P $ F (0 $ G (@ $ H "
+ " %P $ I 0 # 0 \"H A 0 \"L B 0 \"P 7 0 \"T ! , ! "
+ " +@ \"$ ! +P \"( ! , !< ! ,0 $ P $ R (0 $ S (@ $ T "
+ " %P $ U 0 # 0 #8 A 0 #< B 0 #@ 7 0 #D "
+ " "
+ " . X P !@ @ $ 4 ( 0 0 ! "
+ " ! ! !X/#TQ#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX P !@ "
+ " @ $ 4 ( 0 , ! ! P!X/C$ #@ #@ & \" 8 !0 @ ! 0 "
+ " $ \"0 @ 0 X !( !@ @ - 4 ( !@ $ ! 8 8 W"
+ "0( ! 0 4 ! #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/"
+ "PX !0 !@ @ - 4 ( !P $ ! 8 < W0( ! @ 0 & @ "
+ " . . 8 ( !@ % \" $ ! 0 ) \" ! #@ #@ & \" "
+ "8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $"
+ " ! 8 8 W0( ! 0 ( # #@ $@ & \" T !0 @ & 0 $ "
+ " !@ !@ #= @ $ ! !0 $ . . 8 ( !@ % \" $ ! 0 "
+ " ) \" / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ "
+ " ! ! ( . , 8 ( ! % \" $ # 0 0 , >3PP X X !@ @ "
+ " & 4 ( 0 $ ! D ( \\#\\. , 8 ( ! % \" $ "
+ " $ 0 0 0 >3T], X X !@ @ & 4 ( 0 $ ! D ( $ "
+ ". 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ( 0 X "
+ "X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ "
+ "% \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 $ "
+ " \"0 @ #P/PX P !@ @ $ 4 ( 0 , ! ! P!Y/C #@ #@ "
+ "& \" 8 !0 @ ! 0 $ \"0 @ (0 X !( !@ @ - 4 "
+ "( !@ $ ! 8 8 W0( ! 0 @ ! #@ #@ & \" 8 !0 @ !"
+ " 0 $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! D ( "
+ " \\#\\. . 8 ( !@ % \" $ ! 0 ) \" / _#@ % "
+ "& \" T !0 @ ( 0 $ !@ \" #= @ $ # !P D * @ X "
+ "X !@ @ & 4 ( 0 $ ! D ( \"$ . . 8 ( !@ %"
+ " \" $ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 $ "
+ " !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 ! 0 &"
+ " & -T\" 0 $ ( 0 X X !@ @ & 4 ( 0 $ ! D ( "
+ " \\#\\. . 8 ( !@ % \" $ ! 0 ) \" / _#@ #@ "
+ "& \" 8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 "
+ "( !@ $ ! 8 8 W0( ! 0 < \" #@ # & \" 0 !0 @ "
+ "! P $ $ # '@M>0 . 2 8 ( !@ % \" $ # 0 ) & "
+ " / _ \\#\\ #P/PX !( !@ @ - 4 ( !@ $ ! 8 8 W0( !"
+ " 0 8 \" #@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ !"
+ " !P ( . , 8 ( ! % \" $ # 0 0 , >\"MY X !( !@ @ &"
+ " 4 ( 0 , ! D 8 \\#\\ #P/P / _#@ $@ & \" T "
+ " !0 @ & 0 $ !@ !@ #= @ $ ! ! ( . 2 8 ( #0 % "
+ " \" 8 ! 0 & & -T\" 0 $ ) @ X P !@ @ $ 4 ( "
+ " 0 , ! ! P!X*GD #@ $@ & \" 8 !0 @ ! P $ \"0 !@ "
+ " #P/P / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\""
+ " 0 $ & @ X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! "
+ " 0 D \" #@ # & \" 0 !0 @ ! 0 $ $ ! '@ . 2 8 ( "
+ " !@ % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - "
+ " 4 ( !@ $ ! 8 8 W0( ! 0 0 \" #@ $@ & \" T "
+ " !0 @ & 0 $ !@ !@ #= @ $ ! \"@ ( . , 8 ( ! % "
+ " \" $ # 0 0 , >\"]Y X !( !@ @ & 4 ( 0 , ! D 8 "
+ " \\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ "
+ " #= @ $ ! !@ ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" "
+ " 0 $ * @ X P !@ @ $ 4 ( 0 $ ! ! 0!Y #@ $@ & "
+ " \" 8 !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 8 8 ( "
+ " #0 % \" L ! 0 & + -T\" 0 8 # \"P P - #@ \\ "
+ "$ X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! "
+ " #@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! \" $ . "
+ " 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ \" P X !("
+ " !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! #@ $@ & "
+ " \" T !0 @ & 0 $ !@ !@ #= @ $ ! \" $ . , 8 ( "
+ " ! % \" $ ! 0 0 $ 9@ X P !@ @ $ 4 ( 0 , ! "
+ " ! P!X+'D #@ )@! & \" ( !0 @ ! 0 $ !0 $ < ! (P '-E= !I"
+ ";G!U=', 8V]U;G0 ')A;F=E !E>&-E<'0 . . 8 ( !@ % \" $ ! 0 ) \""
+ " / _#@ # & \" 8 !0 @ $ \"0 . . 8 ( !"
+ "@ % \" $ ! 0 ) \" 0(] #@ #@ & \" 8 !0 @ ! "
+ " 0 $ \"0 @ !90 X X !@ @ & 4 ( 0 $ ! D ( "
+ " . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #@ & \""
+ " 8 !0 @ ! 0 $ \"0 @ X X !@ @ & 4 ( 0"
+ " $ ! D ( . 4 X 8 ( 0 % \" 8 ! 0 . . "
+ " 8 ( @ % \" $ 0 % 0 0 $ #@ ,@\" & \" ( !0"
+ " @ ! 0 $ !0 $ \\ ! AP '!A'1?:&5"
+ "I9VAT &-O;F1I=&EO;E]T97AT7W@ !C;VYD:71I;VY?=&5X=%]Y 8V]N9&ET:6]N7W1E>'1?;V9F1)\n output = x+y;\n end\nelseif(y==0)\n if(x<=1)\n output = x*y;\n elseif(x>1)\n output = x;\n e"
+ "nd\nelseif(y>0)\n if(x<=1)\n output = x/y;\n elseif(x>1)\n output = y;\n end\nend\n"
+ editorLayout "100 M4x1[205 227 1080 733]"
+ }
+ }
+ junction {
+ id 4
+ position [23.5747 49.5747 7]
+ chart 2
+ linkNode [2 0 0]
+ subviewer 2
+ ssIdNumber 3
+ type CONNECTIVE_JUNCTION
+ }
+ transition {
+ id 5
+ labelString "{eML_blk_kernel();}"
+ labelPosition [32.125 19.875 102.544 14.964]
+ fontSize 12
+ src {
+ intersection [0 0 1 0 23.5747 14.625 0 0]
+ }
+ dst {
+ id 4
+ intersection [1 0 -1 0 23.5747 42.5747 0 0]
+ }
+ midPoint [23.5747 24.9468]
+ chart 2
+ linkNode [2 0 0]
+ dataLimits [23.575 23.575 14.625 34.575]
+ subviewer 2
+ drawStyle SMART
+ slide {
+ sticky BOTH_STICK
+ }
+ executionOrder 1
+ ssIdNumber 2
+ }
+ data {
+ id 6
+ ssIdNumber 4
+ name "x"
+ linkNode [2 0 7]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 7
+ ssIdNumber 5
+ name "y"
+ linkNode [2 6 8]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 8
+ ssIdNumber 6
+ name "output"
+ linkNode [2 7 0]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ instance {
+ id 9
+ name "f/code"
+ machine 1
+ chart 2
+ }
+ target {
+ id 10
+ name "sfun"
+ description "Default Simulink S-Function Target."
+ machine 1
+ linkNode [1 0 0]
+ }
+}
diff --git a/Examples/Simulink_type_example.mdl b/Examples/Simulink_type_example.mdl
index 45433869c0980cdac85cf40dfbbb8d6bafdf29fa..9ce547c6f18d732fdcf884bd8b868f3437f3a396 100644
--- a/Examples/Simulink_type_example.mdl
+++ b/Examples/Simulink_type_example.mdl
@@ -1,3 +1,1568 @@
+<<<<<<< HEAD
+# MathWorks OPC Text Package
+Model {
+ Version 10.4
+ Description "Simulink model saved in R2021b"
+}
+__MWOPC_PACKAGE_BEGIN__ R2021b
+__MWOPC_PART_BEGIN__ /[Content_Types].xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /_rels/.rels
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml
+
+
+ model
+ 2010-11-03T00:30:58Z
+ colin
+ pesaraamarasekera
+ 2022-05-04T19:35:06Z
+ 24.0
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml
+
+
+ application/vnd.mathworks.simulink.model
+ Simulink Model
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml
+
+
+ 9ed92304-ea9f-4551-b36e-84b89b07125b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml
+
+
+
+ 9.11.0.1809720
+ R2021b
+ Update 1
+ Nov 02 2021
+ 3710740051
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml
+
+
+
+ center
+ middle
+
+
+
+
+
+
+
+
+
+
+ 4
+ bar
+ off
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ off
+ on
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ Dialog
+ held
+ []
+ off
+ off
+ 0
+ on
+
+
+ system
+ ''
+ []
+ auto
+
+
+ FromPortIcon
+ ReadWrite
+ All
+ off
+ off
+ Sample time
+ -1
+ Auto
+ Auto
+ Auto
+ void_void
+ off
+ off
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ off
+ UseLocalSettings
+ AllNumericTypes
+ UseLocalSettings
+ off
+ off
+ NONE
+ off
+ expression
+ update diagram
+ off
+ off
+ on
+ off
+ off
+ off
+ 0
+ off
+ off
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64
+AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAADAIwAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA
+AJAjAAABAAAAAAAAAAIAAACQIwAAAAFJTQAAAAAOAAAA8CIAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAqCIAAAYAAAAI
+AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAGgi
+AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAAwAAAAAQAAAAEAAAAAAAAADgAAAAAGAAAGAAAACAAA
+AAkAAAAAAAAABQAAAAgAAADQBQAAAQAAAAEAAAAAAAAAAgAAANAFAAADAAAALAAAANgBAAA4AgAA
+OAIAACgDAACABQAA0AUAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf
+aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAQ2VsbABzdWJncmlkAGNvbmQAd2lkdGgAaGVpZ2h0AGdy
+aWRfcGIAcGJfZmxhZwBjb2xvcgBjb25kaXRpb25fdGV4dF93aWR0aABjb25kaXRpb25fdGV4dF9o
+ZWlnaHQAY29uZGl0aW9uX3RleHRfeABjb25kaXRpb25fdGV4dF95AGNvbmRpdGlvbl90ZXh0X29m
+ZnNldABncmlkX3B1c2hfd2lkdGgAbnVtX2NlbGxzAGdyaWRfaW5kZXgAckdyaWQAUkdyaWQAR3Jp
+ZDEAR3JpZDIAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBuZXdfY2VsbF9wYgBkZWxldGVfY2Vs
+bF9wYgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv
+bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAABwAAAAA
+AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAJAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAIAAAABAAA
+AAAAAAAAAAAAAAAAAAMAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAwAAAAAAAAAAAAAA
+AAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAYAAAAFAAAAAwAAAAAAAAAAAAAAAAAAAAcAAAAE
+AAAAAQAAAAAAAAAAAAAAAAAAAAgAAAADAAAABAAAAAAAAAAAAAAAAAAAAAkAAAAHAAAAAAAAAAAA
+AAAJAAAAAQAAAAEAAAAjAAAAGgAAAAEAAAAkAAAAGwAAAAEAAAAlAAAAJQAAAAEAAAAmAAAAJgAA
+AAEAAAAnAAAAJwAAAAEAAAAoAAAAKAAAAAEAAAApAAAAKQAAAAEAAAAqAAAAKgAAAAEAAAArAAAA
+AwAAAAIAAAABAAAAIAAAABoAAAABAAAAIQAAABsAAAABAAAAIgAAAAQAAAADAAAAAQAAAAgAAAAh
+AAAAAQAAABkAAAAiAAAAAQAAABoAAAAPAAAAAQAAABsAAAAAAAAABAAAAAQAAAABAAAAAAAAAAUA
+AAABAAAAAQAAAAYAAAABAAAABgAAAA4AAAABAAAABwAAAAAAAAAEAAAABwAAAAEAAAACAAAAFgAA
+AAEAAAADAAAAFwAAAAEAAAAEAAAAGAAAAAEAAAAFAAAAAAAAAAYAAAAEAAAAAQAAAAkAAAAFAAAA
+AQAAAAoAAAAGAAAAAQAAABUAAAALAAAAAQAAABYAAAAMAAAAAQAAABcAAAAOAAAAAQAAABgAAAAA
+AAAABAAAAAcAAAABAAAAEQAAABYAAAABAAAAEgAAABcAAAABAAAAEwAAABgAAAABAAAAFAAAAAAA
+AAAGAAAABAAAAAEAAAALAAAABQAAAAEAAAAMAAAABgAAAAEAAAANAAAACwAAAAEAAAAOAAAADAAA
+AAEAAAAPAAAADgAAAAEAAAAQAAAAAAAAAAQAAAADAAAAAQAAABwAAAAhAAAAAQAAAB0AAAAiAAAA
+AQAAAB4AAAAPAAAAAQAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA4A
+AAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAQAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAC
+AAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAAUAAAADAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAAB
+AAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABQAAAAEAAAAAAAAAEAAAAAUA
+AAB4PjQuNQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAFAAAA
+AQAAAAAAAAAQAAAABQAAAHg8NC41AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAcAAAADAAAADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAJAAAACAAAAAAAAAAAAPA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAAAQAA
+AAEAAAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAABgAAAAgAAAABAAAAAAAAAA4AAAA4AAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAHAAAAAwAAAA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAYAAAABAAAADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABADEAAAAOAAAASAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAQAAAABAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAEAAAAOAAAAMAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAMAAAAA4AAABIAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAAAQAAAAEA
+AAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAAAwAAAAkAAAAEAAAAAAAAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAAUAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAMAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAgAA
+AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAAUAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAMAAAAOAAAAQAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAHR5cGVfdGVzdAAA
+AAAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEA
+eAAAAA4AAACYAQAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAH
+AAAAAQAAACMAAABzZXQAAAAAaW5wdXRzAGNvdW50AAByYW5nZQAAZXhjZXB0AAAAAAAADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADw
+Pw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAECPQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAAWUAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAAEgAAAAGAAAACAAA
+AAwAAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABQAAABgAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAOAAAAUA4AAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAO
+AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEA
+AAAAAAAADgAAAGgFAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+ABYAAAABAAAAYAEAAHN1YmdyaWQAAAAAAAAAAAAAAAAAAABjb25kAAAAAAAAAAAAAAAAAAAAAAAA
+Y29uZF90ZXh0AAAAAAAAAAAAAAAAAGNlbGxfaW5kZXgAAAAAAAAAAAAAAABwYXJlbnRfZ3JpZAAA
+AAAAAAAAAAAAd2lkdGgAAAAAAAAAAAAAAAAAAAAAAGhlaWdodAAAAAAAAAAAAAAAAAAAAABncmlk
+X3BiAAAAAAAAAAAAAAAAAAAAcGJfZmxhZwAAAAAAAAAAAAAAAAAAAGNvbG9yAAAAAAAAAAAAAAAA
+AAAAAABjb25kaXRpb25fdGV4dF93aWR0aAAAY29uZGl0aW9uX3RleHRfaGVpZ2h0AGNvbmRpdGlv
+bl90ZXh0X3gAAAAAAABjb25kaXRpb25fdGV4dF95AAAAAAAAY29uZGl0aW9uX3RleHRfb2Zmc2V0
+AGdyaWRfcHVzaF93aWR0aAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAA
+AAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAA
+AAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABpQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+TkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAkQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAANEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAD5ADgAAAPgAAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAYAAAABAAAAEgAAAENlbGxzAEdyaWQxAEdyaWQyAAAA
+AAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAA
+AAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAA
+AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA
+AA4AAADIAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAPAAAA
+AQAAAIcAAABwYXJlbnRfY2VsbAAAAABwYXJlbnRfZ3JpZAAAAABjZWxscwAAAAAAAAAAAABzcGxp
+dF9wYgAAAAAAAABudW1fY2VsbHMAAAAAAABncmlkX2luZGV4AAAAAAByR3JpZAAAAAAAAAAAAABu
+ZXdfY2VsbF9wYgAAAABkZWxldGVfY2VsbF9wYgAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACQAQAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAMAAAAAQAAADwAAABDZWxsMQAAAAAAAABD
+ZWxsMgAAAAAAAAByZXN1bHQAAAAAAAByZXN1bHRfdGV4dABjb2xvcgAAAAAAAAAAAAAADgAAADAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAIAwAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAKAAAABHcmlk
+MAAAAAAAAAAAAAAAR3JpZDEAAAAAAAAAAAAAAEdyaWQyAAAAAAAAAAAAAABmdW5jdGlvbl9uYW1l
+AAAAZnVuY3Rpb25faW5wdXRzAHNldHRpbmdzAAAAAAAAAABjaGVja2VkAAAAAAAAAAAAb3BlbgAA
+AAAAAAAAAAAAAGZpZwAAAAAAAAAAAAAAAABtdWx0aV9tb2RlAAAAAAAADgAAADAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAiAAAAAYAAAAIAAAACQAAAAAAAAAF
+AAAACAAAAAEAAABYAAAAAQAAAAAAAAACAAAAWAAAAAABSU0AAAAADgAAAEgAAAAGAAAACAAAAAIA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAUAAAABAAAABQAAAE1DT1MAAAAADgAA
+AAAAAAA
+__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml
+
+
+
+ 8bcb47af-e04f-4248-b229-52b941822fda
+ maci64
+
+ %<Auto>
+ %<Auto>
+ 573579113
+ %<AutoIncrement:24.0>
+
+
+ none
+
+
+ normal
+
+ $bdroot
+
+ $bdroot |
+
+
+ |
+
+
+
+
+ warning
+
+
+
+ Ensure deterministic transfer (maximum delay)
+ Ensure data integrity only
+ Ensure deterministic transfer (minimum delay)
+ None
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSet0.xml
+
+
+
+ []
+
+
+
+ []
+
+ []
+ 0.0
+ 10.0
+ auto
+ on
+ auto
+ auto
+ 5
+ auto
+ 10*128*eps
+ 1000
+ 4
+ 1
+ auto
+ auto
+ 1
+ 1e-3
+ on
+ off
+ off
+ ode45
+ auto
+ auto
+ DisableAll
+ UseLocalSettings
+ Nonadaptive
+ TrustRegion
+ off
+ off
+ Fast
+ off
+ off
+ Unconstrained
+ Whenever possible
+ []
+ off
+ off
+ ode3
+
+
+ []
+
+ []
+ 1
+ [t, u]
+ xFinal
+ xInitial
+ on
+ 1000
+ off
+ off
+ off
+ off
+ Array
+ ModelDataLogs
+ on
+ off
+ on
+ on
+ off
+ on
+ off
+ streamout
+ on
+ off
+ xout
+ tout
+ yout
+ logsout
+ dsmout
+ RefineOutputTimes
+ []
+ out
+ 1
+ off
+ timeseries
+ out.mat
+ [-inf, inf]
+
+
+
+ BooleansAsBitfields |
+ PassReuseOutputArgsAs |
+ PassReuseOutputArgsThreshold |
+ ZeroExternalMemoryAtStartup |
+ ZeroInternalMemoryAtStartup |
+ OptimizeModelRefInitCode |
+ NoFixptDivByZeroProtection |
+ UseSpecifiedMinMax |
+ EfficientTunableParamExpr |
+
+
+ []
+ on
+ on
+ on
+ Tunable
+ off
+ off
+ off
+ off
+ double
+ off
+ off
+ on
+ on
+ off
+ off
+ on
+ off
+
+ on
+ off
+ uint_T
+ Same as modeled
+ on
+ 64
+ Structure reference
+ 12
+ 2147483647
+ on
+ 5
+ off
+ off
+ Native Integer
+ on
+ on
+ off
+ off
+ off
+ on
+ inf
+ Inherit from target
+ on
+ off
+ off
+ off
+ on
+ on
+ off
+ off
+ level2
+ Balanced
+ on
+ off
+ off
+ GradualUnderflow
+ off
+
+
+
+ UseOnlyExistingSharedCode |
+
+
+ []
+ error
+ none
+ none
+ none
+ error
+ none
+ UseLocalSettings
+ UseLocalSettings
+ UseLocalSettings
+ warning
+ warning
+ warning
+ warning
+ on
+ Classic
+ none
+ off
+ UseLocalSettings
+ warning
+ warning
+ none
+ error
+ warning
+ warning
+ warning
+ warning
+ error
+ error
+ error
+ none
+ warning
+ none
+ warning
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ none
+ none
+ none
+ none
+ none
+ none
+ warning
+ none
+ warning
+ warning
+ warning
+ error
+ none
+ error
+ none
+ warning
+ warning
+ UseLocalSettings
+ on
+ off
+ none
+ error
+ none
+ none
+ warning
+ warning
+ none
+ warning
+ error
+ warning
+ warning
+ error
+ none
+ warning
+ none
+ warning
+ ErrorLevel1
+ WarnAndRepair
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ error
+ warning
+ warning
+ none
+ warning
+ warning
+ all
+ warning
+ on
+ warning
+ warning
+ off
+
+ none
+ off
+ warning
+ none
+
+
+ []
+
+ []
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ Undefined
+ Unspecified
+ 32
+ on
+ off
+ 32-bit Generic
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ on
+ off
+ Undefined
+ Unspecified
+ 32
+ 32
+ 32
+ Specified
+ off
+ on
+ on
+ on
+ EmbeddedCoderHSP
+
+
+ []
+
+ []
+ IfOutOfDateOrStructuralChange
+ on
+ error
+ off
+ on
+ None
+ Multi
+ Infer from blocks in model
+
+ on
+ off
+ off
+ off
+
+
+ []
+
+ []
+
+
+
+
+ []
+
+
+
+
+
+
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ off
+ on
+ 50
+ on
+ on
+ on
+ 65536
+ off
+ []
+ NotSpecified
+ UseInterfaceOnly
+ off
+ None
+
+ generic
+ C
+ off
+ 200
+ 1024
+ off
+
+
+ mkl-dnn
+ on
+
+
+
+ IncludeHyperlinkInReport |
+ GenerateTraceInfo |
+ GenerateTraceReport |
+ GenerateTraceReportSl |
+ GenerateTraceReportSf |
+ GenerateTraceReportEml |
+ PortableWordSizes |
+ GenerateWebview |
+ GenerateCodeMetricsReport |
+ GenerateCodeReplacementReport |
+ GenerateMissedCodeReplacementReport |
+ GenerateErtSFunction |
+ CreateSILPILBlock |
+ CodeExecutionProfiling |
+ CodeProfilingSaveOptions |
+ CodeProfilingInstrumentation |
+ CodeStackProfiling |
+
+
+ grt.tlc
+ None
+ off
+ off
+
+ off
+ make_rtw
+ on
+ off
+
+ grt_default_tmf
+
+ off
+ on
+ off
+ []
+ off
+ off
+ off
+ off
+ off
+ off
+
+
+
+
+
+
+
+
+
+
+
+ Automatically locate an installed toolchain
+ Faster Builds
+ []
+ off
+ off
+ off
+ None
+ off
+ executionProfile
+ SummaryOnly
+ off
+ off
+ C
+ None
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ []
+
+ Off
+ 1024
+
+ -1
+ discrete
+ 200
+ off
+ 1024
+ on
+ on
+ on
+ off
+ 3.5
+
+
+ 0
+ none
+ on
+ 19.05
+ unspecified
+
+
+
+ IgnoreCustomStorageClasses |
+ IgnoreTestpoints |
+ InsertBlockDesc |
+ SFDataObjDesc |
+ SimulinkDataObjDesc |
+ DefineNamingRule |
+ SignalNamingRule |
+ ParamNamingRule |
+ InlinedPrmAccess |
+ CustomSymbolStr |
+ CustomSymbolStrGlobalVar |
+ CustomSymbolStrType |
+ CustomSymbolStrField |
+ CustomSymbolStrFcn |
+ CustomSymbolStrFcnArg |
+ CustomSymbolStrBlkIO |
+ CustomSymbolStrTmpVar |
+ CustomSymbolStrMacro |
+ ReqsInCode |
+ BlockCommentType |
+ InsertPolySpaceComments |
+ MATLABFcnDesc |
+ InternalIdentifier |
+ CustomSymbolStrModelFcn |
+ CustomSymbolStrUtil |
+ CustomSymbolStrEmxType |
+ CustomSymbolStrEmxFcn |
+ CustomUserTokenString |
+
+
+ []
+
+ off
+ on
+ Auto
+ on
+ off
+ 31
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ 1
+ 8
+ $R$N$M
+ $N$R$M_T
+ $N$M
+ $R$N$M$F
+ $R$N
+ rt$I$N$M
+ rtb_$N$M
+ $N$M
+ $R$N$M
+ $N$C
+ emxArray_$M$N
+ emx$M$N
+
+
+ None
+
+ None
+
+ None
+
+ off
+ off
+ on
+ BlockPathComment
+ on
+ off
+ off
+
+ Shortened
+ Literals
+ off
+ off
+ []
+ error
+
+
+
+ GeneratePreprocessorConditionals |
+ IncludeMdlTerminateFcn |
+ RemoveResetFunc |
+ SuppressErrorStatus |
+ ERTCustomFileBanners |
+ GenerateSampleERTMain |
+ GenerateTestInterfaces |
+ ModelStepFunctionPrototypeControlCompliant |
+ CPPClassGenCompliant |
+ PortableWordSizes |
+ PurelyIntegerCode |
+ PreserveStateflowLocalDataDimensions |
+ SupportComplex |
+ SupportAbsoluteTime |
+ SupportContinuousTime |
+ SupportNonInlinedSFcns |
+ GenerateAllocFcn |
+ ExistingSharedCode |
+ ParenthesesLevel |
+ ERTMultiwordTypeDef |
+ MultiwordTypeDef |
+ RemoveDisableFunc |
+
+
+ []
+ ansi_tfl_table_tmw.mat
+
+
+ NOT IN USE
+ C89/C90 (ANSI)
+ None
+ Auto
+ System defined
+ 2048
+ 256
+ on
+ off
+
+ off
+ off
+ on
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ Auto
+ off
+ on
+ rt_
+ on
+ Nonreusable function
+ off
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ Nominal
+ Nominal
+ Simulink.SoftwareTarget.GRTCustomization
+ off
+ on
+ off
+ off
+ on
+ off
+ on
+ on
+ []
+ []
+ 1,2,3,4,...
+ Size,Breakpoints,Table
+ Size,Breakpoints,Table
+ Column-major
+ error
+ $R$E
+ $R$E
+ $R_data
+
+ None |
+
+ off
+ off
+ off
+ off
+ 1000000
+ 0
+ ext_comm
+
+ Level1
+ off
+ off
+ off
+ off
+ off
+ Error
+
+
+
+
+ []
+ Simulink Coverage Configuration Component
+ []
+ Simulink Coverage
+ off
+ EntireSystem
+ on
+ off
+ /
+ covdata
+
+ dw
+
+
+ off
+ on
+ on
+ on
+ on
+ covCumulativeData
+ off
+ on
+ slcov_output/$ModelName$
+ $ModelName$_cvdata
+ on
+ off
+
+ off
+ on
+ 1e-05
+ 0.01
+ off
+ 0
+ 0
+ Masking
+
+
+ Configuration
+ Solver
+ [ 200, 74, 1080, 704 ]
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml
+
+
+ Configuration
+
+
+__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml
+
+
+ 0
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ Unset
+ 0
+ Simulink
+ 0
+ 0
+ 1
+
+
+__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml
+
+
+
+
+
+
+
+
+ false
+ Default
+ -2147483648
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml
+
+
+
+
+ HighNumberFirst
+ Default
+
+
+
+
+
+ Default
+ graph.Graph
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_7.xml
+
+
+ type_test/code
+ [293 257 161 328]
+ [0 156.75 0 153.75]
+ [1 1 1280 778 1.25]
+ 7
+ LIBRARY_TOOLBAR
+ 5
+ CLUSTER_CHART
+ EML_CHART
+ 2
+ 1
+
+ type_test
+
+
+
+ eML_blk_kernel()
+ [18 64.5 118 66]
+ 12
+ SUBCHART
+ 7
+ FUNC_STATE
+ CLUSTER_STATE
+
+ 1
+ function output = type_test(x)
+%%#eml
+output=1;
+if(x>4.5)
+ output = 1;
+elseif(x<4.5)
+ output = 0;
+end
+
+ Matrix(4,1)
+[205.0, 227.0, 1080.0, 733.0]
+ 1
+
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INT8_TYPE
+
+ SF_COMPLEX_INHERITED
+
+ inherit
+
+
+ int8
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ {eML_blk_kernel();}
+ [32.125 19.875 102.544 14.964]
+ 12
+
+ [0 0 1 0 23.5747 14.625 0 0]
+
+
+ 3
+ [1 0 -1 0 23.5747 42.5747 0 0]
+
+ [23.5747 24.9468]
+ [23.575 23.575 14.625 34.575]
+ 7
+ SMART
+
+ BOTH_STICK
+
+ 1
+
+
+ [23.5747 49.5747 7]
+ 7
+ CONNECTIVE_JUNCTION
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml
+
+
+
+ 80000046
+
+
+ Default Simulink S-Function Target.
+
+
+
+
+
+ 6
+ type_test/code
+ 7
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml
+
+
+ [395, 327, 933, 805]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ Simulink
+
+ [35, 38, 65, 52]
+ -1
+
+
+ [1, 1]
+ [250, 47, 320, 93]
+ -2
+ 1.31
+ Stateflow.Translate.translate
+ ExplicitOnly
+ on
+ off
+ MATLAB Function
+
+
+
+ [35, 53, 65, 67]
+ -3
+
+
+ 1
+ 4#out:1
+ 3#in:1
+
+
+ 2
+ 3#out:1
+ 5#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml
+
+
+ [219, 337, 814, 775]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ 20
+ 13
+ Simulink
+
+ [20, 101, 40, 119]
+ -1
+
+
+ [1, 1]
+ [270, 230, 320, 270]
+ 2
+ 1
+
+
+ Stateflow S-Function 2
+ [1, 2]
+ [180, 100, 230, 160]
+ 1
+ sf_sfun
+ [1 2]
+ off
+ off
+ off
+
+ 2
+ output
+
+
+
+ [460, 241, 480, 259]
+ 3
+
+
+ [460, 101, 480, 119]
+ -5
+
+
+ 5
+ 3::1#out:1
+ 3::18#in:1
+
+
+ output
+ 6
+ [0, 0]
+ 3::18#out:2
+ 3::5#in:1
+
+
+ 7
+ 3::19#out:1
+ 3::20#in:1
+
+
+ 8
+ 3::18#out:1
+ 3::19#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml
+
+
+ [720, 25, 1440, 900]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ on
+ off
+ Deduce
+ simulink-default.rpt
+ 6
+ Simulink
+
+ [1, 1]
+ [65, 47, 230, 113]
+ -1
+ 1.12
+ on
+
+ TTdiag Copy
+ TTdiag Delete
+ TTdiag Open Simulink
+ off
+
+ port_label('input',1,'x');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('green');text(0.5, 0.1, 'Checked', 'horizontalAlignment', 'center')
+ Table Block
+
+
+
+
+ This table examplifies the ability to use infered/selected
+simulink types when proving a table. In this example
+the input signal x is specified as being of type int8,
+this allows this table to typecheck where it would not
+under a real type.
+
+Currently this functionality is only supported under PVS.
+ [265, 51, 513, 123]
+ [0, 0, 0, 0]
+ -1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml
+
+
+
+
+ 1
+ [720.0, 25.0, 720.0, 875.0]
+
+ 0
+ Left
+ 50
+ 50
+ 8
+ Unset
+
+
+ 1
+
+
+ 1
+ 1
+ SimulinkTopLevel
+ 0
+ [682.0, 640.0]
+ 1.0
+ [-4.56640625, -14.0]
+ [-4.56640625, -14.0, 682.0, 640.0]
+
+
+
+ GLUE2:PropertyInspector
+ Property Inspector
+ 0
+
+
+ 0
+ Right
+ 640
+ 480
+ Unset
+
+
+ Simulink:Editor:ReferencedFiles
+ Referenced Files
+ 0
+
+ {"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"}
+
+ 0
+ Left
+ 640
+ 480
+ Unset
+
+
+ AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAAtAAAAK9AAAAAQAAAAIAAAABAAAAAvwAAAAA
+
+ c900dc3b-d1bd-4cc4-b25f-2743cf718f1e
+
+
+
+
+
+__MWOPC_PACKAGE_END__
+=======
Model {
Name "Simulink_type_example"
Version 7.5
@@ -1145,3 +2710,4 @@ Stateflow {
linkNode [1 0 0]
}
}
+>>>>>>> 6e8ce001ab8e32d0a66c7fab9f1c8f2d9f1bad69
diff --git a/Examples/Simulink_type_example.mdl.r2010a b/Examples/Simulink_type_example.mdl.r2010a
new file mode 100644
index 0000000000000000000000000000000000000000..45433869c0980cdac85cf40dfbbb8d6bafdf29fa
--- /dev/null
+++ b/Examples/Simulink_type_example.mdl.r2010a
@@ -0,0 +1,1147 @@
+Model {
+ Name "Simulink_type_example"
+ Version 7.5
+ MdlSubVersion 0
+ GraphicalInterface {
+ NumRootInports 0
+ NumRootOutports 0
+ ParameterArgumentNames ""
+ ComputedModelVersion "1.6"
+ NumModelReferences 0
+ NumTestPointedSignals 0
+ }
+ SavedCharacterEncoding "ISO-8859-1"
+ SaveDefaultBlockParams on
+ ScopeRefreshTime 0.035000
+ OverrideScopeRefreshTime on
+ DisableAllScopes off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ MinMaxOverflowArchiveMode "Overwrite"
+ MaxMDLFileLineLength 120
+ Created "Tue Nov 2 20:30:58 2010"
+ Creator "colin"
+ UpdateHistory "UpdateHistoryNever"
+ ModifiedByFormat "%"
+ LastModifiedBy "matthew"
+ ModifiedDateFormat "%"
+ LastModifiedDate "Thu May 15 16:35:33 2014"
+ RTWModifiedTimeStamp 322072516
+ ModelVersionFormat "1.%"
+ ConfigurationManager "none"
+ SampleTimeColors off
+ SampleTimeAnnotations off
+ LibraryLinkDisplay "none"
+ WideLines off
+ ShowLineDimensions off
+ ShowPortDataTypes off
+ ShowLoopsOnError on
+ IgnoreBidirectionalLines off
+ ShowStorageClass off
+ ShowTestPointIcons on
+ ShowSignalResolutionIcons on
+ ShowViewerIcons on
+ SortedOrder off
+ ExecutionContextIcon off
+ ShowLinearizationAnnotations on
+ BlockNameDataTip off
+ BlockParametersDataTip off
+ BlockDescriptionStringDataTip off
+ ToolBar on
+ StatusBar on
+ BrowserShowLibraryLinks off
+ BrowserLookUnderMasks off
+ SimulationMode "normal"
+ LinearizationMsg "none"
+ Profile off
+ ParamWorkspaceSource "MATLABWorkspace"
+ AccelSystemTargetFile "accel.tlc"
+ AccelTemplateMakefile "accel_default_tmf"
+ AccelMakeCommand "make_rtw"
+ TryForcingSFcnDF off
+ RecordCoverage off
+ CovPath "/"
+ CovSaveName "covdata"
+ CovMetricSettings "dw"
+ CovNameIncrementing off
+ CovHtmlReporting on
+ CovForceBlockReductionOff on
+ covSaveCumulativeToWorkspaceVar on
+ CovSaveSingleToWorkspaceVar on
+ CovCumulativeVarName "covCumulativeData"
+ CovCumulativeReport off
+ CovReportOnPause on
+ CovModelRefEnable "Off"
+ CovExternalEMLEnable off
+ ExtModeBatchMode off
+ ExtModeEnableFloating on
+ ExtModeTrigType "manual"
+ ExtModeTrigMode "normal"
+ ExtModeTrigPort "1"
+ ExtModeTrigElement "any"
+ ExtModeTrigDuration 1000
+ ExtModeTrigDurationFloating "auto"
+ ExtModeTrigHoldOff 0
+ ExtModeTrigDelay 0
+ ExtModeTrigDirection "rising"
+ ExtModeTrigLevel 0
+ ExtModeArchiveMode "off"
+ ExtModeAutoIncOneShot off
+ ExtModeIncDirWhenArm off
+ ExtModeAddSuffixToVar off
+ ExtModeWriteAllDataToWs off
+ ExtModeArmWhenConnect on
+ ExtModeSkipDownloadWhenConnect off
+ ExtModeLogAll on
+ ExtModeAutoUpdateStatusClock on
+ BufferReuse on
+ ShowModelReferenceBlockVersion off
+ ShowModelReferenceBlockIO off
+ Array {
+ Type "Handle"
+ Dimension 1
+ Simulink.ConfigSet {
+ $ObjectID 1
+ Version "1.10.0"
+ Array {
+ Type "Handle"
+ Dimension 8
+ Simulink.SolverCC {
+ $ObjectID 2
+ Version "1.10.0"
+ StartTime "0.0"
+ StopTime "10.0"
+ AbsTol "auto"
+ FixedStep "auto"
+ InitialStep "auto"
+ MaxNumMinSteps "-1"
+ MaxOrder 5
+ ZcThreshold "auto"
+ ConsecutiveZCsStepRelTol "10*128*eps"
+ MaxConsecutiveZCs "1000"
+ ExtrapolationOrder 4
+ NumberNewtonIterations 1
+ MaxStep "auto"
+ MinStep "auto"
+ MaxConsecutiveMinStep "1"
+ RelTol "1e-3"
+ SolverMode "Auto"
+ Solver "ode45"
+ SolverName "ode45"
+ SolverJacobianMethodControl "auto"
+ ShapePreserveControl "DisableAll"
+ ZeroCrossControl "UseLocalSettings"
+ ZeroCrossAlgorithm "Nonadaptive"
+ AlgebraicLoopSolver "TrustRegion"
+ SolverResetMethod "Fast"
+ PositivePriorityOrder off
+ AutoInsertRateTranBlk off
+ SampleTimeConstraint "Unconstrained"
+ InsertRTBMode "Whenever possible"
+ }
+ Simulink.DataIOCC {
+ $ObjectID 3
+ Version "1.10.0"
+ Decimation "1"
+ ExternalInput "[t, u]"
+ FinalStateName "xFinal"
+ InitialState "xInitial"
+ LimitDataPoints on
+ MaxDataPoints "1000"
+ LoadExternalInput off
+ LoadInitialState off
+ SaveFinalState off
+ SaveCompleteFinalSimState off
+ SaveFormat "Array"
+ SaveOutput on
+ SaveState off
+ SignalLogging on
+ DSMLogging on
+ InspectSignalLogs off
+ SaveTime on
+ ReturnWorkspaceOutputs off
+ StateSaveName "xout"
+ TimeSaveName "tout"
+ OutputSaveName "yout"
+ SignalLoggingName "logsout"
+ DSMLoggingName "dsmout"
+ OutputOption "RefineOutputTimes"
+ OutputTimes "[]"
+ ReturnWorkspaceOutputsName "out"
+ Refine "1"
+ }
+ Simulink.OptimizationCC {
+ $ObjectID 4
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 7
+ Cell "BooleansAsBitfields"
+ Cell "PassReuseOutputArgsAs"
+ Cell "PassReuseOutputArgsThreshold"
+ Cell "ZeroExternalMemoryAtStartup"
+ Cell "ZeroInternalMemoryAtStartup"
+ Cell "OptimizeModelRefInitCode"
+ Cell "NoFixptDivByZeroProtection"
+ PropName "DisabledProps"
+ }
+ BlockReduction on
+ BooleanDataType on
+ ConditionallyExecuteInputs on
+ InlineParams off
+ UseIntDivNetSlope off
+ InlineInvariantSignals off
+ OptimizeBlockIOStorage on
+ BufferReuse on
+ EnhancedBackFolding off
+ StrengthReduction off
+ EnforceIntegerDowncast on
+ ExpressionFolding on
+ BooleansAsBitfields off
+ BitfieldContainerType "uint_T"
+ EnableMemcpy on
+ MemcpyThreshold 64
+ PassReuseOutputArgsAs "Structure reference"
+ ExpressionDepthLimit 2147483647
+ FoldNonRolledExpr on
+ LocalBlockOutputs on
+ RollThreshold 5
+ SystemCodeInlineAuto off
+ StateBitsets off
+ DataBitsets off
+ UseTempVars off
+ ZeroExternalMemoryAtStartup on
+ ZeroInternalMemoryAtStartup on
+ InitFltsAndDblsToZero off
+ NoFixptDivByZeroProtection off
+ EfficientFloat2IntCast off
+ EfficientMapNaN2IntZero on
+ OptimizeModelRefInitCode off
+ LifeSpan "inf"
+ MaxStackSize "Inherit from target"
+ BufferReusableBoundary on
+ SimCompilerOptimization "Off"
+ AccelVerboseBuild off
+ }
+ Simulink.DebuggingCC {
+ $ObjectID 5
+ Version "1.10.0"
+ RTPrefix "error"
+ ConsistencyChecking "none"
+ ArrayBoundsChecking "none"
+ SignalInfNanChecking "none"
+ SignalRangeChecking "none"
+ ReadBeforeWriteMsg "UseLocalSettings"
+ WriteAfterWriteMsg "UseLocalSettings"
+ WriteAfterReadMsg "UseLocalSettings"
+ AlgebraicLoopMsg "warning"
+ ArtificialAlgebraicLoopMsg "warning"
+ SaveWithDisabledLinksMsg "warning"
+ SaveWithParameterizedLinksMsg "warning"
+ CheckSSInitialOutputMsg on
+ UnderspecifiedInitializationDetection "Classic"
+ MergeDetectMultiDrivingBlocksExec "none"
+ CheckExecutionContextPreStartOutputMsg off
+ CheckExecutionContextRuntimeOutputMsg off
+ SignalResolutionControl "UseLocalSettings"
+ BlockPriorityViolationMsg "warning"
+ MinStepSizeMsg "warning"
+ TimeAdjustmentMsg "none"
+ MaxConsecutiveZCsMsg "error"
+ SolverPrmCheckMsg "warning"
+ InheritedTsInSrcMsg "warning"
+ DiscreteInheritContinuousMsg "warning"
+ MultiTaskDSMMsg "error"
+ MultiTaskCondExecSysMsg "error"
+ MultiTaskRateTransMsg "error"
+ SingleTaskRateTransMsg "none"
+ TasksWithSamePriorityMsg "warning"
+ SigSpecEnsureSampleTimeMsg "warning"
+ CheckMatrixSingularityMsg "none"
+ IntegerOverflowMsg "warning"
+ Int32ToFloatConvMsg "warning"
+ ParameterDowncastMsg "error"
+ ParameterOverflowMsg "error"
+ ParameterUnderflowMsg "none"
+ ParameterPrecisionLossMsg "warning"
+ ParameterTunabilityLossMsg "warning"
+ FixptConstUnderflowMsg "none"
+ FixptConstOverflowMsg "none"
+ FixptConstPrecisionLossMsg "none"
+ UnderSpecifiedDataTypeMsg "none"
+ UnnecessaryDatatypeConvMsg "none"
+ VectorMatrixConversionMsg "none"
+ InvalidFcnCallConnMsg "error"
+ FcnCallInpInsideContextMsg "Use local settings"
+ SignalLabelMismatchMsg "none"
+ UnconnectedInputMsg "warning"
+ UnconnectedOutputMsg "warning"
+ UnconnectedLineMsg "warning"
+ SFcnCompatibilityMsg "none"
+ UniqueDataStoreMsg "none"
+ BusObjectLabelMismatch "warning"
+ RootOutportRequireBusObject "warning"
+ AssertControl "UseLocalSettings"
+ EnableOverflowDetection off
+ ModelReferenceIOMsg "none"
+ ModelReferenceVersionMismatchMessage "none"
+ ModelReferenceIOMismatchMessage "none"
+ ModelReferenceCSMismatchMessage "none"
+ UnknownTsInhSupMsg "warning"
+ ModelReferenceDataLoggingMessage "warning"
+ ModelReferenceSymbolNameMessage "warning"
+ ModelReferenceExtraNoncontSigs "error"
+ StateNameClashWarn "warning"
+ SimStateInterfaceChecksumMismatchMsg "warning"
+ StrictBusMsg "ErrorLevel1"
+ BusNameAdapt "WarnAndRepair"
+ NonBusSignalsTreatedAsBus "none"
+ LoggingUnavailableSignals "error"
+ BlockIODiagnostic "none"
+ }
+ Simulink.HardwareCC {
+ $ObjectID 6
+ Version "1.10.0"
+ ProdBitPerChar 8
+ ProdBitPerShort 16
+ ProdBitPerInt 32
+ ProdBitPerLong 32
+ ProdIntDivRoundTo "Undefined"
+ ProdEndianess "Unspecified"
+ ProdWordSize 32
+ ProdShiftRightIntArith on
+ ProdHWDeviceType "32-bit Generic"
+ TargetBitPerChar 8
+ TargetBitPerShort 16
+ TargetBitPerInt 32
+ TargetBitPerLong 32
+ TargetShiftRightIntArith on
+ TargetIntDivRoundTo "Undefined"
+ TargetEndianess "Unspecified"
+ TargetWordSize 32
+ TargetTypeEmulationWarnSuppressLevel 0
+ TargetPreprocMaxBitsSint 32
+ TargetPreprocMaxBitsUint 32
+ TargetHWDeviceType "Specified"
+ TargetUnknown off
+ ProdEqTarget on
+ }
+ Simulink.ModelReferenceCC {
+ $ObjectID 7
+ Version "1.10.0"
+ UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+ CheckModelReferenceTargetMessage "error"
+ EnableParallelModelReferenceBuilds off
+ ParallelModelReferenceMATLABWorkerInit "None"
+ ModelReferenceNumInstancesAllowed "Multi"
+ PropagateVarSize "Infer from blocks in model"
+ ModelReferencePassRootInputsByReference on
+ ModelReferenceMinAlgLoopOccurrences off
+ PropagateSignalLabelsOutOfModel off
+ SupportModelReferenceSimTargetCustomCode off
+ }
+ Simulink.SFSimCC {
+ $ObjectID 8
+ Version "1.10.0"
+ SFSimEnableDebug on
+ SFSimOverflowDetection on
+ SFSimEcho on
+ SimBlas on
+ SimCtrlC on
+ SimExtrinsic on
+ SimIntegrity on
+ SimUseLocalCustomCode off
+ SimBuildMode "sf_incremental_build"
+ }
+ Simulink.RTWCC {
+ $BackupClass "Simulink.RTWCC"
+ $ObjectID 9
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 6
+ Cell "IncludeHyperlinkInReport"
+ Cell "GenerateTraceInfo"
+ Cell "GenerateTraceReport"
+ Cell "GenerateTraceReportSl"
+ Cell "GenerateTraceReportSf"
+ Cell "GenerateTraceReportEml"
+ PropName "DisabledProps"
+ }
+ SystemTargetFile "grt.tlc"
+ GenCodeOnly off
+ MakeCommand "make_rtw"
+ GenerateMakefile on
+ TemplateMakefile "grt_default_tmf"
+ GenerateReport off
+ SaveLog off
+ RTWVerbose on
+ RetainRTWFile off
+ ProfileTLC off
+ TLCDebug off
+ TLCCoverage off
+ TLCAssert off
+ ProcessScriptMode "Default"
+ ConfigurationMode "Optimized"
+ ConfigAtBuild off
+ RTWUseLocalCustomCode off
+ RTWUseSimCustomCode off
+ IncludeHyperlinkInReport off
+ LaunchReport off
+ TargetLang "C"
+ IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+ IncludeERTFirstTime off
+ GenerateTraceInfo off
+ GenerateTraceReport off
+ GenerateTraceReportSl off
+ GenerateTraceReportSf off
+ GenerateTraceReportEml off
+ GenerateCodeInfo off
+ RTWCompilerOptimization "Off"
+ CheckMdlBeforeBuild "Off"
+ CustomRebuildMode "OnUpdate"
+ Array {
+ Type "Handle"
+ Dimension 2
+ Simulink.CodeAppCC {
+ $ObjectID 10
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 19
+ Cell "IgnoreCustomStorageClasses"
+ Cell "IgnoreTestpoints"
+ Cell "InsertBlockDesc"
+ Cell "SFDataObjDesc"
+ Cell "SimulinkDataObjDesc"
+ Cell "DefineNamingRule"
+ Cell "SignalNamingRule"
+ Cell "ParamNamingRule"
+ Cell "InlinedPrmAccess"
+ Cell "CustomSymbolStr"
+ Cell "CustomSymbolStrGlobalVar"
+ Cell "CustomSymbolStrType"
+ Cell "CustomSymbolStrField"
+ Cell "CustomSymbolStrFcn"
+ Cell "CustomSymbolStrFcnArg"
+ Cell "CustomSymbolStrBlkIO"
+ Cell "CustomSymbolStrTmpVar"
+ Cell "CustomSymbolStrMacro"
+ Cell "ReqsInCode"
+ PropName "DisabledProps"
+ }
+ ForceParamTrailComments off
+ GenerateComments on
+ IgnoreCustomStorageClasses on
+ IgnoreTestpoints off
+ IncHierarchyInIds off
+ MaxIdLength 31
+ PreserveName off
+ PreserveNameWithParent off
+ ShowEliminatedStatement off
+ IncAutoGenComments off
+ SimulinkDataObjDesc off
+ SFDataObjDesc off
+ IncDataTypeInIds off
+ MangleLength 1
+ CustomSymbolStrGlobalVar "$R$N$M"
+ CustomSymbolStrType "$N$R$M"
+ CustomSymbolStrField "$N$M"
+ CustomSymbolStrFcn "$R$N$M$F"
+ CustomSymbolStrFcnArg "rt$I$N$M"
+ CustomSymbolStrBlkIO "rtb_$N$M"
+ CustomSymbolStrTmpVar "$N$M"
+ CustomSymbolStrMacro "$R$N$M"
+ DefineNamingRule "None"
+ ParamNamingRule "None"
+ SignalNamingRule "None"
+ InsertBlockDesc off
+ SimulinkBlockComments on
+ EnableCustomComments off
+ InlinedPrmAccess "Literals"
+ ReqsInCode off
+ UseSimReservedNames off
+ }
+ Simulink.GRTTargetCC {
+ $BackupClass "Simulink.TargetCC"
+ $ObjectID 11
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 17
+ Cell "GeneratePreprocessorConditionals"
+ Cell "IncludeMdlTerminateFcn"
+ Cell "CombineOutputUpdateFcns"
+ Cell "SuppressErrorStatus"
+ Cell "ERTCustomFileBanners"
+ Cell "GenerateSampleERTMain"
+ Cell "GenerateTestInterfaces"
+ Cell "ModelStepFunctionPrototypeControlCompliant"
+ Cell "CPPClassGenCompliant"
+ Cell "MultiInstanceERTCode"
+ Cell "PurelyIntegerCode"
+ Cell "SupportNonFinite"
+ Cell "SupportComplex"
+ Cell "SupportAbsoluteTime"
+ Cell "SupportContinuousTime"
+ Cell "SupportNonInlinedSFcns"
+ Cell "PortableWordSizes"
+ PropName "DisabledProps"
+ }
+ TargetFcnLib "ansi_tfl_table_tmw.mat"
+ TargetLibSuffix ""
+ TargetPreCompLibLocation ""
+ TargetFunctionLibrary "ANSI_C"
+ UtilityFuncGeneration "Auto"
+ ERTMultiwordTypeDef "System defined"
+ ERTCodeCoverageTool "None"
+ ERTMultiwordLength 256
+ MultiwordLength 2048
+ GenerateFullHeader on
+ GenerateSampleERTMain off
+ GenerateTestInterfaces off
+ IsPILTarget off
+ ModelReferenceCompliant on
+ ParMdlRefBuildCompliant on
+ CompOptLevelCompliant on
+ IncludeMdlTerminateFcn on
+ GeneratePreprocessorConditionals "Disable all"
+ CombineOutputUpdateFcns off
+ SuppressErrorStatus off
+ ERTFirstTimeCompliant off
+ IncludeFileDelimiter "Auto"
+ ERTCustomFileBanners off
+ SupportAbsoluteTime on
+ LogVarNameModifier "rt_"
+ MatFileLogging on
+ MultiInstanceERTCode off
+ SupportNonFinite on
+ SupportComplex on
+ PurelyIntegerCode off
+ SupportContinuousTime on
+ SupportNonInlinedSFcns on
+ SupportVariableSizeSignals off
+ EnableShiftOperators on
+ ParenthesesLevel "Nominal"
+ PortableWordSizes off
+ ModelStepFunctionPrototypeControlCompliant off
+ CPPClassGenCompliant off
+ AutosarCompliant off
+ UseMalloc off
+ ExtMode off
+ ExtModeStaticAlloc off
+ ExtModeTesting off
+ ExtModeStaticAllocSize 1000000
+ ExtModeTransport 0
+ ExtModeMexFile "ext_comm"
+ ExtModeIntrfLevel "Level1"
+ RTWCAPISignals off
+ RTWCAPIParams off
+ RTWCAPIStates off
+ GenerateASAP2 off
+ }
+ PropName "Components"
+ }
+ }
+ PropName "Components"
+ }
+ Name "Configuration"
+ CurrentDlgPage "Solver"
+ ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] "
+ }
+ PropName "ConfigurationSets"
+ }
+ Simulink.ConfigSet {
+ $PropName "ActiveConfigurationSet"
+ $ObjectID 1
+ }
+ BlockDefaults {
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ NamePlacement "normal"
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ ShowName on
+ BlockRotation 0
+ BlockMirror off
+ }
+ AnnotationDefaults {
+ HorizontalAlignment "center"
+ VerticalAlignment "middle"
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ UseDisplayTextAsClickCallback off
+ }
+ LineDefaults {
+ FontName "Helvetica"
+ FontSize 9
+ FontWeight "normal"
+ FontAngle "normal"
+ }
+ BlockParameterDefaults {
+ Block {
+ BlockType Demux
+ Outputs "4"
+ DisplayOption "none"
+ BusSelectionMode off
+ }
+ Block {
+ BlockType Inport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ LatchByDelayingOutsideSignal off
+ LatchInputForFeedbackSignals off
+ Interpolate on
+ }
+ Block {
+ BlockType Outport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ SourceOfInitialOutputValue "Dialog"
+ OutputWhenDisabled "held"
+ InitialOutput "[]"
+ }
+ Block {
+ BlockType "S-Function"
+ FunctionName "system"
+ SFunctionModules "''"
+ PortCounts "[]"
+ SFunctionDeploymentMode off
+ }
+ Block {
+ BlockType SubSystem
+ ShowPortLabels "FromPortIcon"
+ Permissions "ReadWrite"
+ PermitHierarchicalResolution "All"
+ TreatAsAtomicUnit off
+ CheckFcnCallInpInsideContextMsg off
+ SystemSampleTime "-1"
+ RTWFcnNameOpts "Auto"
+ RTWFileNameOpts "Auto"
+ RTWMemSecFuncInitTerm "Inherit from model"
+ RTWMemSecFuncExecute "Inherit from model"
+ RTWMemSecDataConstants "Inherit from model"
+ RTWMemSecDataInternal "Inherit from model"
+ RTWMemSecDataParameters "Inherit from model"
+ SimViewingDevice off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ }
+ Block {
+ BlockType Terminator
+ }
+ }
+ System {
+ Name "Simulink_type_example"
+ Location [70, 244, 650, 504]
+ Open on
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ ReportName "simulink-default.rpt"
+ SIDHighWatermark 5
+ Block {
+ BlockType SubSystem
+ Name "type_test"
+ SID 1
+ Ports [1, 1]
+ Position [65, 47, 230, 113]
+ LibraryVersion "1.12"
+ UserDataPersistent on
+ UserData "DataTag0"
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'x');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression'"
+ ", 'horizontalAlignment', 'center');color('green');text(0.5, 0.1, 'Checked', 'horizontalAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "type_test"
+ Location [433, 447, 931, 747]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 4
+ Position [35, 38, 65, 52]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType SubSystem
+ Name "code"
+ SID 3
+ Ports [1, 1]
+ Position [250, 47, 320, 93]
+ LibraryVersion "1.31"
+ PermitHierarchicalResolution "ExplicitOnly"
+ TreatAsAtomicUnit on
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ Array {
+ Type "Handle"
+ Dimension 0
+ PropName "AvailSigsLoadSave"
+ }
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskType "Stateflow"
+ MaskDescription "Embedded MATLAB block"
+ MaskDisplay "disp('type_test');"
+ MaskSelfModifiable on
+ MaskIconFrame on
+ MaskIconOpaque off
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "autoscale"
+ System {
+ Name "code"
+ Location [257, 457, 812, 717]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ SIDHighWatermark 17
+ SIDPrevWatermark 13
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 1
+ Position [20, 101, 40, 119]
+ IconDisplay "Port number"
+ OutDataType "sfix(16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType Demux
+ Name " Demux "
+ SID 15
+ Ports [1, 1]
+ Position [270, 160, 320, 200]
+ Outputs "1"
+ }
+ Block {
+ BlockType "S-Function"
+ Name " SFunction "
+ SID 14
+ Tag "Stateflow S-Function Simulink_type_example 2"
+ Ports [1, 2]
+ Position [180, 100, 230, 160]
+ FunctionName "sf_sfun"
+ PortCounts "[1 2]"
+ EnableBusSupport on
+ Port {
+ PortNumber 2
+ Name "output"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ }
+ Block {
+ BlockType Terminator
+ Name " Terminator "
+ SID 17
+ Position [460, 171, 480, 189]
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 5
+ Position [460, 101, 480, 119]
+ IconDisplay "Port number"
+ OutDataType "sfix(16)"
+ OutScaling "2^0"
+ }
+ Line {
+ SrcBlock " SFunction "
+ SrcPort 1
+ DstBlock " Demux "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 1
+ }
+ Line {
+ Name "output"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 2
+ DstBlock "output"
+ DstPort 1
+ }
+ Line {
+ SrcBlock " Demux "
+ SrcPort 1
+ DstBlock " Terminator "
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 5
+ Position [35, 53, 65, 67]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 1
+ DstBlock "output"
+ DstPort 1
+ }
+ }
+ }
+ Annotation {
+ Name "This table examplifies the ability to use infered/selected\nsimulink types when proving a table. In"
+ " this example\nthe input signal x is specified as being of type int8,\nthis allows this table to typecheck where"
+ " it would not\nunder a real type.\n\nCurrently this functionality is only supported under PVS."
+ Position [389, 87]
+ }
+ }
+}
+MatData {
+ NumRecords 1
+ DataRecord {
+ Tag DataTag0
+ Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ! !0 X !P(P !@ @ ) 4"
+ " ( 0 $ C ! ( ! (P %)30 . H\"( 8 ( @ % \" $ ! 0 "
+ " % 0 !0 $ % 34-/4P . 6\"( 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E"
+ "'1?> !C;VYD:71I;VY?=&5X=%]Y &-"
+ "O;F1I=&EO;E]T97AT7V]F9G-E= !G X \"8 0 !@ @ \" "
+ " 4 ( 0 $ ! 4 ! ' 0 \", !S970 :6YP=71S &-O=6YT !R86YG90 97AC97!T "
+ " #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX P !@ @ & "
+ " 4 ( ! D #@ #@ & \" 8 !0 @ ! 0 $ "
+ "\"0 @ $\"/0 X X !@ @ & 4 ( 0 $ ! D ( 64 . "
+ ". 8 ( !@ % \" $ ! 0 ) \" #@ #@ & \" 8 "
+ " !0 @ ! 0 $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! "
+ " D ( . . 8 ( !@ % \" $ ! 0 ) \" "
+ "#@ % . & \" $ !0 @ & 0 $ #@ #@ & \" ( !0 @ ! "
+ " $ !0 $ $ ! X !H!0 !@ @ \" 4 ( 0 $ ! 4 ! 6 "
+ "0 & ! !S=6)G'1?=VED=&@ &-O;F1I=&E"
+ "O;E]T97AT7VAE:6=H= !C;VYD:71I;VY?=&5X=%]X 8V]N9&ET:6]N7W1E>'1?>0 &-O;F1I=&EO;E]T97AT7V]F9G-E= !G '0 8V]L;W( X P !@ @ "
+ " & 4 ( ! D #@ # & \" 8 !0 @ $ "
+ " \"0 . , 8 ( !@ % \" 0 ) X P !@ @ "
+ "& 4 ( ! D #@ # & \" 8 !0 @ $ "
+ " \"0 . \" , 8 ( @ % \" $ ! 0 % 0 $ $ \"@ 1W)I9# "
+ " $=R:60Q !'4.5)\n output = 1;\nelseif(x<4.5)\n ou"
+ "tput = 0;\nend\n"
+ editorLayout "100 M4x1[205 227 1080 733]"
+ }
+ }
+ junction {
+ id 4
+ position [23.5747 49.5747 7]
+ chart 2
+ linkNode [2 0 0]
+ subviewer 2
+ ssIdNumber 3
+ type CONNECTIVE_JUNCTION
+ }
+ transition {
+ id 5
+ labelString "{eML_blk_kernel();}"
+ labelPosition [32.125 19.875 102.544 14.964]
+ fontSize 12
+ src {
+ intersection [0 0 1 0 23.5747 14.625 0 0]
+ }
+ dst {
+ id 4
+ intersection [7 0 -1 -1 23.5747 42.5747 0 0]
+ }
+ midPoint [23.5747 24.9468]
+ chart 2
+ linkNode [2 0 0]
+ dataLimits [23.575 23.575 14.625 34.575]
+ subviewer 2
+ drawStyle SMART
+ executionOrder 1
+ ssIdNumber 2
+ }
+ data {
+ id 6
+ ssIdNumber 4
+ name "x"
+ linkNode [2 0 7]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ primitive SF_INT8_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ }
+ dataType "int8"
+ }
+ data {
+ id 7
+ ssIdNumber 5
+ name "output"
+ linkNode [2 6 0]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ instance {
+ id 8
+ name "type_test/code"
+ machine 1
+ chart 2
+ }
+ target {
+ id 9
+ name "sfun"
+ description "Default Simulink S-Function Target."
+ machine 1
+ linkNode [1 0 0]
+ }
+}
diff --git a/Examples/quadratic_roots.mdl b/Examples/quadratic_roots.mdl
index caa8dc142c27c7c65aace158da90d60f4009ceaa..34ebfb1093a1fac2e43cd475ec0be163af2ebe70 100644
--- a/Examples/quadratic_roots.mdl
+++ b/Examples/quadratic_roots.mdl
@@ -1,3 +1,2871 @@
+<<<<<<< HEAD
+# MathWorks OPC Text Package
+Model {
+ Version 10.4
+ Description "Simulink model saved in R2021b"
+}
+__MWOPC_PACKAGE_BEGIN__ R2021b
+__MWOPC_PART_BEGIN__ /[Content_Types].xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /_rels/.rels
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml
+
+
+ model
+ 2011-01-21T19:32:13Z
+ colin
+ pesaraamarasekera
+ 2022-05-05T14:17:31Z
+ 24.0
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml
+
+
+ application/vnd.mathworks.simulink.model
+ Simulink Model
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml
+
+
+ a92f09b1-8e51-4338-9cb3-194c4b38362b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml
+
+
+
+ 9.11.0.1809720
+ R2021b
+ Update 1
+ Nov 02 2021
+ 3710740051
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml
+
+
+
+ center
+ middle
+
+
+
+
+
+
+
+
+
+
+ none
+ Inherit: auto
+ off
+
+
+ 1
+ on
+ Sample based
+ []
+ []
+ Inherit: Inherit from 'Constant value'
+ off
+ inf
+ inf
+ off
+
+
+ 4
+ bar
+ off
+
+
+ short
+ 10
+ off
+ off
+ -1
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ off
+ on
+
+
+ sin
+ -1
+ auto
+ on
+ -1
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ Dialog
+ held
+ []
+ off
+ off
+ 0
+ on
+
+
+ system
+ ''
+ []
+ auto
+
+
+ Simulink.scopes.TimeScopeBlockCfg
+
+
+ FromPortIcon
+ ReadWrite
+ All
+ off
+ off
+ Sample time
+ -1
+ Auto
+ Auto
+ Auto
+ void_void
+ off
+ off
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ off
+ UseLocalSettings
+ AllNumericTypes
+ UseLocalSettings
+ off
+ off
+ NONE
+ off
+ expression
+ update diagram
+ off
+ off
+ on
+ off
+ off
+ off
+ 0
+ off
+ off
+
+
+ round
+ ++
+ All dimensions
+ 1
+ off
+ Inherit: Inherit via internal rule
+ []
+ []
+ Inherit: Inherit via internal rule
+ off
+ Floor
+ off
+ -1
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64
+AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAAD4PgAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA
+AMg+AAABAAAAAAAAAAIAAADIPgAAAAFJTQAAAAAOAAAAKD4AAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAA4D0AAAYAAAAI
+AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAKA9
+AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAB5AAAAAQAAAAEAAAAAAAAADgAAALgLAAAGAAAACAAA
+AAkAAAAAAAAABQAAAAgAAACICwAAAQAAAAEAAAAAAAAAAgAAAIgLAAADAAAALAAAANgBAAA4AgAA
+OAIAAJAEAADACgAAiAsAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf
+aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2Vs
+bHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgBwYl9mbGFnAENl
+bGwAc3ViZ3JpZABjb25kAHdpZHRoAGhlaWdodABncmlkX3BiAGNvbG9yAGNvbmRpdGlvbl90ZXh0
+X3dpZHRoAGNvbmRpdGlvbl90ZXh0X2hlaWdodABjb25kaXRpb25fdGV4dF94AGNvbmRpdGlvbl90
+ZXh0X3kAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aABSR3JpZABHcmlkMQBH
+cmlkMgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv
+bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAB4AAAAA
+AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAYAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAAXAAAABAAA
+AAAAAAAAAAAAAAAAAAMAAAAPAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAADAAAAAQAAAAAAAAAAAAAA
+AAAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAO
+AAAAAQAAAAAAAAAAAAAAAAAAAAgAAAANAAAAAgAAAAAAAAAAAAAAAAAAAAkAAAAMAAAAAQAAAAAA
+AAAAAAAAAAAAAAoAAAALAAAAAgAAAAAAAAAAAAAAAAAAAAsAAAAKAAAAAQAAAAAAAAAAAAAAAAAA
+AAwAAAAJAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAEAAAAAgAAAAAAAAAAAAAAAAAAAA4AAAAIAAAA
+AQAAAAAAAAAAAAAAAAAAAA8AAAAHAAAAAgAAAAAAAAAAAAAAAAAAABAAAAAFAAAAAgAAAAAAAAAA
+AAAAAAAAABEAAAAGAAAABAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABAAAAAAAAAAAAAAAAAAAABMA
+AAARAAAABAAAAAAAAAAAAAAAAAAAABQAAAASAAAABAAAAAAAAAAAAAAAAAAAABUAAAATAAAABAAA
+AAAAAAAAAAAAAAAAABYAAAAUAAAABAAAAAAAAAAAAAAAAAAAABcAAAAVAAAABAAAAAAAAAAAAAAA
+AAAAABgAAAAWAAAAAAAAAAAAAAAJAAAAAQAAAAEAAABsAAAAHwAAAAEAAABtAAAAIAAAAAEAAABu
+AAAAJQAAAAEAAABvAAAAJgAAAAEAAABwAAAAJwAAAAEAAABxAAAAKAAAAAEAAAByAAAAKQAAAAEA
+AABzAAAAKgAAAAEAAAB0AAAAAwAAAAIAAAABAAAAaQAAAB8AAAABAAAAagAAACAAAAABAAAAawAA
+AAQAAAADAAAAAQAAAAwAAAAhAAAAAQAAAEoAAAAiAAAAAQAAAEsAAAAXAAAAAQAAAEwAAAAAAAAA
+BAAAAAQAAAABAAAAAAAAAAUAAAABAAAAAQAAAAYAAAABAAAACgAAABAAAAABAAAACwAAAAAAAAAE
+AAAABwAAAAEAAAAGAAAACwAAAAEAAAAHAAAADAAAAAEAAAAIAAAADQAAAAEAAAAJAAAAAAAAAAQA
+AAAEAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAGAAAAAQAAAAQAAAAQAAAAAQAAAAUAAAAAAAAABgAA
+AAQAAAABAAAADQAAAAUAAAABAAAADgAAAAYAAAABAAAARgAAABQAAAABAAAARwAAABUAAAABAAAA
+SAAAABAAAAABAAAASQAAAAAAAAAFAAAACQAAAAEAAABBAAAABwAAAAEAAABCAAAACwAAAAEAAABD
+AAAADAAAAAEAAABEAAAADQAAAAEAAABFAAAABgAAABIAAAABAAAADwAAAAQAAAABAAAAEAAAAAUA
+AAABAAAAEQAAAAYAAAABAAAAPgAAABQAAAABAAAAPwAAABUAAAABAAAAQAAAAAAAAAAEAAAABwAA
+AAEAAAA6AAAACwAAAAEAAAA7AAAADAAAAAEAAAA8AAAADQAAAAEAAAA9AAAAAAAAAAYAAAASAAAA
+AQAAADQAAAAEAAAAAQAAADUAAAAFAAAAAQAAADYAAAAGAAAAAQAAADcAAAAUAAAAAQAAADgAAAAV
+AAAAAQAAADkAAAAAAAAABQAAAAkAAAABAAAAEgAAAAcAAAABAAAAMAAAAAsAAAABAAAAMQAAAAwA
+AAABAAAAMgAAAA0AAAABAAAAMwAAAAYAAAAEAAAAAQAAABMAAAAFAAAAAQAAABQAAAAGAAAAAQAA
+ABUAAAAUAAAAAQAAABYAAAAVAAAAAQAAABcAAAAQAAAAAQAAABgAAAAAAAAABgAAABIAAAABAAAA
+KgAAAAQAAAABAAAAKwAAAAUAAAABAAAALAAAAAYAAAABAAAALQAAABQAAAABAAAALgAAABUAAAAB
+AAAALwAAAAAAAAAFAAAACQAAAAEAAAAZAAAABwAAAAEAAAAmAAAACwAAAAEAAAAnAAAADAAAAAEA
+AAAoAAAADQAAAAEAAAApAAAABgAAAAQAAAABAAAAGgAAAAUAAAABAAAAGwAAAAYAAAABAAAAHAAA
+ABQAAAABAAAAHQAAABUAAAABAAAAHgAAABAAAAABAAAAHwAAAAAAAAAGAAAABAAAAAEAAAAgAAAA
+BQAAAAEAAAAhAAAABgAAAAEAAAAiAAAAFAAAAAEAAAAjAAAAFQAAAAEAAAAkAAAAEAAAAAEAAAAl
+AAAAAAAAAAQAAAADAAAAAQAAAE0AAAAhAAAAAQAAAE4AAAAiAAAAAQAAAE8AAAAXAAAAAQAAAFAA
+AAAAAAAABAAAAAMAAAABAAAAUQAAACEAAAABAAAAUgAAACIAAAABAAAAUwAAABcAAAABAAAAVAAA
+AAAAAAAEAAAAAwAAAAEAAABVAAAAIQAAAAEAAABWAAAAIgAAAAEAAABXAAAAFwAAAAEAAABYAAAA
+AAAAAAQAAAADAAAAAQAAAFkAAAAhAAAAAQAAAFoAAAAiAAAAAQAAAFsAAAAXAAAAAQAAAFwAAAAA
+AAAABAAAAAMAAAABAAAAXQAAACEAAAABAAAAXgAAACIAAAABAAAAXwAAABcAAAABAAAAYAAAAAAA
+AAAEAAAAAwAAAAEAAABhAAAAIQAAAAEAAABiAAAAIgAAAAEAAABjAAAAFwAAAAEAAABkAAAAAAAA
+AAQAAAADAAAAAQAAAGUAAAAhAAAAAQAAAGYAAAAiAAAAAQAAAGcAAAAXAAAAAQAAAGgAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAAABAAAgB4MQAADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAAABAAAgB4MgAADgAAADgAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAAUAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABwAA
+AAEAAAABAAAAAAAAAAYAAAAcAAAAAAAA3QIAAAABAAAAAgAAAAQAAAAGAAAAAgAAAAAAAAAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AABADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAABAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGIgfj0gMAAADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AAgAAAABAAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAA
+EAAAAAYAAABhID09IDAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAALAAAAAgAAAA4AAABIAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABIAAAABAAAAAAAAABAAAAASAAAAKGJeMikgLSA0KmEq
+YyA9PSAwAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAwAAAABAAAADgAAADgAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8O
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAADgAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQAYj49MA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAPAAAAAQAA
+AA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ
+AAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AAMAAAABAAAAAAAAABAAAwBiPDAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAA8AAAABAAAADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADw
+Pw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ
+AAAACAAAAAAAAAAAAPA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAAAQAAAAEA
+AAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAAEAAAABEAAAACAAAAAAAAAA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAPAAAAAQAAAA4AAABIAAAA
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABEAAAABAAAAAAAAABAAAAARAAAAKGJeMikgLSA0
+KmEqYyA+IDAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAwAAAABAAAADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+BEAOAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAA
+AAAAAN0CAAAAAQAAAAIAAAANAAAADgAAAAIAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA
+AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAwAAAABAAAADgAAADgAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAABhIH49IDAAAA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAAAKAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABBADgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAHAAAAAQAAAAEAAAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAACQAAAAsAAAACAAAA
+AAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAK
+AAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAPg/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAIAAAAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AAAHAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAMAAAAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAAIAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAcAAAACAAAA
+DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAC1jL2IO
+AAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAADQAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAGAAAAAQAAAAAA
+AAAQAAAABgAAAC1iLzIqYQAADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAA
+AAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAA
+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
+dXNoX3dpZHRoAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAA
+AAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAGlADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABOQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+JEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAA0QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAAPkAOAAAA+AAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQABgAAAAEAAAASAAAAQ2VsbHMAR3JpZDEAR3JpZDIAAAAAAAAADgAA
+ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA
+MAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAw
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAJAB
+AAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAwAAAABAAAAPAAA
+AENlbGwxAAAAAAAAAENlbGwyAAAAAAAAAHJlc3VsdAAAAAAAAHJlc3VsdF90ZXh0AGNvbG9yAAAA
+AAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ
+AAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkA
+AAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAA
+AAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAA
+AAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAA
+AAAADgAAAAgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAA
+AAABAAAAoAAAAEdyaWQwAAAAAAAAAAAAAABHcmlkMQAAAAAAAAAAAAAAR3JpZDIAAAAAAAAAAAAA
+AGZ1bmN0aW9uX25hbWUAAABmdW5jdGlvbl9pbnB1dHMAc2V0dGluZ3MAAAAAAAAAAGNoZWNrZWQA
+AAAAAAAAAABvcGVuAAAAAAAAAAAAAAAAZmlnAAAAAAAAAAAAAAAAAG11bHRpX21vZGUAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A
+AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA
+ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA
+MAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAw
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACIAAAABgAA
+AAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAAAFgAAAABAAAAAAAAAAIAAABYAAAAAAFJTQAAAAAOAAAA
+SAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAF
+AAAATUNPUwAAAAAOAAAAAAAAAA
+__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_38.mxarray BASE64
+AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAABISQAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA
+ABhJAAABAAAAAAAAAAIAAAAYSQAAAAFJTQAAAAAOAAAAeEgAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAMEgAAAYAAAAI
+AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAPBH
+AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAACVAAAAAQAAAAEAAAAAAAAADgAAAPgNAAAGAAAACAAA
+AAkAAAAAAAAABQAAAAgAAADIDQAAAQAAAAEAAAAAAAAAAgAAAMgNAAADAAAALAAAANgBAAA4AgAA
+OAIAACAFAADQDAAAyA0AAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf
+aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2Vs
+bHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgBwYl9mbGFnAENl
+bGwAc3ViZ3JpZABjb25kAHdpZHRoAGhlaWdodABncmlkX3BiAGNvbG9yAGNvbmRpdGlvbl90ZXh0
+X3dpZHRoAGNvbmRpdGlvbl90ZXh0X2hlaWdodABjb25kaXRpb25fdGV4dF94AGNvbmRpdGlvbl90
+ZXh0X3kAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aABSR3JpZABHcmlkMQBH
+cmlkMgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv
+bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAB4AAAAA
+AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAeAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAAdAAAABAAA
+AAAAAAAAAAAAAAAAAAMAAAARAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAADAAAAAQAAAAAAAAAAAAAA
+AAAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAQ
+AAAAAQAAAAAAAAAAAAAAAAAAAAgAAAAPAAAAAgAAAAAAAAAAAAAAAAAAAAkAAAANAAAAAQAAAAAA
+AAAAAAAAAAAAAAoAAAAMAAAAAgAAAAAAAAAAAAAAAAAAAAsAAAALAAAAAQAAAAAAAAAAAAAAAAAA
+AAwAAAAKAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAEAAAAAgAAAAAAAAAAAAAAAAAAAA4AAAAFAAAA
+AgAAAAAAAAAAAAAAAAAAAA8AAAAJAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAIAAAAAgAAAAAAAAAA
+AAAAAAAAABEAAAAGAAAAAgAAAAAAAAAAAAAAAAAAABIAAAAHAAAAAgAAAAAAAAAAAAAAAAAAABMA
+AAAOAAAABAAAAAAAAAAAAAAAAAAAABQAAAASAAAABAAAAAAAAAAAAAAAAAAAABUAAAATAAAABAAA
+AAAAAAAAAAAAAAAAABYAAAAUAAAABAAAAAAAAAAAAAAAAAAAABcAAAAVAAAABAAAAAAAAAAAAAAA
+AAAAABgAAAAWAAAABAAAAAAAAAAAAAAAAAAAABkAAAAXAAAABAAAAAAAAAAAAAAAAAAAABoAAAAY
+AAAABAAAAAAAAAAAAAAAAAAAABsAAAAZAAAABAAAAAAAAAAAAAAAAAAAABwAAAAaAAAABAAAAAAA
+AAAAAAAAAAAAAB0AAAAbAAAABAAAAAAAAAAAAAAAAAAAAB4AAAAcAAAAAAAAAAAAAAAJAAAAAQAA
+AAEAAACIAAAAHwAAAAEAAACJAAAAIAAAAAEAAACKAAAAJQAAAAEAAACLAAAAJgAAAAEAAACMAAAA
+JwAAAAEAAACNAAAAKAAAAAEAAACOAAAAKQAAAAEAAACPAAAAKgAAAAEAAACQAAAAAwAAAAIAAAAB
+AAAAhQAAAB8AAAABAAAAhgAAACAAAAABAAAAhwAAAAQAAAADAAAAAQAAAAwAAAAhAAAAAQAAAFYA
+AAAiAAAAAQAAAFcAAAAXAAAAAQAAAFgAAAAAAAAABAAAAAQAAAABAAAAAAAAAAUAAAABAAAAAQAA
+AAYAAAABAAAACgAAABAAAAABAAAACwAAAAAAAAAEAAAABwAAAAEAAAAGAAAACwAAAAEAAAAHAAAA
+DAAAAAEAAAAIAAAADQAAAAEAAAAJAAAAAAAAAAQAAAAEAAAAAQAAAAIAAAAFAAAAAQAAAAMAAAAG
+AAAAAQAAAAQAAAAQAAAAAQAAAAUAAAAAAAAABgAAAAQAAAABAAAADQAAAAUAAAABAAAADgAAAAYA
+AAABAAAAUgAAABQAAAABAAAAUwAAABUAAAABAAAAVAAAABAAAAABAAAAVQAAAAAAAAAFAAAACQAA
+AAEAAABHAAAABwAAAAEAAABOAAAACwAAAAEAAABPAAAADAAAAAEAAABQAAAADQAAAAEAAABRAAAA
+BgAAABIAAAABAAAADwAAAAQAAAABAAAAEAAAAAUAAAABAAAAEQAAAAYAAAABAAAARAAAABQAAAAB
+AAAARQAAABUAAAABAAAARgAAAAAAAAAEAAAABwAAAAEAAABAAAAACwAAAAEAAABBAAAADAAAAAEA
+AABCAAAADQAAAAEAAABDAAAAAAAAAAYAAAASAAAAAQAAADoAAAAEAAAAAQAAADsAAAAFAAAAAQAA
+ADwAAAAGAAAAAQAAAD0AAAAUAAAAAQAAAD4AAAAVAAAAAQAAAD8AAAAAAAAABQAAAAkAAAABAAAA
+EgAAAAcAAAABAAAANgAAAAsAAAABAAAANwAAAAwAAAABAAAAOAAAAA0AAAABAAAAOQAAAAYAAAAE
+AAAAAQAAABMAAAAFAAAAAQAAABQAAAAGAAAAAQAAABUAAAAUAAAAAQAAABYAAAAVAAAAAQAAABcA
+AAAQAAAAAQAAABgAAAAAAAAABgAAAAQAAAABAAAAGQAAAAUAAAABAAAAGgAAAAYAAAABAAAAGwAA
+ABQAAAABAAAAHAAAABUAAAABAAAAHQAAABAAAAABAAAAHgAAAAAAAAAGAAAAEgAAAAEAAAAwAAAA
+BAAAAAEAAAAxAAAABQAAAAEAAAAyAAAABgAAAAEAAAAzAAAAFAAAAAEAAAA0AAAAFQAAAAEAAAA1
+AAAAAAAAAAUAAAAJAAAAAQAAAB8AAAAHAAAAAQAAACwAAAALAAAAAQAAAC0AAAAMAAAAAQAAAC4A
+AAANAAAAAQAAAC8AAAAGAAAABAAAAAEAAAAgAAAABQAAAAEAAAAhAAAABgAAAAEAAAAiAAAAFAAA
+AAEAAAAjAAAAFQAAAAEAAAAkAAAAEAAAAAEAAAAlAAAAAAAAAAYAAAAEAAAAAQAAACYAAAAFAAAA
+AQAAACcAAAAGAAAAAQAAACgAAAAUAAAAAQAAACkAAAAVAAAAAQAAACoAAAAQAAAAAQAAACsAAAAA
+AAAABgAAAAQAAAABAAAASAAAAAUAAAABAAAASQAAAAYAAAABAAAASgAAABQAAAABAAAASwAAABUA
+AAABAAAATAAAABAAAAABAAAATQAAAAAAAAAEAAAAAwAAAAEAAABZAAAAIQAAAAEAAABaAAAAIgAA
+AAEAAABbAAAAFwAAAAEAAABcAAAAAAAAAAQAAAADAAAAAQAAAF0AAAAhAAAAAQAAAF4AAAAiAAAA
+AQAAAF8AAAAXAAAAAQAAAGAAAAAAAAAABAAAAAMAAAABAAAAYQAAACEAAAABAAAAYgAAACIAAAAB
+AAAAYwAAABcAAAABAAAAZAAAAAAAAAAEAAAAAwAAAAEAAABlAAAAIQAAAAEAAABmAAAAIgAAAAEA
+AABnAAAAFwAAAAEAAABoAAAAAAAAAAQAAAADAAAAAQAAAGkAAAAhAAAAAQAAAGoAAAAiAAAAAQAA
+AGsAAAAXAAAAAQAAAGwAAAAAAAAABAAAAAMAAAABAAAAbQAAACEAAAABAAAAbgAAACIAAAABAAAA
+bwAAABcAAAABAAAAcAAAAAAAAAAEAAAAAwAAAAEAAABxAAAAIQAAAAEAAAByAAAAIgAAAAEAAABz
+AAAAFwAAAAEAAAB0AAAAAAAAAAQAAAADAAAAAQAAAHUAAAAhAAAAAQAAAHYAAAAiAAAAAQAAAHcA
+AAAXAAAAAQAAAHgAAAAAAAAABAAAAAMAAAABAAAAeQAAACEAAAABAAAAegAAACIAAAABAAAAewAA
+ABcAAAABAAAAfAAAAAAAAAAEAAAAAwAAAAEAAAB9AAAAIQAAAAEAAAB+AAAAIgAAAAEAAAB/AAAA
+FwAAAAEAAACAAAAAAAAAAAQAAAADAAAAAQAAAIEAAAAhAAAAAQAAAIIAAAAiAAAAAQAAAIMAAAAX
+AAAAAQAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAA4AAABAAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAeDE6c2luZ2xlAAAAAAAA
+AA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAA8D8OAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQ
+AAAACQAAAHgyOnNpbmdsZQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+APA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAAAQAAAAEAAAAAAAAABgAAABwA
+AAAAAADdAgAAAAEAAAACAAAABAAAAAYAAAACAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAAgAAAAMAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAFAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AAAEAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAA
+ABAAAAAGAAAAYiB+PSAwAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAEAAAAOAAAAOAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGEgPT0gMAAADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAsAAAACAAAADgAAAEgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAEgAAAAEAAAAAAAAAEAAAABIAAAAoYipiKSAtIDQqYSpjID09IDAAAAAAAAAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAADAAAAAEAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAAARAAAAAQAAAAAAAAAQAAAAEQAAAChiKmIpIC0gNCphKmMg
+PCAwAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAMAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAOAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAA8AAAACAAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAABiID49IDAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAQ
+AAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI
+AAAAAQAAAAUAAAABAAAAAAAAABAAAAAFAAAAYiA8IDAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+EAAAAAEAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ
+AAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAAAAAAAN0CAAAAAQAAAAIAAAARAAAAEgAAAAIAAAAA
+AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAACEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABAA
+AAABAAAADgAAAEgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAEQAAAAEAAAAAAAAAEAAA
+ABEAAAAoYipiKSAtIDQqYSpjID4gMAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAhADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADAAAAAEA
+AAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAEQA4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAACAAAAAEAAAAB
+AAAAAAAAAAYAAAAgAAAAAAAA3QIAAAABAAAAAwAAAA0AAAAOAAAADwAAAAIAAAAOAAAAOAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAhADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAADAAAAAEAAAAOAAAAOAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGEgfj0gMAAA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAAoAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAFEAOAAAAUAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAAAAAAAN0CAAAAAQAAAAIA
+AAAJAAAACwAAAAIAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAwAAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAAoAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAABEAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAgAA
+AA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAAABAAAAAGAAAA
+YiA9PSAwAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ
+AAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAEAAAAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAcAAAABAAAAAQAAAAAAAAAGAAAAHAAA
+AAAAAN0CAAAAAQAAAAIAAAAHAAAAEwAAAAIAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA
+AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAABAAAADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAABwAAAAIAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAQAAQALWMvYg4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAABAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAATAAAAAgAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAA
+AAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBOYU4ADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8O
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAAEAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAA0AAAACAAAADgAAADgAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAAEAAAAAYAAAAtYi8yKmEAAA4AAABI
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABAAAAAIAAAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAO
+AAAAAgAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAA
+AwBOYU4ADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAA
+ABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAAAgAAAA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAABEAAAACAAAADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHgAA
+AAEAAAAAAAAAEAAAAB4AAAAoLWIgLSBzcXJ0KGIqYiAtIDQqYSpjKSkgLyAyKmEAAA4AAABIAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABAAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAASAAAA
+AgAAAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB4AAAABAAAAAAAAABAAAAAe
+AAAAKC1iICsgc3FydChiKmIgLSA0KmEqYykpIC8gMiphAAAOAAAASAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+Pw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAIAAAAOAAAAMAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMATmFOAA4AAABIAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABgAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAATAAAAAgAA
+AA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwBOYU4A
+DgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAA
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAGAAAAAgAAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAA0AAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAA
+AAAAEAADAE5hTgAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAA
+AAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAYAAAACAAAA
+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
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAA
+DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAGlADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAABOQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAAJEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAA0QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAPkAOAAAA+AAAAAYAAAAIAAAA
+AgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABgAAAAEAAAASAAAAQ2VsbHMAR3Jp
+ZDEAR3JpZDIAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAAJABAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAABQAEAAwAAAABAAAAPAAAAENlbGwxAAAAAAAAAENlbGwyAAAAAAAAAHJlc3VsdAAAAAAAAHJl
+c3VsdF90ZXh0AGNvbG9yAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAA
+AAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAAgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAABQAEABAAAAABAAAAoAAAAEdyaWQwAAAAAAAAAAAAAABHcmlkMQAAAAAAAAAA
+AAAAR3JpZDIAAAAAAAAAAAAAAGZ1bmN0aW9uX25hbWUAAABmdW5jdGlvbl9pbnB1dHMAc2V0dGlu
+Z3MAAAAAAAAAAGNoZWNrZWQAAAAAAAAAAABvcGVuAAAAAAAAAAAAAAAAZmlnAAAAAAAAAAAAAAAA
+AG11bHRpX21vZGUAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAA
+AQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA
+AAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA
+AAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA
+AAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+CQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ
+AAAAAAAAAA4AAACIAAAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAAAFgAAAABAAAAAAAAAAIA
+AABYAAAAAAFJTQAAAAAOAAAASAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAAAAAAA
+__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml
+
+
+
+ 05765f89-bb6f-43d7-b675-5de03ebe80a7
+ maci64
+
+ %<Auto>
+ %<Auto>
+ 573581337
+ %<AutoIncrement:24.0>
+
+
+ none
+
+
+ normal
+
+ $bdroot
+
+ $bdroot |
+
+
+ |
+
+
+
+
+ warning
+
+
+
+ Ensure deterministic transfer (maximum delay)
+ Ensure data integrity only
+ Ensure deterministic transfer (minimum delay)
+ None
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSet0.xml
+
+
+
+ []
+
+
+
+ []
+
+ []
+ 0.0
+ 10.0
+ auto
+ on
+ auto
+ auto
+ 5
+ auto
+ 10*128*eps
+ 1000
+ 4
+ 1
+ auto
+ auto
+ 1
+ 1e-3
+ on
+ off
+ off
+ VariableStepDiscrete
+ auto
+ auto
+ DisableAll
+ UseLocalSettings
+ Nonadaptive
+ TrustRegion
+ off
+ off
+ Fast
+ off
+ off
+ Unconstrained
+ Whenever possible
+ []
+ off
+ off
+ ode3
+
+
+ []
+
+ []
+ 1
+ [t, u]
+ xFinal
+ xInitial
+ on
+ 1000
+ off
+ off
+ off
+ off
+ Array
+ ModelDataLogs
+ on
+ off
+ on
+ on
+ off
+ on
+ off
+ streamout
+ on
+ off
+ xout
+ tout
+ yout
+ logsout
+ dsmout
+ RefineOutputTimes
+ []
+ out
+ 1
+ off
+ timeseries
+ out.mat
+ [-inf, inf]
+
+
+
+ BooleansAsBitfields |
+ PassReuseOutputArgsAs |
+ PassReuseOutputArgsThreshold |
+ ZeroExternalMemoryAtStartup |
+ ZeroInternalMemoryAtStartup |
+ OptimizeModelRefInitCode |
+ NoFixptDivByZeroProtection |
+ UseSpecifiedMinMax |
+ EfficientTunableParamExpr |
+
+
+ []
+ on
+ on
+ on
+ Tunable
+ off
+ off
+ off
+ off
+ double
+ off
+ off
+ on
+ on
+ off
+ off
+ on
+ off
+
+ on
+ off
+ uint_T
+ Same as modeled
+ on
+ 64
+ Structure reference
+ 12
+ 2147483647
+ on
+ 5
+ off
+ off
+ Native Integer
+ on
+ on
+ off
+ off
+ off
+ on
+ inf
+ Inherit from target
+ on
+ off
+ off
+ off
+ on
+ on
+ off
+ off
+ level2
+ Balanced
+ on
+ off
+ off
+ GradualUnderflow
+ off
+
+
+
+ UseOnlyExistingSharedCode |
+
+
+ []
+ error
+ none
+ none
+ none
+ error
+ none
+ UseLocalSettings
+ UseLocalSettings
+ UseLocalSettings
+ warning
+ warning
+ warning
+ warning
+ on
+ Classic
+ none
+ off
+ UseLocalSettings
+ warning
+ warning
+ none
+ error
+ warning
+ warning
+ warning
+ warning
+ error
+ error
+ error
+ none
+ warning
+ none
+ warning
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ none
+ none
+ none
+ none
+ none
+ none
+ warning
+ none
+ warning
+ warning
+ warning
+ error
+ none
+ error
+ none
+ warning
+ warning
+ UseLocalSettings
+ on
+ off
+ none
+ error
+ none
+ none
+ warning
+ warning
+ none
+ warning
+ error
+ warning
+ warning
+ error
+ none
+ warning
+ none
+ warning
+ ErrorLevel1
+ WarnAndRepair
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ error
+ warning
+ warning
+ none
+ warning
+ warning
+ all
+ warning
+ on
+ warning
+ warning
+ off
+
+ none
+ off
+ warning
+ none
+
+
+ []
+
+ []
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ Undefined
+ Unspecified
+ 32
+ on
+ off
+ 32-bit Generic
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ on
+ off
+ Undefined
+ Unspecified
+ 32
+ 32
+ 32
+ Specified
+ off
+ on
+ on
+ on
+ EmbeddedCoderHSP
+
+
+ []
+
+ []
+ IfOutOfDateOrStructuralChange
+ on
+ error
+ off
+ on
+ None
+ Multi
+ Infer from blocks in model
+
+ on
+ off
+ off
+ off
+
+
+ []
+
+ []
+
+
+
+
+ []
+
+
+
+
+
+
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ off
+ on
+ 50
+ on
+ on
+ on
+ 65536
+ off
+ []
+ NotSpecified
+ UseInterfaceOnly
+ off
+ None
+
+ generic
+ C
+ off
+ 200
+ 1024
+ off
+
+
+ mkl-dnn
+ on
+
+
+
+ IncludeHyperlinkInReport |
+ GenerateTraceInfo |
+ GenerateTraceReport |
+ GenerateTraceReportSl |
+ GenerateTraceReportSf |
+ GenerateTraceReportEml |
+ PortableWordSizes |
+ GenerateWebview |
+ GenerateCodeMetricsReport |
+ GenerateCodeReplacementReport |
+ GenerateMissedCodeReplacementReport |
+ GenerateErtSFunction |
+ CreateSILPILBlock |
+ CodeExecutionProfiling |
+ CodeProfilingSaveOptions |
+ CodeProfilingInstrumentation |
+ CodeStackProfiling |
+
+
+ grt.tlc
+ None
+ off
+ off
+
+ off
+ make_rtw
+ on
+ off
+
+ grt_default_tmf
+
+ off
+ on
+ off
+ []
+ off
+ off
+ off
+ off
+ off
+ off
+
+
+
+
+
+
+
+
+
+
+
+ Automatically locate an installed toolchain
+ Faster Builds
+ []
+ off
+ off
+ off
+ None
+ off
+ executionProfile
+ SummaryOnly
+ off
+ off
+ C
+ None
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ []
+
+ Off
+ 1024
+
+ -1
+ discrete
+ 200
+ off
+ 1024
+ on
+ on
+ on
+ off
+ 3.5
+
+
+ 0
+ none
+ on
+ 19.05
+ unspecified
+
+
+
+ IgnoreCustomStorageClasses |
+ IgnoreTestpoints |
+ InsertBlockDesc |
+ SFDataObjDesc |
+ SimulinkDataObjDesc |
+ DefineNamingRule |
+ SignalNamingRule |
+ ParamNamingRule |
+ InlinedPrmAccess |
+ CustomSymbolStr |
+ CustomSymbolStrGlobalVar |
+ CustomSymbolStrType |
+ CustomSymbolStrField |
+ CustomSymbolStrFcn |
+ CustomSymbolStrFcnArg |
+ CustomSymbolStrBlkIO |
+ CustomSymbolStrTmpVar |
+ CustomSymbolStrMacro |
+ ReqsInCode |
+ BlockCommentType |
+ InsertPolySpaceComments |
+ MATLABFcnDesc |
+ InternalIdentifier |
+ CustomSymbolStrModelFcn |
+ CustomSymbolStrUtil |
+ CustomSymbolStrEmxType |
+ CustomSymbolStrEmxFcn |
+ CustomUserTokenString |
+
+
+ []
+
+ off
+ on
+ Auto
+ on
+ off
+ 31
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ 1
+ 8
+ $R$N$M
+ $N$R$M_T
+ $N$M
+ $R$N$M$F
+ $R$N
+ rt$I$N$M
+ rtb_$N$M
+ $N$M
+ $R$N$M
+ $N$C
+ emxArray_$M$N
+ emx$M$N
+
+
+ None
+
+ None
+
+ None
+
+ off
+ off
+ on
+ BlockPathComment
+ on
+ off
+ off
+
+ Shortened
+ Literals
+ off
+ off
+ []
+ error
+
+
+
+ GeneratePreprocessorConditionals |
+ IncludeMdlTerminateFcn |
+ RemoveResetFunc |
+ SuppressErrorStatus |
+ ERTCustomFileBanners |
+ GenerateSampleERTMain |
+ GenerateTestInterfaces |
+ ModelStepFunctionPrototypeControlCompliant |
+ CPPClassGenCompliant |
+ PreserveStateflowLocalDataDimensions |
+ PurelyIntegerCode |
+ PortableWordSizes |
+ SupportComplex |
+ SupportAbsoluteTime |
+ SupportContinuousTime |
+ SupportNonInlinedSFcns |
+ GenerateAllocFcn |
+ ExistingSharedCode |
+ ParenthesesLevel |
+ ERTMultiwordTypeDef |
+ MultiwordTypeDef |
+ RemoveDisableFunc |
+
+
+ []
+ ansi_tfl_table_tmw.mat
+
+
+ NOT IN USE
+ C89/C90 (ANSI)
+ None
+ Auto
+ System defined
+ 2048
+ 256
+ on
+ off
+
+ off
+ off
+ on
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ Auto
+ off
+ on
+ rt_
+ on
+ Nonreusable function
+ off
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ Nominal
+ Nominal
+ Simulink.SoftwareTarget.GRTCustomization
+ off
+ on
+ off
+ off
+ on
+ off
+ on
+ on
+ []
+ []
+ 1,2,3,4,...
+ Size,Breakpoints,Table
+ Size,Breakpoints,Table
+ Column-major
+ error
+ $R$E
+ $R$E
+ $R_data
+
+ None |
+
+ off
+ off
+ off
+ off
+ 1000000
+ 0
+ ext_comm
+
+ Level1
+ off
+ off
+ off
+ off
+ off
+ Error
+
+
+
+
+ []
+ Simulink Coverage Configuration Component
+ []
+ Simulink Coverage
+ off
+ EntireSystem
+ on
+ off
+ /
+ covdata
+
+ dw
+
+
+ off
+ on
+ on
+ on
+ on
+ covCumulativeData
+ off
+ on
+ slcov_output/$ModelName$
+ $ModelName$_cvdata
+ on
+ off
+
+ off
+ on
+ 1e-05
+ 0.01
+ off
+ 0
+ 0
+ Masking
+
+
+ Configuration
+ Solver
+ [ 200, 74, 1080, 704 ]
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml
+
+
+ Configuration
+
+
+__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml
+
+
+ 0
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ Unset
+ 0
+ Simulink
+ 0
+ 0
+ 1
+
+
+__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml
+
+
+
+ HighNumberLast
+
+ true
+
+
+
+
+ false
+ Default
+ -2147483648
+
+
+ true
+
+ false
+ 1
+ true
+ FiM
+ 40
+
+ FiM
+ -2139062017
+ true
+ ZOHContinuous01
+
+ 1.0
+ 0.0
+
+ 0
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml
+
+
+
+
+
+ 40
+
+ #808080
+ true
+ [0, 1]
+ FiM
+
+ FiM
+ base
+
+
+ FiM
+
+
+
+ Default
+
+
+
+
+
+ 0,0
+ 0,0,0,0
+
+ FiM
+ base
+
+ 0,0
+
+ FiM
+ graph.Graph
+
+
+
+ Default
+ graph.Graph
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_10.xml
+
+
+ quad_fcn_fp/code
+ [293 257 161 328]
+ [0 156.75 0 153.75]
+ [1 1 1280 778 1.25]
+ 10
+ LIBRARY_TOOLBAR
+ 8
+ CLUSTER_CHART
+ EML_CHART
+ 1
+ 1
+
+ quad_fcn_fp
+
+
+
+ eML_blk_kernel()
+ [18 64.5 118 66]
+ 12
+ SUBCHART
+ 10
+ FUNC_STATE
+ CLUSTER_STATE
+
+ 1
+ function [x1,x2] = quad_fcn_fp(a,b,c)
+%%#eml
+x1=-c/b;
+x2=NaN;
+if(a == 0)
+ if(b ~= 0)
+ x1 = -c/b;
+ x2 = NaN;
+ elseif(b == 0)
+ x1 = NaN;
+ x2 = NaN;
+ end
+elseif(a ~= 0)
+ if((b*b) - 4*a*c == 0)
+ x1 = -b/2*a;
+ x2 = NaN;
+ elseif((b*b) - 4*a*c < 0)
+ x1 = NaN;
+ x2 = NaN;
+ elseif((b*b) - 4*a*c > 0)
+ if(b >= 0)
+ x1 = (-b - sqrt(b*b - 4*a*c)) / 2*a;
+ x2 = c / (a* ((-b - sqrt(b*b - 4*a*c)) / 2*a));
+ elseif(b < 0)
+ x1 = (-b + sqrt(b*b - 4*a*c)) / 2*a;
+ x2 = c / (a* ((-b + sqrt(b*b - 4*a*c)) / 2*a));
+ end
+ end
+end
+
+ Matrix(4,1)
+[205.0, 227.0, 1080.0, 733.0]
+ 1
+
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ {eML_blk_kernel();}
+ [32.125 19.875 102.544 14.964]
+ 12
+
+ [0 0 1 0 23.5747 14.625 0 0]
+
+
+ 3
+ [1 0 -1 0 23.5747 42.5747 0 0]
+
+ [23.5747 24.9468]
+ [23.575 23.575 14.625 34.575]
+ 10
+ SMART
+
+ BOTH_STICK
+
+ 1
+
+
+ [23.5747 49.5747 7]
+ 10
+ CONNECTIVE_JUNCTION
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_20.xml
+
+
+ quad_fcn_subtype/code
+ [293 257 161 328]
+ [0 156.75 0 153.75]
+ [1 1 1280 778 1.25]
+ 20
+ LIBRARY_TOOLBAR
+ 8
+ CLUSTER_CHART
+ EML_CHART
+ 2
+ 1
+
+ quad_fcn_subtype
+
+
+
+ eML_blk_kernel()
+ [18 64.5 118 66]
+ 12
+ SUBCHART
+ 20
+ FUNC_STATE
+ CLUSTER_STATE
+
+ 1
+ function [x1,x2] = quad_fcn_subtype(c,a,b)
+%%#eml
+x1=-c/b;
+x2=-c/b;
+if(a == 0)
+ if(b ~= 0)
+ x1 = -c/b;
+ x2 = -c/b;
+ end
+elseif(a ~= 0)
+ if((b^2) - 4*a*c == 0)
+ x1 = -b/2*a;
+ x2 = -b/2*a;
+ elseif((b^2) - 4*a*c > 0)
+ if(b>=0)
+ x1 = (-b - sqrt(b^2 - 4*a*c)) / 2*a;
+ x2 = c / (a* ((-b - sqrt(b^2 - 4*a*c)) / 2*a));
+ elseif(b<0)
+ x1 = (-b + sqrt(b^2 - 4*a*c)) / 2*a;
+ x2 = c / (a* ((-b + sqrt(b^2 - 4*a*c)) / 2*a));
+ end
+ end
+end
+
+ Matrix(4,1)
+[205.0, 227.0, 1080.0, 733.0]
+ 1
+
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ {eML_blk_kernel();}
+ [32.125 19.875 102.544 14.964]
+ 12
+
+ [0 0 1 0 23.5747 14.625 0 0]
+
+
+ 3
+ [1 0 -1 0 23.5747 42.5747 0 0]
+
+ [23.5747 24.9468]
+ [23.575 23.575 14.625 34.575]
+ 20
+ SMART
+
+ BOTH_STICK
+
+ 1
+
+
+ [23.5747 49.5747 7]
+ 20
+ CONNECTIVE_JUNCTION
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml
+
+
+
+ 80000046
+
+
+ Default Simulink S-Function Target.
+
+
+
+
+
+
+ 9
+ quad_fcn_fp/code
+ 10
+
+
+ 9
+ quad_fcn_subtype/code
+ 20
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_38.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml
+
+
+ [395, 327, 933, 805]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ Simulink
+
+ [35, 38, 65, 52]
+ -1
+
+
+ [35, 38, 65, 52]
+ -2
+ 2
+
+
+ [35, 38, 65, 52]
+ -3
+ 3
+
+
+ [3, 2]
+ [250, 51, 320, 99]
+ -4
+ 1.31
+ Stateflow.Translate.translate
+ ExplicitOnly
+ on
+ off
+ MATLAB Function
+
+
+
+ [35, 53, 65, 67]
+ -5
+
+
+ [35, 53, 65, 67]
+ -6
+ 2
+
+
+ 1
+ 4#out:1
+ 3#in:1
+
+
+ 2
+ 5#out:1
+ 3#in:2
+
+
+ 3
+ 6#out:1
+ 3#in:3
+
+
+ 4
+ 3#out:1
+ 8#in:1
+
+
+ 5
+ 3#out:2
+ 9#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml
+
+
+ [219, 337, 814, 775]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ 27
+ 13
+ Simulink
+
+ [20, 101, 40, 119]
+ -1
+
+
+ [20, 136, 40, 154]
+ -2
+ 2
+
+
+ [20, 171, 40, 189]
+ -3
+ 3
+
+
+ [1, 1]
+ [270, 230, 320, 270]
+ 2
+ 1
+
+
+ Stateflow S-Function 2
+ [3, 3]
+ [180, 100, 230, 180]
+ 1
+ sf_sfun
+ [3 3]
+ off
+ on
+ off
+
+ 2
+ x1
+
+
+ 3
+ x2
+
+
+
+ [460, 241, 480, 259]
+ 3
+
+
+ [460, 101, 480, 119]
+ -7
+
+
+ [460, 136, 480, 154]
+ -8
+ 2
+
+
+ 8
+ 3::1#out:1
+ 3::25#in:1
+
+
+ 9
+ 3::18#out:1
+ 3::25#in:2
+
+
+ 10
+ 3::19#out:1
+ 3::25#in:3
+
+
+ x1
+ 11
+ [0, 0]
+ 3::25#out:2
+ 3::5#in:1
+
+
+ x2
+ 12
+ [0, 0]
+ 3::25#out:3
+ 3::20#in:1
+
+
+ 13
+ 3::26#out:1
+ 3::27#in:1
+
+
+ 14
+ 3::25#out:1
+ 3::26#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_38.xml
+
+
+ [395, 327, 933, 805]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ Simulink
+
+ [35, 38, 65, 52]
+ -1
+
+
+ [35, 38, 65, 52]
+ -2
+ 2
+
+
+ [35, 38, 65, 52]
+ -3
+ 3
+
+
+ [3, 2]
+ [250, 51, 320, 99]
+ -4
+ 1.31
+ Stateflow.Translate.translate
+ ExplicitOnly
+ on
+ off
+ MATLAB Function
+
+
+
+ [35, 53, 65, 67]
+ -5
+
+
+ [35, 53, 65, 67]
+ -6
+ 2
+
+
+ 1
+ 41#out:1
+ 40#in:1
+
+
+ 2
+ 42#out:1
+ 40#in:2
+
+
+ 3
+ 43#out:1
+ 40#in:3
+
+
+ 4
+ 40#out:1
+ 44#in:1
+
+
+ 5
+ 40#out:2
+ 45#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_40.xml
+
+
+ [219, 337, 814, 775]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ 27
+ 13
+ Simulink
+
+ [20, 101, 40, 119]
+ -1
+
+
+ [20, 136, 40, 154]
+ -2
+ 2
+
+
+ [20, 171, 40, 189]
+ -3
+ 3
+
+
+ [1, 1]
+ [270, 230, 320, 270]
+ 2
+ 1
+
+
+ Stateflow S-Function 1
+ [3, 3]
+ [180, 100, 230, 180]
+ 1
+ sf_sfun
+ [3 3]
+ off
+ on
+ off
+
+ 2
+ x1
+
+
+ 3
+ x2
+
+
+
+ [460, 241, 480, 259]
+ 3
+
+
+ [460, 101, 480, 119]
+ -7
+
+
+ [460, 136, 480, 154]
+ -8
+ 2
+
+
+ 8
+ 40::1#out:1
+ 40::25#in:1
+
+
+ 9
+ 40::18#out:1
+ 40::25#in:2
+
+
+ 10
+ 40::19#out:1
+ 40::25#in:3
+
+
+ x1
+ 11
+ [0, 0]
+ 40::25#out:2
+ 40::5#in:1
+
+
+ x2
+ 12
+ [0, 0]
+ 40::25#out:3
+ 40::20#in:1
+
+
+ 13
+ 40::26#out:1
+ 40::27#in:1
+
+
+ 14
+ 40::25#out:1
+ 40::26#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml
+
+
+ [470, 174, 1298, 794]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ on
+ off
+ Deduce
+ 89
+ simulink-default.rpt
+ 46
+ Simulink
+
+ [3, 1]
+ [170, 157, 180, 243]
+ -1
+ off
+ 3
+ bar
+ on
+
+
+ [35, 105, 65, 135]
+ -2
+ 4
+
+
+ [35, 185, 65, 215]
+ -3
+ -5
+
+
+ [30, 30, 60, 60]
+ -4
+
+
+ [1, 2]
+ [370, 156, 375, 194]
+ -5
+ off
+ 2
+
+
+ [1]
+ [505, 20, 595, 50]
+ -6
+ 1
+
+
+ [1]
+ [515, 215, 605, 245]
+ -7
+ 1
+
+
+ [1]
+ [430, 295, 520, 325]
+ -8
+ 1
+
+
+ [1]
+ [435, 350, 525, 380]
+ -9
+ 1
+
+
+ [1, 1]
+ [235, 152, 325, 208]
+ -10
+ roots
+ 2
+ off
+
+
+ []
+ [485, 59, 515, 91]
+ -11
+
+ 8,19
+ Demux:o2quad_fcn_subtype:o2
+
+ Simulink.scopes.TimeScopeBlockCfg('CurrentConfiguration', extmgr.ConfigurationSet(extmgr.Configuration('Core','General UI',true),extmgr.Configuration('Core','Source UI',true),extmgr.Configuration('Sources','WiredSimulink',true,'DataLoggingSaveFormat','StructureWithTime','DataLoggingLimitDataPoints',true,'DataLoggingDecimation','1','DataLoggingDecimateData',true),extmgr.Configuration('Visuals','Time Domain',true,'SerializedDisplays',{struct('MinYLimReal','0.9','MaxYLimReal','1.1','YLabelReal','','MinYLimMag','0.9','MaxYLimMag','1.1','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',2,'LineNames',{{'Demux/2','quad_fcn_subtype/x2'}},'ShowContent',true,'Placement',1)},'DisplayPropertyDefaults',struct('MinYLimReal','0.9','MaxYLimReal','1.1','YLabelReal','','MinYLimMag','0.9','MaxYLimMag','1.1','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1)),extmgr.Configuration('Tools','Plot Navigation',true),extmgr.Configuration('Tools','Measurements',true,'Version','2021b')),'Version','2021b','Location',[361 434 685 673])
+ 1
+ on
+
+
+ []
+ [475, 158, 505, 192]
+ -12
+
+ 8,19
+ Demux:o1quad_fcn_subtype:o1
+
+ Simulink.scopes.TimeScopeBlockCfg('CurrentConfiguration', extmgr.ConfigurationSet(extmgr.Configuration('Core','General UI',true),extmgr.Configuration('Core','Source UI',true),extmgr.Configuration('Sources','WiredSimulink',true,'DataLoggingVariableName','ScopeData1','DataLoggingSaveFormat','StructureWithTime','DataLoggingLimitDataPoints',true,'DataLoggingDecimation','1','DataLoggingDecimateData',true),extmgr.Configuration('Visuals','Time Domain',true,'SerializedDisplays',{struct('MinYLimReal','-6.00000','MaxYLimReal','-4.00000','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','6.00000','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',2,'LineNames',{{'Demux/1','quad_fcn_subtype/x1'}},'ShowContent',true,'Placement',1)},'DisplayPropertyDefaults',struct('MinYLimReal','-6.00000','MaxYLimReal','-4.00000','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','6.00000','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Title','%<SignalLabel>','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',0,'LineNames',{{[]}},'ShowContent',true,'Placement',1)),extmgr.Configuration('Tools','Plot Navigation',true),extmgr.Configuration('Tools','Measurements',true,'Version','2021b')),'Version','2021b','Location',[37 522 442 784])
+ 1
+ on
+
+
+ [2, 1]
+ [455, 25, 475, 45]
+ -13
+ off
+ |+-
+
+
+ [2, 1]
+ [480, 220, 500, 240]
+ -14
+ off
+ |+-
+
+
+ [3, 2]
+ [555, 301, 720, 369]
+ -15
+ 1.12
+ on
+
+ TTdiag Copy
+ TTdiag Delete
+ TTdiag Open Simulink
+ off
+
+ port_label('input',1,'a');port_label('input',2,'b');port_label('input',3,'c');port_label('output',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')
+ Table Block
+
+
+
+
+ [3, 2]
+ [185, 31, 350, 99]
+ -16
+ 1.12
+ on
+
+ TTdiag Copy
+ TTdiag Delete
+ TTdiag Open Simulink
+ off
+
+ port_label('input',1,'c');port_label('input',2,'a');port_label('input',3,'b');port_label('output',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')
+ Table Block
+
+
+
+
+ 1
+ 13#out:1
+ [45, 0; 0, 20]
+
+ 2
+ [0, 105]
+ 14#in:1
+
+
+ 3
+ 1#in:2
+
+
+
+ 4
+ 11#out:1
+ [30, 0; 0, 80; 40, 0]
+
+ 5
+ 14#in:2
+
+
+ 6
+ [0, -115]
+ 1#in:3
+
+
+
+ 7
+ 12#out:1
+ [20, 0; 0, 30; 30, 0]
+
+ 8
+ 14#in:3
+
+
+ 9
+ [0, -185]
+ 1#in:1
+
+
+
+ 10
+ 14#out:1
+ [20, 0; 0, -20]
+ 10#in:1
+
+
+ 11
+ 10#out:1
+ [25, 0]
+ 21#in:1
+
+
+ 12
+ 1#out:1
+ [30, 0; 0, -15; 25, 0]
+
+ 13
+ 27#in:1
+
+
+ 14
+ [0, 275]
+ 31#in:1
+
+
+
+ 15
+ [0, 0]
+ 21#out:2
+ [0, -5; 35, 0]
+ 28#in:2
+
+
+ 16
+ 1#out:2
+ [40, 0; 0, 145; 25, 0]
+
+ 17
+ 28#in:1
+
+
+ 18
+ 32#in:1
+
+
+
+ 19
+ 28#out:1
+ 30#in:1
+
+
+ 20
+ 27#out:1
+ 29#in:1
+
+
+ 21
+ [0, 0]
+ 21#out:1
+ [10, 0]
+ 27#in:2
+
+
+ This model demonstrates the use of predicate subtyping through
+the implementation of quad_fcn, which will give the real roots
+of a quadratic function.
+
+results are compared to the matlab function roots, results are
+generally the same, although sometimes there is a small error
+on the order of 1e-16.
+
+Currently does not activly check that inputs satisfy subtype
+constraints, in these cases proper output is not guaranteed.
+
+This example will not work under CVC3 as complex functions like
+sqrt are not supported.
+
+This example requires the NASA PVS libraries
+ [79, 267, 368, 419]
+ [0, 0, 0, 0]
+ -1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml
+
+
+
+
+ 1
+ [470.0, 174.0, 828.0, 620.0]
+
+ 0
+ Left
+ 50
+ 50
+ 8
+ Unset
+
+
+ 1
+
+
+ 1
+ 1
+ SimulinkTopLevel
+ 0
+ [790.0, 385.0]
+ 0.89473684210526316
+ [-63.845588235294088, 4.35294117647058]
+ [-63.845588235294088, 4.35294117647058, 882.94117647058818, 430.29411764705884]
+
+
+
+ Simulink:Editor:ReferencedFiles
+ Referenced Files
+ 0
+
+ {"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"}
+
+ 0
+ Left
+ 640
+ 480
+ Unset
+
+
+ GLUE2:PropertyInspector
+ Property Inspector
+ 0
+
+
+ 0
+ Right
+ 640
+ 480
+ Unset
+
+
+ AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAAzwAAAG+AAAAAQAAAAIAAAABAAAAAvwAAAAA
+
+ 34490877-6e2a-4f6a-bbcd-64cdf4dabf57
+
+
+
+
+
+__MWOPC_PACKAGE_END__
+=======
Model {
Name "quadratic_roots"
Version 7.5
@@ -2420,3 +5288,4 @@ Stateflow {
linkNode [1 0 0]
}
}
+>>>>>>> 6e8ce001ab8e32d0a66c7fab9f1c8f2d9f1bad69
diff --git a/Examples/quadratic_roots.mdl.r2010a b/Examples/quadratic_roots.mdl.r2010a
new file mode 100644
index 0000000000000000000000000000000000000000..caa8dc142c27c7c65aace158da90d60f4009ceaa
--- /dev/null
+++ b/Examples/quadratic_roots.mdl.r2010a
@@ -0,0 +1,2422 @@
+Model {
+ Name "quadratic_roots"
+ Version 7.5
+ MdlSubVersion 0
+ GraphicalInterface {
+ NumRootInports 0
+ NumRootOutports 0
+ ParameterArgumentNames ""
+ ComputedModelVersion "1.18"
+ NumModelReferences 0
+ NumTestPointedSignals 0
+ }
+ SavedCharacterEncoding "ISO-8859-1"
+ SaveDefaultBlockParams on
+ ScopeRefreshTime 0.035000
+ OverrideScopeRefreshTime on
+ DisableAllScopes off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ MinMaxOverflowArchiveMode "Overwrite"
+ MaxMDLFileLineLength 120
+ Created "Fri Jan 21 14:32:13 2011"
+ Creator "colin"
+ UpdateHistory "UpdateHistoryNever"
+ ModifiedByFormat "%"
+ LastModifiedBy "matthew"
+ ModifiedDateFormat "%"
+ LastModifiedDate "Thu May 15 16:21:42 2014"
+ RTWModifiedTimeStamp 322071698
+ ModelVersionFormat "1.%"
+ ConfigurationManager "none"
+ SampleTimeColors off
+ SampleTimeAnnotations off
+ LibraryLinkDisplay "none"
+ WideLines off
+ ShowLineDimensions off
+ ShowPortDataTypes off
+ ShowLoopsOnError on
+ IgnoreBidirectionalLines off
+ ShowStorageClass off
+ ShowTestPointIcons on
+ ShowSignalResolutionIcons on
+ ShowViewerIcons on
+ SortedOrder off
+ ExecutionContextIcon off
+ ShowLinearizationAnnotations on
+ BlockNameDataTip off
+ BlockParametersDataTip off
+ BlockDescriptionStringDataTip off
+ ToolBar on
+ StatusBar on
+ BrowserShowLibraryLinks off
+ BrowserLookUnderMasks off
+ SimulationMode "normal"
+ LinearizationMsg "none"
+ Profile off
+ ParamWorkspaceSource "MATLABWorkspace"
+ AccelSystemTargetFile "accel.tlc"
+ AccelTemplateMakefile "accel_default_tmf"
+ AccelMakeCommand "make_rtw"
+ TryForcingSFcnDF off
+ RecordCoverage off
+ CovPath "/"
+ CovSaveName "covdata"
+ CovMetricSettings "dw"
+ CovNameIncrementing off
+ CovHtmlReporting on
+ CovForceBlockReductionOff on
+ covSaveCumulativeToWorkspaceVar on
+ CovSaveSingleToWorkspaceVar on
+ CovCumulativeVarName "covCumulativeData"
+ CovCumulativeReport off
+ CovReportOnPause on
+ CovModelRefEnable "Off"
+ CovExternalEMLEnable off
+ ExtModeBatchMode off
+ ExtModeEnableFloating on
+ ExtModeTrigType "manual"
+ ExtModeTrigMode "normal"
+ ExtModeTrigPort "1"
+ ExtModeTrigElement "any"
+ ExtModeTrigDuration 1000
+ ExtModeTrigDurationFloating "auto"
+ ExtModeTrigHoldOff 0
+ ExtModeTrigDelay 0
+ ExtModeTrigDirection "rising"
+ ExtModeTrigLevel 0
+ ExtModeArchiveMode "off"
+ ExtModeAutoIncOneShot off
+ ExtModeIncDirWhenArm off
+ ExtModeAddSuffixToVar off
+ ExtModeWriteAllDataToWs off
+ ExtModeArmWhenConnect on
+ ExtModeSkipDownloadWhenConnect off
+ ExtModeLogAll on
+ ExtModeAutoUpdateStatusClock on
+ BufferReuse on
+ ShowModelReferenceBlockVersion off
+ ShowModelReferenceBlockIO off
+ Array {
+ Type "Handle"
+ Dimension 1
+ Simulink.ConfigSet {
+ $ObjectID 1
+ Version "1.10.0"
+ Array {
+ Type "Handle"
+ Dimension 8
+ Simulink.SolverCC {
+ $ObjectID 2
+ Version "1.10.0"
+ StartTime "0.0"
+ StopTime "10.0"
+ AbsTol "auto"
+ FixedStep "auto"
+ InitialStep "auto"
+ MaxNumMinSteps "-1"
+ MaxOrder 5
+ ZcThreshold "auto"
+ ConsecutiveZCsStepRelTol "10*128*eps"
+ MaxConsecutiveZCs "1000"
+ ExtrapolationOrder 4
+ NumberNewtonIterations 1
+ MaxStep "auto"
+ MinStep "auto"
+ MaxConsecutiveMinStep "1"
+ RelTol "1e-3"
+ SolverMode "Auto"
+ Solver "VariableStepDiscrete"
+ SolverName "VariableStepDiscrete"
+ SolverJacobianMethodControl "auto"
+ ShapePreserveControl "DisableAll"
+ ZeroCrossControl "UseLocalSettings"
+ ZeroCrossAlgorithm "Nonadaptive"
+ AlgebraicLoopSolver "TrustRegion"
+ SolverResetMethod "Fast"
+ PositivePriorityOrder off
+ AutoInsertRateTranBlk off
+ SampleTimeConstraint "Unconstrained"
+ InsertRTBMode "Whenever possible"
+ }
+ Simulink.DataIOCC {
+ $ObjectID 3
+ Version "1.10.0"
+ Decimation "1"
+ ExternalInput "[t, u]"
+ FinalStateName "xFinal"
+ InitialState "xInitial"
+ LimitDataPoints on
+ MaxDataPoints "1000"
+ LoadExternalInput off
+ LoadInitialState off
+ SaveFinalState off
+ SaveCompleteFinalSimState off
+ SaveFormat "Array"
+ SaveOutput on
+ SaveState off
+ SignalLogging on
+ DSMLogging on
+ InspectSignalLogs off
+ SaveTime on
+ ReturnWorkspaceOutputs off
+ StateSaveName "xout"
+ TimeSaveName "tout"
+ OutputSaveName "yout"
+ SignalLoggingName "logsout"
+ DSMLoggingName "dsmout"
+ OutputOption "RefineOutputTimes"
+ OutputTimes "[]"
+ ReturnWorkspaceOutputsName "out"
+ Refine "1"
+ }
+ Simulink.OptimizationCC {
+ $ObjectID 4
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 7
+ Cell "BooleansAsBitfields"
+ Cell "PassReuseOutputArgsAs"
+ Cell "PassReuseOutputArgsThreshold"
+ Cell "ZeroExternalMemoryAtStartup"
+ Cell "ZeroInternalMemoryAtStartup"
+ Cell "OptimizeModelRefInitCode"
+ Cell "NoFixptDivByZeroProtection"
+ PropName "DisabledProps"
+ }
+ BlockReduction on
+ BooleanDataType on
+ ConditionallyExecuteInputs on
+ InlineParams off
+ UseIntDivNetSlope off
+ InlineInvariantSignals off
+ OptimizeBlockIOStorage on
+ BufferReuse on
+ EnhancedBackFolding off
+ StrengthReduction off
+ EnforceIntegerDowncast on
+ ExpressionFolding on
+ BooleansAsBitfields off
+ BitfieldContainerType "uint_T"
+ EnableMemcpy on
+ MemcpyThreshold 64
+ PassReuseOutputArgsAs "Structure reference"
+ ExpressionDepthLimit 2147483647
+ FoldNonRolledExpr on
+ LocalBlockOutputs on
+ RollThreshold 5
+ SystemCodeInlineAuto off
+ StateBitsets off
+ DataBitsets off
+ UseTempVars off
+ ZeroExternalMemoryAtStartup on
+ ZeroInternalMemoryAtStartup on
+ InitFltsAndDblsToZero off
+ NoFixptDivByZeroProtection off
+ EfficientFloat2IntCast off
+ EfficientMapNaN2IntZero on
+ OptimizeModelRefInitCode off
+ LifeSpan "inf"
+ MaxStackSize "Inherit from target"
+ BufferReusableBoundary on
+ SimCompilerOptimization "Off"
+ AccelVerboseBuild off
+ }
+ Simulink.DebuggingCC {
+ $ObjectID 5
+ Version "1.10.0"
+ RTPrefix "error"
+ ConsistencyChecking "none"
+ ArrayBoundsChecking "none"
+ SignalInfNanChecking "none"
+ SignalRangeChecking "none"
+ ReadBeforeWriteMsg "UseLocalSettings"
+ WriteAfterWriteMsg "UseLocalSettings"
+ WriteAfterReadMsg "UseLocalSettings"
+ AlgebraicLoopMsg "warning"
+ ArtificialAlgebraicLoopMsg "warning"
+ SaveWithDisabledLinksMsg "warning"
+ SaveWithParameterizedLinksMsg "warning"
+ CheckSSInitialOutputMsg on
+ UnderspecifiedInitializationDetection "Classic"
+ MergeDetectMultiDrivingBlocksExec "none"
+ CheckExecutionContextPreStartOutputMsg off
+ CheckExecutionContextRuntimeOutputMsg off
+ SignalResolutionControl "UseLocalSettings"
+ BlockPriorityViolationMsg "warning"
+ MinStepSizeMsg "warning"
+ TimeAdjustmentMsg "none"
+ MaxConsecutiveZCsMsg "error"
+ SolverPrmCheckMsg "warning"
+ InheritedTsInSrcMsg "warning"
+ DiscreteInheritContinuousMsg "warning"
+ MultiTaskDSMMsg "error"
+ MultiTaskCondExecSysMsg "error"
+ MultiTaskRateTransMsg "error"
+ SingleTaskRateTransMsg "none"
+ TasksWithSamePriorityMsg "warning"
+ SigSpecEnsureSampleTimeMsg "warning"
+ CheckMatrixSingularityMsg "none"
+ IntegerOverflowMsg "warning"
+ Int32ToFloatConvMsg "warning"
+ ParameterDowncastMsg "error"
+ ParameterOverflowMsg "error"
+ ParameterUnderflowMsg "none"
+ ParameterPrecisionLossMsg "warning"
+ ParameterTunabilityLossMsg "warning"
+ FixptConstUnderflowMsg "none"
+ FixptConstOverflowMsg "none"
+ FixptConstPrecisionLossMsg "none"
+ UnderSpecifiedDataTypeMsg "none"
+ UnnecessaryDatatypeConvMsg "none"
+ VectorMatrixConversionMsg "none"
+ InvalidFcnCallConnMsg "error"
+ FcnCallInpInsideContextMsg "Use local settings"
+ SignalLabelMismatchMsg "none"
+ UnconnectedInputMsg "warning"
+ UnconnectedOutputMsg "warning"
+ UnconnectedLineMsg "warning"
+ SFcnCompatibilityMsg "none"
+ UniqueDataStoreMsg "none"
+ BusObjectLabelMismatch "warning"
+ RootOutportRequireBusObject "warning"
+ AssertControl "UseLocalSettings"
+ EnableOverflowDetection off
+ ModelReferenceIOMsg "none"
+ ModelReferenceVersionMismatchMessage "none"
+ ModelReferenceIOMismatchMessage "none"
+ ModelReferenceCSMismatchMessage "none"
+ UnknownTsInhSupMsg "warning"
+ ModelReferenceDataLoggingMessage "warning"
+ ModelReferenceSymbolNameMessage "warning"
+ ModelReferenceExtraNoncontSigs "error"
+ StateNameClashWarn "warning"
+ SimStateInterfaceChecksumMismatchMsg "warning"
+ StrictBusMsg "ErrorLevel1"
+ BusNameAdapt "WarnAndRepair"
+ NonBusSignalsTreatedAsBus "none"
+ LoggingUnavailableSignals "error"
+ BlockIODiagnostic "none"
+ }
+ Simulink.HardwareCC {
+ $ObjectID 6
+ Version "1.10.0"
+ ProdBitPerChar 8
+ ProdBitPerShort 16
+ ProdBitPerInt 32
+ ProdBitPerLong 32
+ ProdIntDivRoundTo "Undefined"
+ ProdEndianess "Unspecified"
+ ProdWordSize 32
+ ProdShiftRightIntArith on
+ ProdHWDeviceType "32-bit Generic"
+ TargetBitPerChar 8
+ TargetBitPerShort 16
+ TargetBitPerInt 32
+ TargetBitPerLong 32
+ TargetShiftRightIntArith on
+ TargetIntDivRoundTo "Undefined"
+ TargetEndianess "Unspecified"
+ TargetWordSize 32
+ TargetTypeEmulationWarnSuppressLevel 0
+ TargetPreprocMaxBitsSint 32
+ TargetPreprocMaxBitsUint 32
+ TargetHWDeviceType "Specified"
+ TargetUnknown off
+ ProdEqTarget on
+ }
+ Simulink.ModelReferenceCC {
+ $ObjectID 7
+ Version "1.10.0"
+ UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+ CheckModelReferenceTargetMessage "error"
+ EnableParallelModelReferenceBuilds off
+ ParallelModelReferenceMATLABWorkerInit "None"
+ ModelReferenceNumInstancesAllowed "Multi"
+ PropagateVarSize "Infer from blocks in model"
+ ModelReferencePassRootInputsByReference on
+ ModelReferenceMinAlgLoopOccurrences off
+ PropagateSignalLabelsOutOfModel off
+ SupportModelReferenceSimTargetCustomCode off
+ }
+ Simulink.SFSimCC {
+ $ObjectID 8
+ Version "1.10.0"
+ SFSimEnableDebug on
+ SFSimOverflowDetection on
+ SFSimEcho on
+ SimBlas on
+ SimCtrlC on
+ SimExtrinsic on
+ SimIntegrity on
+ SimUseLocalCustomCode off
+ SimBuildMode "sf_incremental_build"
+ }
+ Simulink.RTWCC {
+ $BackupClass "Simulink.RTWCC"
+ $ObjectID 9
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 6
+ Cell "IncludeHyperlinkInReport"
+ Cell "GenerateTraceInfo"
+ Cell "GenerateTraceReport"
+ Cell "GenerateTraceReportSl"
+ Cell "GenerateTraceReportSf"
+ Cell "GenerateTraceReportEml"
+ PropName "DisabledProps"
+ }
+ SystemTargetFile "grt.tlc"
+ GenCodeOnly off
+ MakeCommand "make_rtw"
+ GenerateMakefile on
+ TemplateMakefile "grt_default_tmf"
+ GenerateReport off
+ SaveLog off
+ RTWVerbose on
+ RetainRTWFile off
+ ProfileTLC off
+ TLCDebug off
+ TLCCoverage off
+ TLCAssert off
+ ProcessScriptMode "Default"
+ ConfigurationMode "Optimized"
+ ConfigAtBuild off
+ RTWUseLocalCustomCode off
+ RTWUseSimCustomCode off
+ IncludeHyperlinkInReport off
+ LaunchReport off
+ TargetLang "C"
+ IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+ IncludeERTFirstTime off
+ GenerateTraceInfo off
+ GenerateTraceReport off
+ GenerateTraceReportSl off
+ GenerateTraceReportSf off
+ GenerateTraceReportEml off
+ GenerateCodeInfo off
+ RTWCompilerOptimization "Off"
+ CheckMdlBeforeBuild "Off"
+ CustomRebuildMode "OnUpdate"
+ Array {
+ Type "Handle"
+ Dimension 2
+ Simulink.CodeAppCC {
+ $ObjectID 10
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 19
+ Cell "IgnoreCustomStorageClasses"
+ Cell "IgnoreTestpoints"
+ Cell "InsertBlockDesc"
+ Cell "SFDataObjDesc"
+ Cell "SimulinkDataObjDesc"
+ Cell "DefineNamingRule"
+ Cell "SignalNamingRule"
+ Cell "ParamNamingRule"
+ Cell "InlinedPrmAccess"
+ Cell "CustomSymbolStr"
+ Cell "CustomSymbolStrGlobalVar"
+ Cell "CustomSymbolStrType"
+ Cell "CustomSymbolStrField"
+ Cell "CustomSymbolStrFcn"
+ Cell "CustomSymbolStrFcnArg"
+ Cell "CustomSymbolStrBlkIO"
+ Cell "CustomSymbolStrTmpVar"
+ Cell "CustomSymbolStrMacro"
+ Cell "ReqsInCode"
+ PropName "DisabledProps"
+ }
+ ForceParamTrailComments off
+ GenerateComments on
+ IgnoreCustomStorageClasses on
+ IgnoreTestpoints off
+ IncHierarchyInIds off
+ MaxIdLength 31
+ PreserveName off
+ PreserveNameWithParent off
+ ShowEliminatedStatement off
+ IncAutoGenComments off
+ SimulinkDataObjDesc off
+ SFDataObjDesc off
+ IncDataTypeInIds off
+ MangleLength 1
+ CustomSymbolStrGlobalVar "$R$N$M"
+ CustomSymbolStrType "$N$R$M"
+ CustomSymbolStrField "$N$M"
+ CustomSymbolStrFcn "$R$N$M$F"
+ CustomSymbolStrFcnArg "rt$I$N$M"
+ CustomSymbolStrBlkIO "rtb_$N$M"
+ CustomSymbolStrTmpVar "$N$M"
+ CustomSymbolStrMacro "$R$N$M"
+ DefineNamingRule "None"
+ ParamNamingRule "None"
+ SignalNamingRule "None"
+ InsertBlockDesc off
+ SimulinkBlockComments on
+ EnableCustomComments off
+ InlinedPrmAccess "Literals"
+ ReqsInCode off
+ UseSimReservedNames off
+ }
+ Simulink.GRTTargetCC {
+ $BackupClass "Simulink.TargetCC"
+ $ObjectID 11
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 17
+ Cell "GeneratePreprocessorConditionals"
+ Cell "IncludeMdlTerminateFcn"
+ Cell "CombineOutputUpdateFcns"
+ Cell "SuppressErrorStatus"
+ Cell "ERTCustomFileBanners"
+ Cell "GenerateSampleERTMain"
+ Cell "GenerateTestInterfaces"
+ Cell "ModelStepFunctionPrototypeControlCompliant"
+ Cell "CPPClassGenCompliant"
+ Cell "MultiInstanceERTCode"
+ Cell "PurelyIntegerCode"
+ Cell "PortableWordSizes"
+ Cell "SupportComplex"
+ Cell "SupportAbsoluteTime"
+ Cell "SupportContinuousTime"
+ Cell "SupportNonInlinedSFcns"
+ Cell "SupportNonFinite"
+ PropName "DisabledProps"
+ }
+ TargetFcnLib "ansi_tfl_table_tmw.mat"
+ TargetLibSuffix ""
+ TargetPreCompLibLocation ""
+ TargetFunctionLibrary "ANSI_C"
+ UtilityFuncGeneration "Auto"
+ ERTMultiwordTypeDef "System defined"
+ ERTCodeCoverageTool "None"
+ ERTMultiwordLength 256
+ MultiwordLength 2048
+ GenerateFullHeader on
+ GenerateSampleERTMain off
+ GenerateTestInterfaces off
+ IsPILTarget off
+ ModelReferenceCompliant on
+ ParMdlRefBuildCompliant on
+ CompOptLevelCompliant on
+ IncludeMdlTerminateFcn on
+ GeneratePreprocessorConditionals "Disable all"
+ CombineOutputUpdateFcns off
+ SuppressErrorStatus off
+ ERTFirstTimeCompliant off
+ IncludeFileDelimiter "Auto"
+ ERTCustomFileBanners off
+ SupportAbsoluteTime on
+ LogVarNameModifier "rt_"
+ MatFileLogging on
+ MultiInstanceERTCode off
+ SupportNonFinite on
+ SupportComplex on
+ PurelyIntegerCode off
+ SupportContinuousTime on
+ SupportNonInlinedSFcns on
+ SupportVariableSizeSignals off
+ EnableShiftOperators on
+ ParenthesesLevel "Nominal"
+ PortableWordSizes off
+ ModelStepFunctionPrototypeControlCompliant off
+ CPPClassGenCompliant off
+ AutosarCompliant off
+ UseMalloc off
+ ExtMode off
+ ExtModeStaticAlloc off
+ ExtModeTesting off
+ ExtModeStaticAllocSize 1000000
+ ExtModeTransport 0
+ ExtModeMexFile "ext_comm"
+ ExtModeIntrfLevel "Level1"
+ RTWCAPISignals off
+ RTWCAPIParams off
+ RTWCAPIStates off
+ GenerateASAP2 off
+ }
+ PropName "Components"
+ }
+ }
+ PropName "Components"
+ }
+ Name "Configuration"
+ CurrentDlgPage "Solver"
+ ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] "
+ }
+ PropName "ConfigurationSets"
+ }
+ Simulink.ConfigSet {
+ $PropName "ActiveConfigurationSet"
+ $ObjectID 1
+ }
+ BlockDefaults {
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ NamePlacement "normal"
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ ShowName on
+ BlockRotation 0
+ BlockMirror off
+ }
+ AnnotationDefaults {
+ HorizontalAlignment "center"
+ VerticalAlignment "middle"
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ UseDisplayTextAsClickCallback off
+ }
+ LineDefaults {
+ FontName "Helvetica"
+ FontSize 9
+ FontWeight "normal"
+ FontAngle "normal"
+ }
+ BlockParameterDefaults {
+ Block {
+ BlockType BusCreator
+ Inputs "4"
+ DisplayOption "none"
+ UseBusObject off
+ BusObject "BusObject"
+ NonVirtualBus off
+ }
+ Block {
+ BlockType Constant
+ Value "1"
+ VectorParams1D on
+ SamplingMode "Sample based"
+ OutMin "[]"
+ OutMax "[]"
+ OutDataTypeMode "Inherit from 'Constant value'"
+ OutDataType "fixdt(1,16,0)"
+ ConRadixGroup "Use specified scaling"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: Inherit from 'Constant value'"
+ LockScale off
+ SampleTime "inf"
+ FramePeriod "inf"
+ PreserveConstantTs off
+ }
+ Block {
+ BlockType Demux
+ Outputs "4"
+ DisplayOption "none"
+ BusSelectionMode off
+ }
+ Block {
+ BlockType Display
+ Format "short"
+ Decimation "10"
+ Floating off
+ SampleTime "-1"
+ }
+ Block {
+ BlockType Inport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ LatchByDelayingOutsideSignal off
+ LatchInputForFeedbackSignals off
+ Interpolate on
+ }
+ Block {
+ BlockType MATLABFcn
+ MATLABFcn "sin"
+ OutputDimensions "-1"
+ OutputSignalType "auto"
+ Output1D on
+ SampleTime "-1"
+ }
+ Block {
+ BlockType Outport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ SourceOfInitialOutputValue "Dialog"
+ OutputWhenDisabled "held"
+ InitialOutput "[]"
+ }
+ Block {
+ BlockType "S-Function"
+ FunctionName "system"
+ SFunctionModules "''"
+ PortCounts "[]"
+ SFunctionDeploymentMode off
+ }
+ Block {
+ BlockType Scope
+ ModelBased off
+ TickLabels "OneTimeTick"
+ ZoomMode "on"
+ Grid "on"
+ TimeRange "auto"
+ YMin "-5"
+ YMax "5"
+ SaveToWorkspace off
+ SaveName "ScopeData"
+ LimitDataPoints on
+ MaxDataPoints "5000"
+ Decimation "1"
+ SampleInput off
+ SampleTime "-1"
+ }
+ Block {
+ BlockType SubSystem
+ ShowPortLabels "FromPortIcon"
+ Permissions "ReadWrite"
+ PermitHierarchicalResolution "All"
+ TreatAsAtomicUnit off
+ CheckFcnCallInpInsideContextMsg off
+ SystemSampleTime "-1"
+ RTWFcnNameOpts "Auto"
+ RTWFileNameOpts "Auto"
+ RTWMemSecFuncInitTerm "Inherit from model"
+ RTWMemSecFuncExecute "Inherit from model"
+ RTWMemSecDataConstants "Inherit from model"
+ RTWMemSecDataInternal "Inherit from model"
+ RTWMemSecDataParameters "Inherit from model"
+ SimViewingDevice off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ }
+ Block {
+ BlockType Sum
+ IconShape "rectangular"
+ Inputs "++"
+ CollapseMode "All dimensions"
+ CollapseDim "1"
+ InputSameDT on
+ AccumDataTypeStr "Inherit: Inherit via internal rule"
+ OutMin "[]"
+ OutMax "[]"
+ OutDataTypeMode "Same as first input"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: Same as first input"
+ LockScale off
+ RndMeth "Floor"
+ SaturateOnIntegerOverflow on
+ SampleTime "-1"
+ }
+ Block {
+ BlockType Terminator
+ }
+ }
+ System {
+ Name "quadratic_roots"
+ Location [890, 569, 1678, 1011]
+ Open on
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ ReportName "simulink-default.rpt"
+ SIDHighWatermark 45
+ Block {
+ BlockType BusCreator
+ Name "Bus\nCreator"
+ SID 14
+ Ports [3, 1]
+ Position [170, 157, 180, 243]
+ ShowName off
+ Inputs "3"
+ DisplayOption "bar"
+ }
+ Block {
+ BlockType Constant
+ Name "Constant"
+ SID 11
+ Position [35, 105, 65, 135]
+ Value "4"
+ }
+ Block {
+ BlockType Constant
+ Name "Constant1"
+ SID 12
+ Position [35, 185, 65, 215]
+ Value "-5"
+ }
+ Block {
+ BlockType Constant
+ Name "Constant2"
+ SID 13
+ Position [30, 30, 60, 60]
+ }
+ Block {
+ BlockType Demux
+ Name "Demux"
+ SID 21
+ Ports [1, 2]
+ Position [370, 156, 375, 194]
+ ShowName off
+ Outputs "2"
+ DisplayOption "bar"
+ }
+ Block {
+ BlockType Display
+ Name "Display"
+ SID 29
+ Ports [1]
+ Position [505, 20, 595, 50]
+ Decimation "1"
+ Lockdown off
+ }
+ Block {
+ BlockType Display
+ Name "Display1"
+ SID 30
+ Ports [1]
+ Position [515, 215, 605, 245]
+ Decimation "1"
+ Lockdown off
+ }
+ Block {
+ BlockType Display
+ Name "Display2"
+ SID 31
+ Ports [1]
+ Position [430, 295, 520, 325]
+ Decimation "1"
+ Lockdown off
+ }
+ Block {
+ BlockType Display
+ Name "Display3"
+ SID 32
+ Ports [1]
+ Position [435, 350, 525, 380]
+ Decimation "1"
+ Lockdown off
+ }
+ Block {
+ BlockType MATLABFcn
+ Name "MATLAB Fcn"
+ SID 10
+ Ports [1, 1]
+ Position [235, 152, 325, 208]
+ MATLABFcn "roots"
+ OutputDimensions "2"
+ Output1D off
+ }
+ Block {
+ BlockType Scope
+ Name "Scope"
+ SID 25
+ Ports []
+ Position [485, 59, 515, 91]
+ List {
+ ListType IOSignalStrings
+ set0ParseKeys "8,19"
+ set0Sigs "Demux:o2quad_fcn_subtype:o2"
+ }
+ Floating on
+ Location [361, 434, 685, 673]
+ Open off
+ NumInputPorts "1"
+ List {
+ ListType AxesTitles
+ axes1 "%"
+ }
+ DataFormat "StructureWithTime"
+ SampleTime "0"
+ }
+ Block {
+ BlockType Scope
+ Name "Scope1"
+ SID 26
+ Ports []
+ Position [475, 158, 505, 192]
+ List {
+ ListType IOSignalStrings
+ set0ParseKeys "8,19"
+ set0Sigs "Demux:o1quad_fcn_subtype:o1"
+ }
+ Floating on
+ Location [37, 522, 442, 784]
+ Open off
+ NumInputPorts "1"
+ List {
+ ListType AxesTitles
+ axes1 "%"
+ }
+ SaveName "ScopeData1"
+ DataFormat "StructureWithTime"
+ SampleTime "0"
+ }
+ Block {
+ BlockType Sum
+ Name "Sum"
+ SID 27
+ Ports [2, 1]
+ Position [455, 25, 475, 45]
+ ShowName off
+ IconShape "round"
+ Inputs "|+-"
+ InputSameDT off
+ OutDataTypeMode "Inherit via internal rule"
+ OutDataTypeStr "Inherit: Inherit via internal rule"
+ SaturateOnIntegerOverflow off
+ }
+ Block {
+ BlockType Sum
+ Name "Sum1"
+ SID 28
+ Ports [2, 1]
+ Position [480, 220, 500, 240]
+ ShowName off
+ IconShape "round"
+ Inputs "|+-"
+ InputSameDT off
+ OutDataTypeMode "Inherit via internal rule"
+ OutDataTypeStr "Inherit: Inherit via internal rule"
+ SaturateOnIntegerOverflow off
+ }
+ Block {
+ BlockType SubSystem
+ Name "quad_fcn_fp"
+ SID 38
+ Ports [3, 2]
+ Position [555, 301, 720, 369]
+ LibraryVersion "1.12"
+ UserDataPersistent on
+ UserData "DataTag0"
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'a');port_label('input',2,'b');port_label('input',3,'c');port_label('out"
+ "put',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');c"
+ "olor('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "quad_fcn_fp"
+ Location [433, 447, 931, 747]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "a"
+ SID 41
+ Position [35, 38, 65, 52]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "b"
+ SID 42
+ Position [35, 38, 65, 52]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "c"
+ SID 43
+ Position [35, 38, 65, 52]
+ Port "3"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType SubSystem
+ Name "code"
+ SID 40
+ Ports [3, 2]
+ Position [250, 51, 320, 99]
+ LibraryVersion "1.31"
+ ErrorFcn "Stateflow.Translate.translate"
+ PermitHierarchicalResolution "ExplicitOnly"
+ TreatAsAtomicUnit on
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskType "Stateflow"
+ MaskDescription "Embedded MATLAB block"
+ MaskDisplay "disp('quad_fcn_fp');"
+ MaskSelfModifiable on
+ MaskIconFrame on
+ MaskIconOpaque off
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "code"
+ Location [257, 457, 812, 717]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ SIDHighWatermark 24
+ SIDPrevWatermark 13
+ Block {
+ BlockType Inport
+ Name "a"
+ SID 1
+ Position [20, 101, 40, 119]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "b"
+ SID 18
+ Position [20, 136, 40, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "c"
+ SID 19
+ Position [20, 171, 40, 189]
+ Port "3"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Demux
+ Name " Demux "
+ SID 22
+ Ports [1, 1]
+ Position [270, 180, 320, 220]
+ Outputs "1"
+ }
+ Block {
+ BlockType "S-Function"
+ Name " SFunction "
+ SID 21
+ Tag "Stateflow S-Function quadratic_roots 1"
+ Ports [3, 3]
+ Position [180, 100, 230, 180]
+ FunctionName "sf_sfun"
+ PortCounts "[3 3]"
+ EnableBusSupport on
+ Port {
+ PortNumber 2
+ Name "x1"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ Port {
+ PortNumber 3
+ Name "x2"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ }
+ Block {
+ BlockType Terminator
+ Name " Terminator "
+ SID 24
+ Position [460, 191, 480, 209]
+ }
+ Block {
+ BlockType Outport
+ Name "x1"
+ SID 5
+ Position [460, 101, 480, 119]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Outport
+ Name "x2"
+ SID 20
+ Position [460, 136, 480, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock "a"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "b"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 2
+ }
+ Line {
+ SrcBlock "c"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 3
+ }
+ Line {
+ Name "x1"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 2
+ DstBlock "x1"
+ DstPort 1
+ }
+ Line {
+ Name "x2"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 3
+ DstBlock "x2"
+ DstPort 1
+ }
+ Line {
+ SrcBlock " Demux "
+ SrcPort 1
+ DstBlock " Terminator "
+ DstPort 1
+ }
+ Line {
+ SrcBlock " SFunction "
+ SrcPort 1
+ DstBlock " Demux "
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType Outport
+ Name "x1"
+ SID 44
+ Position [35, 53, 65, 67]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Outport
+ Name "x2"
+ SID 45
+ Position [35, 53, 65, 67]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock "a"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "b"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 2
+ }
+ Line {
+ SrcBlock "c"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 3
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 1
+ DstBlock "x1"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 2
+ DstBlock "x2"
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType SubSystem
+ Name "quad_fcn_subtype"
+ SID 1
+ Ports [3, 2]
+ Position [185, 31, 350, 99]
+ LibraryVersion "1.12"
+ UserDataPersistent on
+ UserData "DataTag1"
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'c');port_label('input',2,'a');port_label('input',3,'b');port_label('out"
+ "put',1,'x1');port_label('output',2,'x2');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');c"
+ "olor('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "quad_fcn_subtype"
+ Location [433, 447, 931, 747]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "c"
+ SID 4
+ Position [35, 38, 65, 52]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "a"
+ SID 5
+ Position [35, 38, 65, 52]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "b"
+ SID 6
+ Position [35, 38, 65, 52]
+ Port "3"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType SubSystem
+ Name "code"
+ SID 3
+ Ports [3, 2]
+ Position [250, 51, 320, 99]
+ LibraryVersion "1.31"
+ ErrorFcn "Stateflow.Translate.translate"
+ PermitHierarchicalResolution "ExplicitOnly"
+ TreatAsAtomicUnit on
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskType "Stateflow"
+ MaskDescription "Embedded MATLAB block"
+ MaskDisplay "disp('quad_fcn_subtype');"
+ MaskSelfModifiable on
+ MaskIconFrame on
+ MaskIconOpaque off
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "code"
+ Location [257, 457, 812, 717]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ SIDHighWatermark 24
+ SIDPrevWatermark 13
+ Block {
+ BlockType Inport
+ Name "c"
+ SID 1
+ Position [20, 101, 40, 119]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "a"
+ SID 18
+ Position [20, 136, 40, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "b"
+ SID 19
+ Position [20, 171, 40, 189]
+ Port "3"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Demux
+ Name " Demux "
+ SID 22
+ Ports [1, 1]
+ Position [270, 180, 320, 220]
+ Outputs "1"
+ }
+ Block {
+ BlockType "S-Function"
+ Name " SFunction "
+ SID 21
+ Tag "Stateflow S-Function quadratic_roots 2"
+ Ports [3, 3]
+ Position [180, 100, 230, 180]
+ FunctionName "sf_sfun"
+ PortCounts "[3 3]"
+ EnableBusSupport on
+ Port {
+ PortNumber 2
+ Name "x1"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ Port {
+ PortNumber 3
+ Name "x2"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ }
+ Block {
+ BlockType Terminator
+ Name " Terminator "
+ SID 24
+ Position [460, 191, 480, 209]
+ }
+ Block {
+ BlockType Outport
+ Name "x1"
+ SID 5
+ Position [460, 101, 480, 119]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Outport
+ Name "x2"
+ SID 20
+ Position [460, 136, 480, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock "c"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "a"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 2
+ }
+ Line {
+ SrcBlock "b"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 3
+ }
+ Line {
+ Name "x1"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 2
+ DstBlock "x1"
+ DstPort 1
+ }
+ Line {
+ Name "x2"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 3
+ DstBlock "x2"
+ DstPort 1
+ }
+ Line {
+ SrcBlock " Demux "
+ SrcPort 1
+ DstBlock " Terminator "
+ DstPort 1
+ }
+ Line {
+ SrcBlock " SFunction "
+ SrcPort 1
+ DstBlock " Demux "
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType Outport
+ Name "x1"
+ SID 8
+ Position [35, 53, 65, 67]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Outport
+ Name "x2"
+ SID 9
+ Position [35, 53, 65, 67]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock "c"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "a"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 2
+ }
+ Line {
+ SrcBlock "b"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 3
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 1
+ DstBlock "x1"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 2
+ DstBlock "x2"
+ DstPort 1
+ }
+ }
+ }
+ Line {
+ SrcBlock "Constant2"
+ SrcPort 1
+ Points [45, 0; 0, 15]
+ Branch {
+ Points [0, 110]
+ DstBlock "Bus\nCreator"
+ DstPort 1
+ }
+ Branch {
+ Points [0, 5]
+ DstBlock "quad_fcn_subtype"
+ DstPort 2
+ }
+ }
+ Line {
+ SrcBlock "Constant"
+ SrcPort 1
+ Points [30, 0; 0, 80; 40, 0]
+ Branch {
+ DstBlock "Bus\nCreator"
+ DstPort 2
+ }
+ Branch {
+ Points [0, -115]
+ DstBlock "quad_fcn_subtype"
+ DstPort 3
+ }
+ }
+ Line {
+ SrcBlock "Constant1"
+ SrcPort 1
+ Points [20, 0; 0, 30; 30, 0]
+ Branch {
+ DstBlock "Bus\nCreator"
+ DstPort 3
+ }
+ Branch {
+ Points [0, -185]
+ DstBlock "quad_fcn_subtype"
+ DstPort 1
+ }
+ }
+ Line {
+ SrcBlock "Bus\nCreator"
+ SrcPort 1
+ Points [20, 0; 0, -20]
+ DstBlock "MATLAB Fcn"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "MATLAB Fcn"
+ SrcPort 1
+ Points [25, 0]
+ DstBlock "Demux"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "quad_fcn_subtype"
+ SrcPort 1
+ Points [30, 0; 0, -15; 25, 0]
+ Branch {
+ DstBlock "Sum"
+ DstPort 1
+ }
+ Branch {
+ Points [0, 275]
+ DstBlock "Display2"
+ DstPort 1
+ }
+ }
+ Line {
+ Labels [0, 0]
+ SrcBlock "Demux"
+ SrcPort 2
+ Points [0, -5; 35, 0]
+ DstBlock "Sum1"
+ DstPort 2
+ }
+ Line {
+ SrcBlock "quad_fcn_subtype"
+ SrcPort 2
+ Points [40, 0; 0, 145; 25, 0]
+ Branch {
+ DstBlock "Sum1"
+ DstPort 1
+ }
+ Branch {
+ DstBlock "Display3"
+ DstPort 1
+ }
+ }
+ Line {
+ SrcBlock "Sum1"
+ SrcPort 1
+ DstBlock "Display1"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "Sum"
+ SrcPort 1
+ DstBlock "Display"
+ DstPort 1
+ }
+ Line {
+ Labels [0, 0]
+ SrcBlock "Demux"
+ SrcPort 1
+ Points [10, 0]
+ DstBlock "Sum"
+ DstPort 2
+ }
+ Annotation {
+ Name "This model demonstrates the use of predicate subtyping through\nthe implementation of quad_fcn, whi"
+ "ch will give the real roots\nof a quadratic function.\n\nresults are compared to the matlab function roots, resu"
+ "lts are \ngenerally the same, although sometimes there is a small error\non the order of 1e-16.\n\nCurrently doe"
+ "s not activly check that inputs satisfy subtype\nconstraints, in these cases proper output is not guaranteed.\n\n"
+ "This example will not work under CVC3 as complex functions like\nsqrt are not supported.\n\nThis example require"
+ "s the NASA PVS libraries"
+ Position [223, 343]
+ }
+ }
+}
+MatData {
+ NumRecords 2
+ DataRecord {
+ Tag DataTag1
+ Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ! !0 X \"H/@ !@ @ ) "
+ "4 ( 0 '@^ ! ( !X/@ %)30 . V#T 8 ( @ % \" $ ! 0 "
+ " % 0 !0 $ % 34-/4P . D#T 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E<"
+ "E]? #@ % ] & \" $ !0 @ !X 0 $ #@ +@+ & \" D !0 @ "
+ " \"(\"P 0 $ @ (@+ \" + -@! X @ . ( ) $ # \"@ B L 1W)I9# 0V5L;', 0V5L;#$"
+ " 8V]N9%]T97AT &-E;&Q?:6YD97@ <&%R96YT7V=R:60 8V5L;', 1W)I9 !P87)E;G1?8V5L; !S<&QI=%]P8@!N=6U?8V5L;', 9W)I9%]I;F1E>"
+ " !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F,BD@+2 T*F$J8R ]/2 P #@ #@ & \" 8 !0 "
+ " @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $ ! "
+ " 8 8 W0( ! 0 P ! #@ #@ & \" 8 !0 @ ! 0 $ \"0 "
+ " @ 0 X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . "
+ " 8 ( !@ % \" $ ! 0 ) \" / _#@ $@ & \" T !0 "
+ " @ & 0 $ !@ !@ #= @ $ ! #@ ( . , 8 ( ! % \" "
+ " $ $ 0 0 0 8CX], X X !@ @ & 4 ( 0 $ ! D ( "
+ " \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ / 0 "
+ " X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ "
+ " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 "
+ " $ \"0 @ #P/PX P !@ @ $ 4 ( 0 , ! ! P!B/# #@ "
+ " #@ & \" 8 !0 @ ! 0 $ \"0 @ 0 X !( !@ @ - "
+ " 4 ( !@ $ ! 8 8 W0( ! 0 \\ ! #@ #@ & \" 8 !0 "
+ " @ ! 0 $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! "
+ " D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" / _#@ "
+ " % & \" T !0 @ ' 0 $ !@ !P #= @ $ \" $ !$ \" "
+ " X X !@ @ & 4 ( 0 $ ! D ( $ . . 8 ( !@ "
+ " % \" $ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 "
+ " $ !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 ! 0 "
+ " & & -T\" 0 $ / 0 X !( !@ @ $ 4 ( 0 !$ ! "
+ "! 1 *&)>,BD@+2 T*F$J8R ^(# #@ #@ & \" 8 !0 @ ! 0 $ \"0 "
+ " @ 0 X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 P"
+ " ! #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ @"
+ " & 4 ( 0 $ ! D ( !$ . 4 8 ( #0 % \" < "
+ " ! 0 & ' -T\" 0 ( - #@ ( #@ #@ & \" 8 !0 @ "
+ " ! 0 $ \"0 @ 0 X X !@ @ & 4 ( 0 $ ! D "
+ " ( $ . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ "
+ " \" P X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 P "
+ " ! #@ #@ & \" 0 !0 @ ! !@ $ $ 8 !A('X](# X X !@ @ "
+ "& 4 ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 !"
+ " 0 & & -T\" 0 $ * 0 X X !@ @ & 4 ( 0 $ ! "
+ " D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" "
+ " !! #@ % & \" T !0 @ ' 0 $ !@ !P #= @ $ \" \"0 L "
+ " \" X X !@ @ & 4 ( 0 $ ! D ( $ . . 8 "
+ "( !@ % \" $ ! 0 ) \" ! #@ $@ & \" T !0 @ "
+ " & 0 $ !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 "
+ "! 0 & & -T\" 0 $ * 0 X X !@ @ & 4 ( 0 $ !"
+ " D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" "
+ " /@_#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! \"0 ( "
+ " . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ' @ X "
+ " X !@ @ & 4 ( 0 $ ! D ( $ . . 8 ( !@ %"
+ " \" $ ! 0 ) \" / _#@ $@ & \" T !0 @ & 0 $ "
+ " !@ !@ #= @ $ ! @ , . 2 8 ( #0 % \" 8 ! 0 &"
+ " & -T\" 0 $ ( 0 X X !@ @ & 4 ( 0 $ ! D ( "
+ " $ . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #@ & "
+ " \" 8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( "
+ " !@ $ ! 8 8 W0( ! 0 < \" #@ # & \" 0 !0 @ ! "
+ " ! $ $ $ \"UC+V(. 2 8 ( !@ % \" $ # 0 ) & "
+ "/ _ \\#\\ #P/PX !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! "
+ " 0 0 \" #@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! "
+ " #0 ( . . 8 ( ! % \" $ & 0 0 !@ \"UB+S(J80 #@ $@ & "
+ " \" 8 !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 "
+ "( #0 % \" 8 ! 0 & & -T\" 0 $ $ @ X !( !@ @ "
+ "- 4 ( !@ $ ! 8 8 W0( ! 0 ! \" #@ % & \" 0 "
+ " !0 @ ! '@ $ $ !X H+6(@+2!S<7)T*&)>,B M(#0J82IC*2D@+R R*F$ X !( !@ @ & "
+ " 4 ( 0 , ! D 8 \\#\\ #P/P / _#@ $@ & \" T "
+ " !0 @ & 0 $ !@ !@ #= @ $ ! ! ( . 2 8 ( #0 % "
+ " \" 8 ! 0 & & -T\" 0 $ 1 @ X !0 !@ @ $ 4 ( "
+ " 0 !X ! ! > *\"UB(\"L@W@Z,BD@+2 T*F$J8R ^/2 P*7T #@ )@! & \" ( !0 @ ! 0 $ "
+ " !0 $ < ! (P '-E= !I;G!U=', 8V]U;G0 ')A;F=E !E>&-E<'0 . . 8 ( !@ % "
+ " \" $ ! 0 ) \" / _#@ # & \" 8 !0 @ $ "
+ " \"0 . . 8 ( !@ % \" $ ! 0 ) \" 0(] #@ #@ & "
+ " \" 8 !0 @ ! 0 $ \"0 @ !90 X X !@ @ & 4 ( "
+ " 0 $ ! D ( . . 8 ( !@ % \" $ ! 0 ) "
+ " \" #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ X X "
+ " !@ @ & 4 ( 0 $ ! D ( \\#\\. 4 X 8 ( 0 % "
+ " \" 8 ! 0 . . 8 ( @ % \" $ 0 % 0 0 $ "
+ " #@ ,@\" & \" ( !0 @ ! 0 $ !0 $ \\ ! AP '!A'1?:&5I9VAT &-O;F1I=&EO;E]T97AT7W@ !C;VYD:71I;VY?=&5X=%]Y 8V]N9&ET:6"
+ "]N7W1E>'1?;V9F 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ! !0 X #X2 !@ @ ) 4"
+ " ( 0 ,A( ! ( #(2 %)30 . *$@ 8 ( @ % \" $ ! 0 "
+ " % 0 !0 $ % 34-/4P . X$< 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E !"
+ "R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F P ( = ! ,"
+ " 1 @ 0 # 0 4 \" @ 8 ! @ "
+ " < 0 0 @ / @ D - 0 H "
+ " , @ L + 0 P * @ T $ @ "
+ " X % @ \\ ) 0 ! ( @ !$ & "
+ " @ !( ' @ !, . ! !0 2 ! "
+ " !4 3 ! !8 4 ! !< 5 ! !@ 6 !"
+ " !D 7 ! !H 8 ! !L 9 ! "
+ " !P : ! !T ; ! !X < ) 0 $ \"( 'P "
+ " $ \") ( $ \"* )0 $ \"+ )@ $ \", )P $ \"- * $ \". *0 $ \"/ "
+ " *@ $ \"0 P ( ! A0 !\\ ! A@ \" ! AP 0 # 0 P A 0 %8 B "
+ " 0 %< 7 0 %@ ! 0 ! 4 ! 0 8 ! \"@ ! ! \"P $ "
+ " !P $ & \"P $ ' # $ ( #0 $ ) 0 $ 0 ( % 0 , & "
+ " 0 0 0 0 4 !@ 0 ! #0 4 ! #@ 8 ! 4@ !0 ! 4P !4 ! 5"
+ " ! ! 50 % \"0 $ !' !P $ !. \"P $ !/ # $ !0 #0 $ !1 !"
+ "@ !( ! #P 0 ! $ 4 ! $0 8 ! 1 !0 ! 10 !4 ! 1@ $ !P "
+ " $ ! \"P $ !! # $ !\" #0 $ !# 8 2 0 #H $ 0 #L % 0 "
+ " #P & 0 #T 4 0 #X 5 0 #\\ !0 D ! $@ < ! -@ L ! -P "
+ " P ! . T ! .0 8 $ 0 !, % 0 !0 & 0 !4 4 0 !8 5 0 !"
+ "< 0 0 !@ !@ 0 ! &0 4 ! &@ 8 ! &P !0 ! ' !4 ! '0 ! "
+ " ! '@ & $@ $ P ! $ Q !0 $ R !@ $ S % $ T %0 $ "
+ " U 4 ) 0 !\\ ' 0 \"P + 0 \"T , 0 \"X - 0 \"\\ & ! "
+ "$ @ !0 $ A !@ $ B % $ C %0 $ D $ $ E 8 $ 0 \"8"
+ " % 0 \"< & 0 \"@ 4 0 \"D 5 0 \"H 0 0 \"L !@ 0 ! 2 "
+ " 4 ! 20 8 ! 2@ !0 ! 2P !4 ! 3 ! ! 30 $ P $ !9 (0 "
+ "$ !: (@ $ !; %P $ !< 0 # 0 %T A 0 %X B 0 %\\ 7 0 & "
+ " ! , ! 80 \"$ ! 8@ \"( ! 8P !< ! 9 $ P $ !E (0 $"
+ " !F (@ $ !G %P $ !H 0 # 0 &D A 0 &H B 0 &L 7 0 &P "
+ " ! , ! ;0 \"$ ! ;@ \"( ! ;P !< ! < $ P $ !Q (0 $ "
+ " !R (@ $ !S %P $ !T 0 # 0 '4 A 0 '8 B 0 '< 7 0 '@ "
+ " ! , ! >0 \"$ ! >@ \"( ! >P !< ! ? $ P $ !] (0 $ !"
+ "^ (@ $ !_ %P $ \" 0 # 0 ($ A 0 (( B 0 (, 7 0 (0 "
+ " "
+ " "
+ " . "
+ " X ! !@ @ $ 4 ( 0 D ! ! ) >#$Z *\"UB(\"L@&-E<'0 . . 8 ( !@ % \" $ ! 0 ) \" / _#"
+ "@ # & \" 8 !0 @ $ \"0 . . 8 ( !@ % \""
+ " $ ! 0 ) \" 0(] #@ #@ & \" 8 !0 @ ! 0 $ \""
+ "0 @ !90 X X !@ @ & 4 ( 0 $ ! D ( . . "
+ " 8 ( !@ % \" $ ! 0 ) \" #@ #@ & \" 8 !0"
+ " @ ! 0 $ \"0 @ X X !@ @ & 4 ( 0 $ ! "
+ " D ( \\#\\. 4 X 8 ( 0 % \" 8 ! 0 . . 8 ( @"
+ " % \" $ 0 % 0 0 $ #@ ,@\" & \" ( !0 @ ! "
+ "0 $ !0 $ \\ ! AP '!A'1?:&5I9VAT &-O;F1I=&"
+ "EO;E]T97AT7W@ !C;VYD:71I;VY?=&5X=%]Y 8V]N9&ET:6]N7W1E>'1?;V9F 0)\n if(b >= 0)\n x1 = (-b - sqrt(b*b - 4*a*c)) / 2*a;\n x2 = c / (a* ((-b - sqrt(b"
+ "*b - 4*a*c)) / 2*a));\n elseif(b < 0)\n x1 = (-b + sqrt(b*b - 4*a*c)) / 2*a;\n x2 = c / (a* ((-b + "
+ "sqrt(b*b - 4*a*c)) / 2*a));\n end\n end\nend\n"
+ editorLayout "100 M4x1[205 227 1080 733]"
+ }
+ }
+ junction {
+ id 4
+ position [23.5747 49.5747 7]
+ chart 2
+ linkNode [2 0 0]
+ subviewer 2
+ ssIdNumber 3
+ type CONNECTIVE_JUNCTION
+ }
+ transition {
+ id 5
+ labelString "{eML_blk_kernel();}"
+ labelPosition [32.125 19.875 102.544 14.964]
+ fontSize 12
+ src {
+ intersection [0 0 1 0 23.5747 14.625 0 0]
+ }
+ dst {
+ id 4
+ intersection [7 0 -1 -1 23.5747 42.5747 0 0]
+ }
+ midPoint [23.5747 24.9468]
+ chart 2
+ linkNode [2 0 0]
+ dataLimits [23.575 23.575 14.625 34.575]
+ subviewer 2
+ drawStyle SMART
+ executionOrder 1
+ ssIdNumber 2
+ }
+ data {
+ id 6
+ ssIdNumber 4
+ name "a"
+ linkNode [2 0 7]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 7
+ ssIdNumber 5
+ name "x1"
+ linkNode [2 6 8]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 8
+ ssIdNumber 6
+ name "b"
+ linkNode [2 7 9]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 9
+ ssIdNumber 7
+ name "c"
+ linkNode [2 8 10]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 10
+ ssIdNumber 8
+ name "x2"
+ linkNode [2 9 0]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ instance {
+ id 11
+ name "quad_fcn_fp/code"
+ machine 1
+ chart 2
+ }
+ chart {
+ id 12
+ name "quad_fcn_subtype/code"
+ windowPosition [300.6 338.642 200.25 189.75]
+ viewLimits [0 156.75 0 153.75]
+ screen [1 1 1280 778 1.25]
+ treeNode [0 13 0 0]
+ firstTransition 15
+ firstJunction 14
+ viewObj 12
+ machine 1
+ toolbarMode LIBRARY_TOOLBAR
+ ssIdHighWaterMark 8
+ decomposition CLUSTER_CHART
+ type EML_CHART
+ firstData 16
+ chartFileNumber 2
+ disableImplicitCasting 1
+ eml {
+ name "quad_fcn_subtype"
+ }
+ }
+ state {
+ id 13
+ labelString "eML_blk_kernel()"
+ position [18 64.5 118 66]
+ fontSize 12
+ chart 12
+ treeNode [12 0 0 0]
+ superState SUBCHART
+ subviewer 12
+ ssIdNumber 1
+ type FUNC_STATE
+ decomposition CLUSTER_STATE
+ eml {
+ isEML 1
+ script "function [x1,x2] = quad_fcn_subtype(c,a,b)\n%%#eml\nx1=-c/b;\nx2=-c/b;\nif(a == 0)\n if(b ~= 0)\n"
+ " x1 = -c/b;\n x2 = -c/b;\n end\nelseif(a ~= 0)\n if((b^2) - 4*a*c == 0)\n x1 = -b/2*a;\n x2 = -b/2"
+ "*a;\n elseif((b^2) - 4*a*c > 0)\n if(b>=0)\n x1 = (-b - sqrt(b^2 - 4*a*c)) / 2*a;\n x2 = c / (a* ("
+ "(-b - sqrt(b^2 - 4*a*c)) / 2*a));\n elseif(b<0)\n x1 = (-b + sqrt(b^2 - 4*a*c)) / 2*a;\n x2 = c / ("
+ "a* ((-b + sqrt(b^2 - 4*a*c)) / 2*a));\n end\n end\nend\n"
+ editorLayout "100 M4x1[205 227 1080 733]"
+ }
+ }
+ junction {
+ id 14
+ position [23.5747 49.5747 7]
+ chart 12
+ linkNode [12 0 0]
+ subviewer 12
+ ssIdNumber 3
+ type CONNECTIVE_JUNCTION
+ }
+ transition {
+ id 15
+ labelString "{eML_blk_kernel();}"
+ labelPosition [32.125 19.875 102.544 14.964]
+ fontSize 12
+ src {
+ intersection [0 0 1 0 23.5747 14.625 0 0]
+ }
+ dst {
+ id 14
+ intersection [7 0 -1 -1 23.5747 42.5747 0 0]
+ }
+ midPoint [23.5747 24.9468]
+ chart 12
+ linkNode [12 0 0]
+ dataLimits [23.575 23.575 14.625 34.575]
+ subviewer 12
+ drawStyle SMART
+ executionOrder 1
+ ssIdNumber 2
+ }
+ data {
+ id 16
+ ssIdNumber 4
+ name "c"
+ linkNode [12 0 17]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 17
+ ssIdNumber 5
+ name "x1"
+ linkNode [12 16 18]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 18
+ ssIdNumber 6
+ name "a"
+ linkNode [12 17 19]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 19
+ ssIdNumber 7
+ name "b"
+ linkNode [12 18 20]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 20
+ ssIdNumber 8
+ name "x2"
+ linkNode [12 19 0]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ instance {
+ id 21
+ name "quad_fcn_subtype/code"
+ machine 1
+ chart 12
+ }
+ target {
+ id 22
+ name "sfun"
+ description "Default Simulink S-Function Target."
+ machine 1
+ linkNode [1 0 0]
+ }
+}
diff --git a/Examples/unprovable.mdl b/Examples/unprovable.mdl
index 614eaf3a24990fb72c49514df40ff5592b1f1888..bce8502b1891b1b8872de10952cbacd25425d1a1 100644
--- a/Examples/unprovable.mdl
+++ b/Examples/unprovable.mdl
@@ -1,3 +1,5259 @@
+<<<<<<< HEAD
+# MathWorks OPC Text Package
+Model {
+ Version 10.4
+ Description "Simulink model saved in R2021b"
+}
+__MWOPC_PACKAGE_BEGIN__ R2021b
+__MWOPC_PART_BEGIN__ /[Content_Types].xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /_rels/.rels
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml
+
+
+ model
+ 2011-01-24T19:04:47Z
+ colin
+ pesaraamarasekera
+ 2022-05-05T20:04:16Z
+ 24.0
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml
+
+
+ application/vnd.mathworks.simulink.model
+ Simulink Model
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml
+
+
+ 74f66082-b8cf-48c9-a3dd-825706b6cfb0
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml
+
+
+
+ 9.11.0.1809720
+ R2021b
+ Update 1
+ Nov 02 2021
+ 3710740051
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml
+
+
+
+ center
+ middle
+
+
+
+
+
+
+
+
+
+
+ 4
+ bar
+ off
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ off
+ on
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ Dialog
+ held
+ []
+ off
+ off
+ 0
+ on
+
+
+ system
+ ''
+ []
+ auto
+
+
+ FromPortIcon
+ ReadWrite
+ All
+ off
+ off
+ Sample time
+ -1
+ Auto
+ Auto
+ Auto
+ void_void
+ off
+ off
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ off
+ UseLocalSettings
+ AllNumericTypes
+ UseLocalSettings
+ off
+ off
+ NONE
+ off
+ expression
+ update diagram
+ off
+ off
+ on
+ off
+ off
+ off
+ 0
+ off
+ off
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64
+AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAABAAAAEQAAAA4AAAC4TgMABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA
+AIhOAwABAAAAAAAAAAIAAACITgMAAAFJTQAAAAAOAAAA6E0DAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAAoE0DAAYAAAAI
+AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAGBN
+AwAGAAAACAAAAAEAAAAAAAAABQAAAAgAAABFBAAAAQAAAAEAAAAAAAAADgAAALDEAAAGAAAACAAA
+AAkAAAAAAAAABQAAAAgAAACAxAAAAQAAAAEAAAAAAAAAAgAAAIDEAAADAAAADgEAAIAOAAAAEAAA
+OBMAACArAACIvAAAgMQAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZABIb3Jpem9udGFs
+QWxpZ25tZW50TW9kZQBtYW51YWwATWF4TW9kZQBNYXhfSQBNaW5Nb2RlAFN0cmluZ01vZGUAU3Ry
+aW5nX0kAU3R5bGVNb2RlAFN0eWxlX0kAZWRpdABQb3NpdGlvbk1vZGUAUG9zaXRpb25fSQBCYWNr
+Z3JvdW5kQ29sb3JNb2RlAEJhY2tncm91bmRDb2xvcl9JAENoaWxkcmVuAGhhbmRsZQBtYXRsYWIu
+dWkuY29udHJvbC5DbGllbnRDb21wb25lbnQuU3RvcmFnZVVuaXRQb3MAVW5pdHNNb2RlAFVuaXRz
+X0kAcGl4ZWxzAFJlZkZyYW1lTW9kZQBSZWZGcmFtZV9JAFNjcmVlblJlc29sdXRpb25Nb2RlAFNj
+cmVlblJlc29sdXRpb25fSQBDaGFyYWN0ZXJXaWR0aE1vZGUAQ2hhcmFjdGVyV2lkdGhfSQBDaGFy
+YWN0ZXJIZWlnaHRNb2RlAENoYXJhY3RlckhlaWdodF9JAFVuaXRzQ2FjaGUAUmVmRnJhbWVJbml0
+aWFsaXplZABvbgBDaGFyV2lkdGhJbml0aWFsaXplZABDaGFySGVpZ2h0SW5pdGlhbGl6ZWQARFBJ
+SW5pdGlhbGl6ZWQAUG9zaXRpb25DYWNoZQBVbml0UG9zAG1hdGxhYi51aS5pbnRlcm5hbABUb29s
+dGlwU3RyaW5nTW9kZQBWaXNpYmxlTW9kZQBJbnRlcm5hbABTZXJpYWxpemFibGVBcHBsaWNhdGlv
+bkRhdGEAQ29weWFibGUAbWF0bGFiLmdyYXBoaWNzLmludGVybmFsLkdyYXBoaWNzQ29yZVByb3Bl
+cnRpZXMuU2VyaWFsaXphYmxlVUlDb250ZXh0TWVudQBHcmFwaGljc1BsYWNlaG9sZGVyAG1hdGxh
+Yi5ncmFwaGljcwBtYXRsYWIuZ3JhcGhpY3MuaW50ZXJuYWwuR3JhcGhpY3NDb3JlUHJvcGVydGll
+cy5Ub3BMZXZlbFNlcmlhbGl6ZWRPYmplY3QAb2ZmAEJlaW5nRGVsZXRlZABLZXlQcmVzc0Zjbk1v
+ZGUAS2V5UHJlc3NGY25fSVMAYW55AGZ1bmN0aW9uX2hhbmRsZV93b3Jrc3BhY2UAR3JpZDIAY2Vs
+bHMAR1VJAEdyaWQxAG1haW5fZmlnAGZyYW1lAGZpZwBzY3JvbGxfdgBlZGl0X3RvZwBzYXZlX3Bi
+AHB2c19wYgBjbG9zZV9wYgBzYXZlX2V4dF9wYgBjaGVja19wYgBpbnB1dF9wYgBzZXR0aW5nc19w
+YgBmdW5jdGlvbl9uYW1lX2NvbnRyb2wAZnVuY3Rpb25fbmFtZV90ZXh0AGZ1bmN0aW9uX2lucHV0
+c190ZXh0AGZ1bmN0aW9uX2lucHV0c19jb250cm9sAGluaXRpYWxpemVkAGJsb2NrX2hhbmRsZQBz
+ZXR0aW5ncwBoZWFkZXJfaGVpZ2h0AGZpZ19oZWlnaHQAZmlnX3dpZHRoAHBiX29mZnNldABwYl93
+aWR0aABwYl9oZWlnaHQAaHR4X2hlaWdodAB0ZXh0X3dpZHRoAG5hbWVfbGFiZWwAaW5wdXRfbGFi
+ZWwARGF0YQBQVlMAQ1ZDAHB2c19jaGVja2VkAG1vZGUARU1MR2VuAFRhYmxlQmxrAHNhdmVkAHZh
+bGlkYXRpb25fcmVwb3J0X2hhbmRsZQBtdWx0aV90eXBlAG11bHRpX21vZGUAbXVsdGlfZ3JwAG11
+bHRpX29wdF9yZWcAbXVsdGlfb3B0X291dABwcm92ZXJfb3B0X3B2cwBwcm92ZXJfb3B0X2N2YwB2
+ZXJzaW9uAHVuZG9fbWFuAHVuZG9fb3B0AHJlZG9fb3B0AGRlZmF1bHRfcHJvdmVyAFBWU19jb25z
+dABDVkNfY29uc3QARm9udFNpemVNb2RlAEZvbnRXZWlnaHRNb2RlAEZvbnRXZWlnaHRfSQBib2xk
+AG1hdGxhYi51aS5pbnRlcm5hbC5taXhpbi5Gb250UmVuZGVyYWJsZS5Gb250U3RvcmFnZQBwb2lu
+dHMAbWF0bGFiLnVpLmludGVybmFsLlVuaXRQb3MuVW5pdHNDYWNoZQBtYXRsYWIudWkuaW50ZXJu
+YWwuVW5pdFBvcy5SZWZGcmFtZUluaXRpYWxpemVkAG1hdGxhYi51aS5pbnRlcm5hbC5Vbml0UG9z
+LkRQSUluaXRpYWxpemVkAG1hdGxhYi51aS5pbnRlcm5hbC5Vbml0UG9zLlBvc2l0aW9uQ2FjaGUA
+Rm9udFN0b3JhZ2UAbWF0bGFiLnVpLmludGVybmFsLm1peGluLk5vTWFyZ2luc1VuaXRzT25seVBv
+c2l0aW9uYWJsZS5PdXRlclBvc2l0aW9uU3RvcmFnZQBVSUNvbnRyb2wAbWF0bGFiLnVpLmNvbnRy
+b2wAY29uZF90ZXh0AGNlbGxfaW5kZXgAcGFyZW50X2dyaWQAR3JpZABwYXJlbnRfY2VsbABzcGxp
+dF9wYgBudW1fY2VsbHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9w
+YgB3aWR0aABoZWlnaHQAZ3JpZF9wYgBIb3Jpem9udGFsQWxpZ25tZW50X0kAbGVmdABDYWxsYmFj
+a01vZGUAQ2FsbGJhY2tfSVMAQ2VsbABzdWJncmlkAHBiX2ZsYWcAY29sb3IAY29uZGl0aW9uX3Rl
+eHRfd2lkdGgAY29uZGl0aW9uX3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAY29uZGl0aW9u
+X3RleHRfeQBjb25kaXRpb25fdGV4dF9vZmZzZXQAZ3JpZF9wdXNoX3dpZHRoAFNlcmlhbGl6YWJs
+ZVVzZXJEYXRhAFJHcmlkAEVuYWJsZU1vZGUAU3RvcmFnZVBvc2l0aW9uAFN0b3JhZ2VPdXRlclBv
+c2l0aW9uAENsb3NlUmVxdWVzdEZjbk1vZGUAQ2xvc2VSZXF1ZXN0RmNuX0lTAEN1cnJlbnRPYmpl
+Y3RNb2RlAEN1cnJlbnRQb2ludE1vZGUAU2VsZWN0aW9uVHlwZU1vZGUAU2l6ZUNoYW5nZWRGY25N
+b2RlAFNpemVDaGFuZ2VkRmNuX0lTAE1lbnVCYXJNb2RlAE1lbnVCYXJfSQBub25lAE5hbWVNb2Rl
+AE5hbWVfSQBOdW1iZXJUaXRsZU1vZGUATnVtYmVyVGl0bGVfSQBQb2ludGVyU2hhcGVDRGF0YV9J
+UwBQb2ludGVyU2hhcGVIb3RTcG90X0lTAG1hdGxhYi51aS5jb250YWluZXIuQ29udGFpbmVyLlNl
+cmlhbGl6YWJsZUNoaWxkcmVuAExhYmVsTW9kZQBMYWJlbF9JAE1lbnUAbWF0bGFiLnVpLmNvbnRh
+aW5lcgBTZXBhcmF0b3JNb2RlAFNlcGFyYXRvcl9JAENoZWNrZWRNb2RlAENoZWNrZWRfSQBBY2Nl
+bGVyYXRvck1vZGUAQWNjZWxlcmF0b3JfSQBFbmFibGVfSQByaWdodAB0ZXh0AFZhbHVlTW9kZQB0
+b2dnbGVidXR0b24AVmFsdWVfSQBXZWJDb21wb25lbnQAUmVzaXplTW9kZQBtYXRsYWIudWkuaW50
+ZXJuYWwubWl4aW4uUHJpbnRhYmxlLlBhcGVyUG9zaXRpb25TdG9yYWdlAGluY2hlcwBQYXBlclBv
+c2l0aW9uU3RvcmFnZQBtYXRsYWIudWkuaW50ZXJuYWwubWl4aW4uUHJpbnRhYmxlLlBhcGVyVHlw
+ZVN0b3JhZ2UAUGFwZXJUeXBlU3RvcmFnZQBTY3JlZW5QaXhlbHNQZXJJbmNoTW9kZQBGaWd1cmUA
+bWF0bGFiLnVpAGNvdW50ZXJfdHJpYWxzAGNvdW50ZXJfcmFuZ2UAZXhjZXB0AFRUU2V0dGluZ3MA
+cHZzX2luY2x1ZGVzAG9wZW4AYnV0dG9uX3dpZHRoAGJ1dHRvbl9oZWlnaHQAYnV0dG9uX29mZnNl
+dAB0aXRsZV9oZWlnaHQAbGFiZWxfaGVpZ2h0AGxhYmVsX3dpZHRoAHRleHRfb2Zmc2V0AGluY2x1
+ZGVfdGV4dABjb3VudF90ZXh0AHJhbmdlX3RleHQAZXhjZXB0X2NoZWNrAGZ1bmN0aW9uX25hbWUA
+ZnVuY3Rpb25faW5wdXRzAGNoZWNrZWQAZGF0YQBQVlNfY2hlY2tlcgBkZWZhdWx0X3R5cGUAcHZz
+X3ZlcnNpb24Ab3V0cHV0X3R5cGUAaW5wdXRfdHlwZQB0eXBlX21vZGUAQ1ZDX2NoZWNrZXIAY29t
+bWFuZABkYXRhdHlwZQBFTUxHZW5lcmF0b3IAbXVsdGlfb3V0cHV0AFBWU19yZXN1bHRzAGVkaXRf
+dGNjAGVkaXRfc2VxAGVkaXRfY2UAcGJfbmV4dABWYWxpZGF0aW9uUmVwb3J0AHBiX3ByZXYAcGJf
+b3BlbgBsYWJlbF90Y2MAbGFiZWxfc2VxAGxhYmVsX2NlAGxhYmVsX3BhZ2UAbGFiZWxfdGl0bGUA
+VENDX3dpZHRoAFRDQ19oZWlnaHQAc2VxX3dpZHRoAHNlcV9oZWlnaHQAY2Vfd2lkdGgAY2VfaGVp
+Z2h0AGd1aQBwYl9uYXZfd2lkdGgAcGJfbmF2X2hlaWdodABvZmZzZXQAcGFnZQBrZXl3b3JkAHRj
+X21vZGUAUmVzaXplX0kAY3VycmVudF9kZXB0aAB1bmRvX2xldmVsAFVuZG9NYW5hZ2VyAHF1ZXVl
+AG1heF9kZXB0aABDZWxsMgByZXN1bHQAcmVzdWx0X3RleHQAUkNlbGwAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAUAAAAAAAAAAAAAAApAAAAKAAAAAAAAAAAAAAAMQAAADAAAAAAAAAAAAAAAAAA
+AAA4AAAAAAAAAAAAAAAAAAAAOwAAAAAAAAAAAAAAKQAAAHsAAAAAAAAAAAAAAH4AAAB9AAAAAAAA
+AAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAJEAAAAAAAAAAAAAAAAAAACcAAAAAAAAAAAAAAC0AAAA
+swAAAAAAAAAAAAAAfgAAAMEAAAAAAAAAAAAAACkAAADFAAAAAAAAAAAAAAApAAAAxwAAAAAAAAAA
+AAAAygAAAMkAAAAAAAAAAAAAAAAAAADOAAAAAAAAAAAAAAAAAAAAWgAAAAAAAAAAAAAAAAAAAOAA
+AAAAAAAAAAAAAAAAAADmAAAAAAAAAAAAAAAAAAAA6QAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAA
+AAAAAAAIAQAAAAAAAAAAAAAAAAAADgEAAAAAAAAAAAAAAAAAAAAAAAABAAAANwAAAAEAAAAQBAAA
+AQAAADcAAAABAAAAGAAAAAEAAAA3AAAAAQAAACoAAAABAAAANwAAAAEAAABMAAAAAQAAADcAAAAB
+AAAAXgAAAAEAAAA3AAAAAQAAAHoAAAABAAAANwAAAAEAAACQAAAAAQAAADcAAAABAAAAsQAAAAEA
+AAA3AAAAAQAAAMcAAAABAAAANwAAAAEAAADdAAAAAQAAADcAAAABAAAA/QAAAAEAAAA3AAAAAQAA
+AP8AAAABAAAANwAAAAEAAAAQAQAAAQAAADcAAAABAAAAJgEAAAEAAAA3AAAAAQAAADwBAAABAAAA
+NwAAAAEAAABSAQAAAQAAADcAAAABAAAAXQEAAAEAAAA3AAAAAQAAAGMBAAABAAAANwAAAAEAAABt
+AQAAAQAAADcAAAABAAAAcwEAAAEAAAA3AAAAAQAAAHkBAAABAAAANwAAAAEAAAB/AQAAAQAAADcA
+AAABAAAAhQEAAAEAAAA3AAAAAQAAAI8BAAABAAAANwAAAAEAAACVAQAAAQAAADcAAAABAAAAnAEA
+AAEAAAA3AAAAAQAAAKIBAAABAAAANwAAAAEAAACsAQAAAQAAADcAAAABAAAAtwEAAAEAAAA3AAAA
+AQAAAL0BAAABAAAANwAAAAEAAADHAQAAAQAAADcAAAABAAAA0gEAAAEAAAA3AAAAAQAAANkBAAAB
+AAAANwAAAAEAAADkAQAAAQAAADcAAAABAAAA6gEAAAEAAAA3AAAAAQAAAPEBAAABAAAANwAAAAEA
+AAD3AQAAAQAAADcAAAABAAAA/gEAAAEAAAA3AAAAAQAAABMCAAABAAAANwAAAAEAAAA7AgAAAQAA
+ADcAAAABAAAAWQIAAAEAAAA3AAAAAQAAAG0CAAABAAAANwAAAAEAAACBAgAAAQAAADcAAAABAAAA
+lgIAAAEAAAA3AAAAAQAAAKoCAAABAAAANwAAAAEAAAC+AgAAAQAAADcAAAABAAAA0gIAAAEAAAA3
+AAAAAQAAAOcCAAABAAAANwAAAAEAAAD4AwAAAQAAADcAAAABAAAAbwMAAAEAAAA3AAAAAQAAAIQD
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAQAAAP4AAAAKAAAAAAAA
+AAAAAAAAAAAAAgAAAP0AAAAXAAAAAAAAAAAAAAAAAAAAAwAAAPkAAAAJAAAAAAAAAAAAAAAAAAAA
+BAAAAPgAAAAHAAAAAAAAAAAAAAAAAAAABQAAAPcAAAACAAAAAAAAAAAAAAAAAAAABgAAAAEAAAAE
+AAAAAAAAAAAAAAABAAAAAAAAAPQAAAAFAAAAAAAAAAAAAAAAAAAABwAAAPMAAAAIAAAAAAAAAAAA
+AAAAAAAACAAAACIAAAAJAAAAAAAAAAAAAAAAAAAACQAAAAwAAAAHAAAAAAAAAAAAAAAAAAAACgAA
+AAYAAAACAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAEAAAAAAAAAAAAAAACAAAAAAAAAAMAAAAGAAAA
+AAAAAAAAAAAAAAAADAAAAAQAAAACAAAAAAAAAAAAAAAAAAAADQAAAAUAAAAHAAAAAAAAAAAAAAAA
+AAAADgAAAAsAAAAEAAAAAAAAAAAAAAADAAAAAAAAAAcAAAACAAAAAAAAAAAAAAAAAAAADwAAAAgA
+AAAGAAAAAAAAAAAAAAAAAAAAEAAAAAkAAAACAAAAAAAAAAAAAAAAAAAAEQAAAAoAAAAJAAAAAAAA
+AAAAAAAAAAAAEgAAABcAAAAHAAAAAAAAAAAAAAAAAAAAEwAAABEAAAACAAAAAAAAAAAAAAAAAAAA
+FAAAAA0AAAAEAAAAAAAAAAAAAAAEAAAAAAAAAA4AAAAGAAAAAAAAAAAAAAAAAAAAFQAAAA8AAAAC
+AAAAAAAAAAAAAAAAAAAAFgAAABAAAAAHAAAAAAAAAAAAAAAAAAAAFwAAABYAAAAEAAAAAAAAAAAA
+AAAFAAAAAAAAABIAAAACAAAAAAAAAAAAAAAAAAAAGAAAABMAAAAGAAAAAAAAAAAAAAAAAAAAGQAA
+ABQAAAACAAAAAAAAAAAAAAAAAAAAGgAAABUAAAAHAAAAAAAAAAAAAAAAAAAAGwAAABwAAAAEAAAA
+AAAAAAAAAAAGAAAAAAAAABgAAAACAAAAAAAAAAAAAAAAAAAAHAAAABkAAAAGAAAAAAAAAAAAAAAA
+AAAAHQAAABoAAAACAAAAAAAAAAAAAAAAAAAAHgAAABsAAAAHAAAAAAAAAAAAAAAAAAAAHwAAACEA
+AAAEAAAAAAAAAAAAAAAHAAAAAAAAAB0AAAACAAAAAAAAAAAAAAAAAAAAIAAAAB4AAAAGAAAAAAAA
+AAAAAAAAAAAAIQAAAB8AAAACAAAAAAAAAAAAAAAAAAAAIgAAACAAAAAIAAAAAAAAAAAAAAAAAAAA
+IwAAADMAAAAJAAAAAAAAAAAAAAAAAAAAJAAAACgAAAAHAAAAAAAAAAAAAAAAAAAAJQAAACcAAAAC
+AAAAAAAAAAAAAAAAAAAAJgAAACMAAAAEAAAAAAAAAAAAAAAIAAAAAAAAACQAAAAGAAAAAAAAAAAA
+AAAAAAAAJwAAACUAAAACAAAAAAAAAAAAAAAAAAAAKAAAACYAAAAHAAAAAAAAAAAAAAAAAAAAKQAA
+AC0AAAAEAAAAAAAAAAAAAAAJAAAAAAAAACkAAAACAAAAAAAAAAAAAAAAAAAAKgAAACoAAAAGAAAA
+AAAAAAAAAAAAAAAAKwAAACsAAAACAAAAAAAAAAAAAAAAAAAALAAAACwAAAAHAAAAAAAAAAAAAAAA
+AAAALQAAADIAAAAEAAAAAAAAAAAAAAAKAAAAAAAAAC4AAAACAAAAAAAAAAAAAAAAAAAALgAAAC8A
+AAAGAAAAAAAAAAAAAAAAAAAALwAAADAAAAACAAAAAAAAAAAAAAAAAAAAMAAAADEAAAAPAAAAAAAA
+AAAAAAAAAAAAMQAAALwAAAACAAAAAAAAAAAAAAAAAAAAMgAAADQAAAACAAAAAAAAAAAAAAAAAAAA
+MwAAADUAAAAEAAAAAAAAAAAAAAALAAAAAAAAADYAAAAEAAAAAAAAAAAAAAAMAAAAAAAAADcAAAAH
+AAAAAAAAAAAAAAAAAAAANAAAADwAAAACAAAAAAAAAAAAAAAAAAAANQAAADgAAAAEAAAAAAAAAAAA
+AAANAAAAAAAAADkAAAAGAAAAAAAAAAAAAAAAAAAANgAAADoAAAACAAAAAAAAAAAAAAAAAAAANwAA
+ADsAAAAHAAAAAAAAAAAAAAAAAAAAOAAAAEEAAAACAAAAAAAAAAAAAAAAAAAAOQAAAD0AAAAEAAAA
+AAAAAAAAAAAOAAAAAAAAAD4AAAAGAAAAAAAAAAAAAAAAAAAAOgAAAD8AAAACAAAAAAAAAAAAAAAA
+AAAAOwAAAEAAAAAHAAAAAAAAAAAAAAAAAAAAPAAAAEYAAAACAAAAAAAAAAAAAAAAAAAAPQAAAEIA
+AAAEAAAAAAAAAAAAAAAPAAAAAAAAAEMAAAAGAAAAAAAAAAAAAAAAAAAAPgAAAEQAAAACAAAAAAAA
+AAAAAAAAAAAAPwAAAEUAAAAHAAAAAAAAAAAAAAAAAAAAQAAAAEsAAAACAAAAAAAAAAAAAAAAAAAA
+QQAAAEcAAAAEAAAAAAAAAAAAAAAQAAAAAAAAAEgAAAAGAAAAAAAAAAAAAAAAAAAAQgAAAEkAAAAC
+AAAAAAAAAAAAAAAAAAAAQwAAAEoAAAALAAAAAAAAAAAAAAAAAAAARAAAAFAAAAALAAAAAAAAAAAA
+AAAAAAAARQAAAE0AAAAEAAAAAAAAAAAAAAARAAAAAAAAAEwAAAALAAAAAAAAAAAAAAAAAAAARgAA
+AE8AAAAEAAAAAAAAAAAAAAASAAAAAAAAAE4AAAALAAAAAAAAAAAAAAAAAAAARwAAAGcAAAALAAAA
+AAAAAAAAAAAAAAAASAAAAFIAAAAEAAAAAAAAAAAAAAATAAAAAAAAAFEAAAALAAAAAAAAAAAAAAAA
+AAAASQAAAFQAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAFMAAAALAAAAAAAAAAAAAAAAAAAASgAAAFYA
+AAAEAAAAAAAAAAAAAAAVAAAAAAAAAFUAAAALAAAAAAAAAAAAAAAAAAAASwAAAFgAAAAEAAAAAAAA
+AAAAAAAWAAAAAAAAAFcAAAALAAAAAAAAAAAAAAAAAAAATAAAAFoAAAAEAAAAAAAAAAAAAAAXAAAA
+AAAAAFkAAAALAAAAAAAAAAAAAAAAAAAATQAAAFsAAAALAAAAAAAAAAAAAAAAAAAATgAAAF0AAAAE
+AAAAAAAAAAAAAAAYAAAAAAAAAFwAAAALAAAAAAAAAAAAAAAAAAAATwAAAF8AAAAEAAAAAAAAAAAA
+AAAZAAAAAAAAAF4AAAALAAAAAAAAAAAAAAAAAAAAUAAAAGQAAAALAAAAAAAAAAAAAAAAAAAAUQAA
+AGEAAAAEAAAAAAAAAAAAAAAaAAAAAAAAAGAAAAALAAAAAAAAAAAAAAAAAAAAUgAAAGMAAAAEAAAA
+AAAAAAAAAAAbAAAAAAAAAGIAAAALAAAAAAAAAAAAAAAAAAAAUwAAAGYAAAAEAAAAAAAAAAAAAAAc
+AAAAAAAAAGUAAAALAAAAAAAAAAAAAAAAAAAAVAAAAHQAAAALAAAAAAAAAAAAAAAAAAAAVQAAAGwA
+AAALAAAAAAAAAAAAAAAAAAAAVgAAAGkAAAAEAAAAAAAAAAAAAAAdAAAAAAAAAGgAAAALAAAAAAAA
+AAAAAAAAAAAAVwAAAGsAAAAEAAAAAAAAAAAAAAAeAAAAAAAAAGoAAAALAAAAAAAAAAAAAAAAAAAA
+WAAAAG4AAAAEAAAAAAAAAAAAAAAfAAAAAAAAAG0AAAALAAAAAAAAAAAAAAAAAAAAWQAAAG8AAAAL
+AAAAAAAAAAAAAAAAAAAAWgAAAHEAAAAEAAAAAAAAAAAAAAAgAAAAAAAAAHAAAAALAAAAAAAAAAAA
+AAAAAAAAWwAAAHMAAAAEAAAAAAAAAAAAAAAhAAAAAAAAAHIAAAALAAAAAAAAAAAAAAAAAAAAXAAA
+AH8AAAALAAAAAAAAAAAAAAAAAAAAXQAAAHYAAAAEAAAAAAAAAAAAAAAiAAAAAAAAAHUAAAALAAAA
+AAAAAAAAAAAAAAAAXgAAAHgAAAAEAAAAAAAAAAAAAAAjAAAAAAAAAHcAAAALAAAAAAAAAAAAAAAA
+AAAAXwAAAHoAAAAEAAAAAAAAAAAAAAAkAAAAAAAAAHkAAAALAAAAAAAAAAAAAAAAAAAAYAAAAHwA
+AAAEAAAAAAAAAAAAAAAlAAAAAAAAAHsAAAALAAAAAAAAAAAAAAAAAAAAYQAAAH4AAAAEAAAAAAAA
+AAAAAAAmAAAAAAAAAH0AAAAHAAAAAAAAAAAAAAAAAAAAYgAAAIQAAAACAAAAAAAAAAAAAAAAAAAA
+YwAAAIAAAAAEAAAAAAAAAAAAAAAnAAAAAAAAAIEAAAAGAAAAAAAAAAAAAAAAAAAAZAAAAIIAAAAC
+AAAAAAAAAAAAAAAAAAAAZQAAAIMAAAAHAAAAAAAAAAAAAAAAAAAAZgAAAIgAAAACAAAAAAAAAAAA
+AAAAAAAAZwAAAIUAAAAGAAAAAAAAAAAAAAAAAAAAaAAAAIYAAAACAAAAAAAAAAAAAAAAAAAAaQAA
+AIcAAAAHAAAAAAAAAAAAAAAAAAAAagAAAI0AAAACAAAAAAAAAAAAAAAAAAAAawAAAIkAAAAEAAAA
+AAAAAAAAAAAoAAAAAAAAAIoAAAAGAAAAAAAAAAAAAAAAAAAAbAAAAIsAAAACAAAAAAAAAAAAAAAA
+AAAAbQAAAIwAAAAHAAAAAAAAAAAAAAAAAAAAbgAAAJEAAAACAAAAAAAAAAAAAAAAAAAAbwAAAI4A
+AAAGAAAAAAAAAAAAAAAAAAAAcAAAAI8AAAACAAAAAAAAAAAAAAAAAAAAcQAAAJAAAAAHAAAAAAAA
+AAAAAAAAAAAAcgAAAJYAAAAEAAAAAAAAAAAAAAApAAAAAAAAAJIAAAACAAAAAAAAAAAAAAAAAAAA
+cwAAAJMAAAAGAAAAAAAAAAAAAAAAAAAAdAAAAJQAAAACAAAAAAAAAAAAAAAAAAAAdQAAAJUAAAAH
+AAAAAAAAAAAAAAAAAAAAdgAAAJsAAAAEAAAAAAAAAAAAAAAqAAAAAAAAAJcAAAACAAAAAAAAAAAA
+AAAAAAAAdwAAAJgAAAAGAAAAAAAAAAAAAAAAAAAAeAAAAJkAAAACAAAAAAAAAAAAAAAAAAAAeQAA
+AJoAAAAHAAAAAAAAAAAAAAAAAAAAegAAAKAAAAAEAAAAAAAAAAAAAAArAAAAAAAAAJwAAAACAAAA
+AAAAAAAAAAAAAAAAewAAAJ0AAAAGAAAAAAAAAAAAAAAAAAAAfAAAAJ4AAAACAAAAAAAAAAAAAAAA
+AAAAfQAAAJ8AAAAHAAAAAAAAAAAAAAAAAAAAfgAAAKUAAAAEAAAAAAAAAAAAAAAsAAAAAAAAAKEA
+AAACAAAAAAAAAAAAAAAAAAAAfwAAAKIAAAAGAAAAAAAAAAAAAAAAAAAAgAAAAKMAAAACAAAAAAAA
+AAAAAAAAAAAAgQAAAKQAAAAHAAAAAAAAAAAAAAAAAAAAggAAAKoAAAAEAAAAAAAAAAAAAAAtAAAA
+AAAAAKYAAAACAAAAAAAAAAAAAAAAAAAAgwAAAKcAAAAGAAAAAAAAAAAAAAAAAAAAhAAAAKgAAAAC
+AAAAAAAAAAAAAAAAAAAAhQAAAKkAAAAHAAAAAAAAAAAAAAAAAAAAhgAAAK8AAAAEAAAAAAAAAAAA
+AAAuAAAAAAAAAKsAAAACAAAAAAAAAAAAAAAAAAAAhwAAAKwAAAAGAAAAAAAAAAAAAAAAAAAAiAAA
+AK0AAAACAAAAAAAAAAAAAAAAAAAAiQAAAK4AAAAHAAAAAAAAAAAAAAAAAAAAigAAALQAAAAEAAAA
+AAAAAAAAAAAvAAAAAAAAALAAAAACAAAAAAAAAAAAAAAAAAAAiwAAALEAAAAGAAAAAAAAAAAAAAAA
+AAAAjAAAALIAAAACAAAAAAAAAAAAAAAAAAAAjQAAALMAAAAHAAAAAAAAAAAAAAAAAAAAjgAAALkA
+AAAEAAAAAAAAAAAAAAAwAAAAAAAAALUAAAACAAAAAAAAAAAAAAAAAAAAjwAAALYAAAAGAAAAAAAA
+AAAAAAAAAAAAkAAAALcAAAACAAAAAAAAAAAAAAAAAAAAkQAAALgAAAANAAAAAAAAAAAAAAAAAAAA
+kgAAALoAAAAOAAAAAAAAAAAAAAAAAAAAkwAAALsAAAAQAAAAAAAAAAAAAAAAAAAAlAAAAL0AAAAS
+AAAAAAAAAAAAAAAAAAAAlQAAAL4AAAATAAAAAAAAAAAAAAAAAAAAlgAAAL8AAAAUAAAAAAAAAAAA
+AAAAAAAAlwAAAMAAAAAPAAAAAAAAAAAAAAAAAAAAmAAAAPEAAAACAAAAAAAAAAAAAAAAAAAAmQAA
+AMEAAAACAAAAAAAAAAAAAAAAAAAAmgAAAMIAAAAEAAAAAAAAAAAAAAAxAAAAAAAAAO4AAAAVAAAA
+AAAAAAAAAAAAAAAAmwAAAO0AAAAHAAAAAAAAAAAAAAAAAAAAnAAAAMYAAAACAAAAAAAAAAAAAAAA
+AAAAnQAAAMMAAAAGAAAAAAAAAAAAAAAAAAAAngAAAMQAAAACAAAAAAAAAAAAAAAAAAAAnwAAAMUA
+AAAHAAAAAAAAAAAAAAAAAAAAoAAAAMoAAAACAAAAAAAAAAAAAAAAAAAAoQAAAMcAAAAGAAAAAAAA
+AAAAAAAAAAAAogAAAMgAAAACAAAAAAAAAAAAAAAAAAAAowAAAMkAAAAHAAAAAAAAAAAAAAAAAAAA
+pAAAAM4AAAACAAAAAAAAAAAAAAAAAAAApQAAAMsAAAAGAAAAAAAAAAAAAAAAAAAApgAAAMwAAAAC
+AAAAAAAAAAAAAAAAAAAApwAAAM0AAAAHAAAAAAAAAAAAAAAAAAAAqAAAANMAAAAEAAAAAAAAAAAA
+AAAyAAAAAAAAAM8AAAACAAAAAAAAAAAAAAAAAAAAqQAAANAAAAAGAAAAAAAAAAAAAAAAAAAAqgAA
+ANEAAAACAAAAAAAAAAAAAAAAAAAAqwAAANIAAAAHAAAAAAAAAAAAAAAAAAAArAAAANgAAAAEAAAA
+AAAAAAAAAAAzAAAAAAAAANQAAAACAAAAAAAAAAAAAAAAAAAArQAAANUAAAAGAAAAAAAAAAAAAAAA
+AAAArgAAANYAAAACAAAAAAAAAAAAAAAAAAAArwAAANcAAAAHAAAAAAAAAAAAAAAAAAAAsAAAANwA
+AAACAAAAAAAAAAAAAAAAAAAAsQAAANkAAAAGAAAAAAAAAAAAAAAAAAAAsgAAANoAAAACAAAAAAAA
+AAAAAAAAAAAAswAAANsAAAAHAAAAAAAAAAAAAAAAAAAAtAAAAOAAAAACAAAAAAAAAAAAAAAAAAAA
+tQAAAN0AAAAGAAAAAAAAAAAAAAAAAAAAtgAAAN4AAAACAAAAAAAAAAAAAAAAAAAAtwAAAN8AAAAH
+AAAAAAAAAAAAAAAAAAAAuAAAAOQAAAACAAAAAAAAAAAAAAAAAAAAuQAAAOEAAAAGAAAAAAAAAAAA
+AAAAAAAAugAAAOIAAAACAAAAAAAAAAAAAAAAAAAAuwAAAOMAAAAHAAAAAAAAAAAAAAAAAAAAvAAA
+AOgAAAACAAAAAAAAAAAAAAAAAAAAvQAAAOUAAAAGAAAAAAAAAAAAAAAAAAAAvgAAAOYAAAACAAAA
+AAAAAAAAAAAAAAAAvwAAAOcAAAAHAAAAAAAAAAAAAAAAAAAAwAAAAOwAAAACAAAAAAAAAAAAAAAA
+AAAAwQAAAOkAAAAGAAAAAAAAAAAAAAAAAAAAwgAAAOoAAAACAAAAAAAAAAAAAAAAAAAAwwAAAOsA
+AAANAAAAAAAAAAAAAAAAAAAAxAAAAO8AAAAOAAAAAAAAAAAAAAAAAAAAxQAAAPAAAAAWAAAAAAAA
+AAAAAAAAAAAAxgAAAPIAAAAGAAAAAAAAAAAAAAAAAAAAxwAAAPUAAAACAAAAAAAAAAAAAAAAAAAA
+yAAAAPYAAAAXAAAAAAAAAAAAAAAAAAAAyQAAAPoAAAAXAAAAAAAAAAAAAAAAAAAAygAAAPsAAAAX
+AAAAAAAAAAAAAAAAAAAAywAAAPwAAAAAAAAAAAAAAAoAAAABAAAAAQAAADcEAAA8AAAAAQAAADgE
+AAA5AAAAAQAAADkEAADcAAAAAQAAADoEAADdAAAAAQAAADsEAABPAAAAAQAAADwEAADeAAAAAQAA
+AD0EAADQAAAAAQAAAD4EAAA/AAAAAQAAAD8EAABkAAAAAQAAAEAEAAAAAAAAAwAAAAIAAAABAAAA
+NAQAADwAAAABAAAANQQAADkAAAABAAAANgQAAAUAAAADAAAAAQAAACAEAAALAQAAAQAAACEEAAAM
+AQAAAQAAACIEAAANAQAAAQAAACMEAACUAAAAAQAAACQEAAAGAAAABAAAAAEAAAAaBAAAfwAAAAEA
+AAAbBAAAgAAAAAEAAAAcBAAAgQAAAAEAAAAdBAAAkwAAAAEAAAAeBAAAlAAAAAEAAAAfBAAAAAAA
+AB4AAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAAAAAAAJAAAAAAAAAAYAAAAKAAAA
+AAAAAAYAAAALAAAAAQAAAAEAAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQ
+AAAAAQAAAAIAAAARAAAAAAAAAAYAAAASAAAAAQAAAAMAAAATAAAAAQAAAAQAAAAVAAAAAQAAAAkA
+AAAqAAAAAAAAAAYAAAArAAAAAAAAAAYAAAAsAAAAAgAAAAAAAAAtAAAAAQAAAAoAAAAuAAAAAgAA
+AAEAAAAvAAAAAQAAAAsAAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAA1AAAAAAAAAAYAAAA2AAAA
+AQAAABEEAABxAAAAAAAAAAYAAAByAAAAAAAAAAYAAABzAAAAAAAAAHQAAAB1AAAAAQAAABQEAAB8
+AAAAAQAAABkEAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkA
+AAAAAAAABgAAABoAAAABAAAABQAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAA
+AB4AAAABAAAABgAAAB8AAAAAAAAABgAAACAAAAABAAAABwAAACEAAAAAAAAAGAAAACIAAAAAAAAA
+IwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAACAAAAAAAAAAm
+AAAAOQAAAAEAAACkAAAAPAAAAAEAAADxAAAAAQAAAAEAAADyAAAAPwAAAAEAAAAAAwAAQQAAAAEA
+AAABAwAAQgAAAAEAAAACAwAAQwAAAAEAAAADAwAARAAAAAEAAAAEAwAARQAAAAEAAAAFAwAARgAA
+AAEAAAAGAwAARwAAAAEAAAAHAwAASAAAAAEAAAAIAwAASQAAAAEAAAAJAwAASgAAAAEAAAAKAwAA
+SwAAAAEAAAALAwAATAAAAAEAAAAMAwAATQAAAAEAAAANAwAATgAAAAEAAAAOAwAATwAAAAEAAAAS
+AwAAWAAAAAEAAAATAwAAWQAAAAEAAAAUAwAAWgAAAAEAAAAVAwAAWwAAAAEAAAAXAwAAXAAAAAEA
+AAAZAwAAXQAAAAEAAAAaAwAAXgAAAAEAAAAbAwAAXwAAAAEAAAAeAwAAYQAAAAEAAAAfAwAAYgAA
+AAEAAAAEBAAAZAAAAAEAAAAFBAAAZgAAAAEAAAAGBAAAZwAAAAEAAAAHBAAAaAAAAAEAAAAIBAAA
+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
+HgAAAAEAAAA5AAAAHwAAAAAAAAAGAAAAIAAAAAEAAAA6AAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAj
+AAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAA7AAAAAAAAAAkA
+AAAEAAAAAQAAAFYAAAB/AAAAAQAAAFcAAACAAAAAAQAAAFgAAACBAAAAAQAAAFkAAACKAAAAAQAA
+AFoAAACLAAAAAQAAAFsAAACMAAAAAQAAAHEAAACTAAAAAQAAAHIAAACUAAAAAQAAAHMAAAAeAAAA
+BQAAAAAAAAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAABAAAAACQAAAAAAAAAGAAAACgAAAAAAAAAG
+AAAACwAAAAEAAABBAAAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAAAAAGAAAAEAAAAAEA
+AABCAAAAEQAAAAAAAAAGAAAAEgAAAAEAAABDAAAAEwAAAAEAAABEAAAAFQAAAAEAAABJAAAAKgAA
+AAAAAAAGAAAAKwAAAAAAAAAGAAAALAAAAAIAAAAAAAAALQAAAAEAAABKAAAALgAAAAIAAAABAAAA
+LwAAAAEAAABLAAAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAANQAAAAAAAAAGAAAANgAAAAEAAABN
+AAAAcQAAAAAAAAAGAAAAcgAAAAAAAAAGAAAAcwAAAAAAAAB0AAAAdQAAAAEAAABQAAAAfAAAAAEA
+AABVAAAAFgAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAA
+AAYAAAAaAAAAAQAAAEUAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAA
+AQAAAEYAAAAfAAAAAAAAAAYAAAAgAAAAAQAAAEcAAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAk
+AAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAEgAAAAAAAAACgAAABYA
+AAAAAAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAAABoAAAABAAAATgAAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAAIwAAAHkAAAAAAAAAIwAAAHoAAAABAAAA
+TwAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABR
+AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAABSAAAAHwAAAAAA
+AAAGAAAAIAAAAAEAAABTAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAA
+AAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAABUAAAAAAAAABUAAAAFAAAAAAAAAAYAAACNAAAA
+AAAAAI4AAAAKAAAAAAAAAAYAAAALAAAAAQAAAFwAAAAMAAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQ
+AAAAAQAAAF0AAACPAAAAAAAAAAYAAACQAAAAAQAAAF8AAAATAAAAAQAAAGAAAAAVAAAAAQAAAGUA
+AAAsAAAAAgAAAAAAAAAtAAAAAQAAAGYAAAAuAAAAAgAAAAEAAAAvAAAAAQAAAGcAAAAyAAAAAAAA
+ADMAAAA0AAAAAAAAADMAAACbAAAAAQAAAGgAAAB1AAAAAQAAAGsAAAB8AAAAAQAAAHAAAAAWAAAA
+AAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABh
+AAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAABiAAAAHwAAAAAA
+AAAGAAAAIAAAAAEAAABjAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAA
+AAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAABkAAAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAGkAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3
+AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAGoAAAAAAAAAEAAAABYA
+AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAbAAAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAbQAAAB8AAAAAAAAABgAAACAAAAABAAAA
+bgAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA
+AAAAIwAAACcAAAABAAAAbwAAAAAAAAAVAAAABQAAAAAAAAAGAAAAjQAAAAAAAACOAAAACgAAAAAA
+AAAGAAAACwAAAAEAAAB4AAAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEAAAB5AAAAjwAA
+AAAAAAAGAAAAkAAAAAEAAAB7AAAAEwAAAAEAAAB8AAAAFQAAAAEAAACBAAAALAAAAAIAAAAAAAAA
+LQAAAAEAAACCAAAALgAAAAIAAAABAAAALwAAAAEAAACDAAAAMgAAAAAAAAAzAAAANAAAAAAAAAAz
+AAAAmwAAAAEAAACEAAAAdQAAAAEAAACHAAAAfAAAAAEAAACMAAAAFgAAAAAAAAAGAAAAEAAAABYA
+AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAfQAAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAfgAAAB8AAAAAAAAABgAAACAAAAABAAAA
+fwAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA
+AAAAIwAAACcAAAABAAAAgAAAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB2AAAAGQAAAAAA
+AAAGAAAAGgAAAAEAAACFAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdwAAAAAAAAB2AAAAeAAA
+AAAAAAAjAAAAeQAAAAAAAAAjAAAAegAAAAEAAACGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIgAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAd
+AAAAAAAAAAYAAAAeAAAAAQAAAIkAAAAfAAAAAAAAAAYAAAAgAAAAAQAAAIoAAAAhAAAAAAAAABgA
+AAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAA
+AIsAAAAAAAAAFgAAAAUAAAAAAAAABgAAAI0AAAAAAAAAjgAAAAoAAAAAAAAABgAAAAsAAAABAAAA
+jgAAAAwAAAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAAjwAAAI8AAAAAAAAABgAAAJAAAAAB
+AAAAkQAAABMAAAABAAAAkgAAABUAAAABAAAAlwAAAJ0AAAAAAAAABgAAACwAAAACAAAAAAAAAC0A
+AAABAAAAmAAAAC4AAAACAAAAAQAAAC8AAAABAAAAmQAAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAA
+AJsAAAABAAAAmgAAAHUAAAABAAAAnQAAAHwAAAABAAAAogAAABYAAAAAAAAABgAAAAAAAAAQAAAA
+FgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAACTAAAAGwAAAAAAAAAG
+AAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAACUAAAAHwAAAAAAAAAGAAAAIAAAAAEA
+AACVAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAA
+AAAAAAAjAAAAJwAAAAEAAACWAAAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAA
+AAAAAAYAAAAaAAAAAQAAAJsAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4
+AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAJwAAAAAAAAAEAAAABYAAAAAAAAABgAAABcA
+AAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAngAAABsAAAAAAAAABgAAABwAAAACAAAAkAAA
+AB0AAAAAAAAABgAAAB4AAAABAAAAnwAAAB8AAAAAAAAABgAAACAAAAABAAAAoAAAACEAAAAAAAAA
+GAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAAB
+AAAAoQAAAAAAAAAGAAAAOgAAAAEAAADBAAAAhQAAAAEAAADCAAAAhgAAAAEAAADDAAAAhwAAAAEA
+AADEAAAAiAAAAAEAAADaAAAAiQAAAAEAAADwAAAAAAAAAAYAAAAEAAAAAQAAALsAAAB/AAAAAQAA
+ALwAAACAAAAAAQAAAL0AAACBAAAAAQAAAL4AAACTAAAAAQAAAL8AAACUAAAAAQAAAMAAAAAAAAAA
+HgAAAAUAAAAAAAAABgAAAAcAAAAAAAAABgAAAAgAAAABAAAApQAAAAkAAAAAAAAABgAAAAoAAAAA
+AAAABgAAAAsAAAABAAAApgAAAAwAAAAAAAAABgAAAA0AAAAAAAAADgAAAA8AAAAAAAAABgAAABAA
+AAABAAAApwAAABEAAAAAAAAABgAAABIAAAABAAAAqAAAABMAAAABAAAAqQAAABUAAAABAAAArgAA
+ACoAAAAAAAAABgAAACsAAAAAAAAABgAAACwAAAACAAAAAAAAAC0AAAABAAAArwAAAC4AAAACAAAA
+AQAAAC8AAAABAAAAsAAAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAADUAAAAAAAAABgAAADYAAAAB
+AAAAsgAAAHEAAAAAAAAABgAAAHIAAAAAAAAABgAAAHMAAAAAAAAAdAAAAHUAAAABAAAAtQAAAHwA
+AAABAAAAugAAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAA
+AAAAAAAGAAAAGgAAAAEAAACqAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAA
+HgAAAAEAAACrAAAAHwAAAAAAAAAGAAAAIAAAAAEAAACsAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAj
+AAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACtAAAAAAAAAAoA
+AAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAAALMAAAAbAAAAAAAA
+AAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAA
+AQAAALQAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAAB
+AAAAtgAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAtwAAAB8A
+AAAAAAAABgAAACAAAAABAAAAuAAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAA
+ACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAuQAAAAAAAAAVAAAABQAAAAAAAAAGAAAA
+jQAAAAAAAACOAAAACgAAAAAAAAAGAAAACwAAAAEAAADFAAAADAAAAAAAAAAGAAAADwAAAAAAAAAG
+AAAAEAAAAAEAAADGAAAAjwAAAAAAAAAGAAAAkAAAAAEAAADIAAAAEwAAAAEAAADJAAAAFQAAAAEA
+AADOAAAALAAAAAIAAAAAAAAALQAAAAEAAADPAAAALgAAAAIAAAABAAAALwAAAAEAAADQAAAAMgAA
+AAAAAAAzAAAANAAAAAAAAAAzAAAAmwAAAAEAAADRAAAAdQAAAAEAAADUAAAAfAAAAAEAAADZAAAA
+FgAAAAAAAAAGAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAAB
+AAAAygAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAywAAAB8A
+AAAAAAAABgAAACAAAAABAAAAzAAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAA
+ACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAzQAAAAAAAAAKAAAAFgAAAAAAAAAGAAAA
+FwAAAAAAAAB2AAAAGQAAAAAAAAAGAAAAGgAAAAEAAADSAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQ
+AAAAdwAAAAAAAAB2AAAAeAAAAAAAAAAjAAAAeQAAAAAAAAAjAAAAegAAAAEAAADTAAAAAAAAABAA
+AAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAANUAAAAbAAAAAAAA
+AAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAANYAAAAfAAAAAAAAAAYAAAAgAAAA
+AQAAANcAAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAm
+AAAAAAAAACMAAAAnAAAAAQAAANgAAAAAAAAAFgAAAAUAAAAAAAAABgAAAI0AAAAAAAAAjgAAAAoA
+AAAAAAAABgAAAAsAAAABAAAA2wAAAAwAAAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAA3AAA
+AI8AAAAAAAAABgAAAJAAAAABAAAA3gAAABMAAAABAAAA3wAAABUAAAABAAAA5AAAAJ0AAAAAAAAA
+BgAAACwAAAACAAAAAAAAAC0AAAABAAAA5QAAAC4AAAACAAAAAQAAAC8AAAABAAAA5gAAADIAAAAA
+AAAAMwAAADQAAAAAAAAAMwAAAJsAAAABAAAA5wAAAHUAAAABAAAA6gAAAHwAAAABAAAA7wAAABYA
+AAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAA
+AAEAAADgAAAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAADhAAAA
+HwAAAAAAAAAGAAAAIAAAAAEAAADiAAAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAj
+AAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAADjAAAAAAAAAAoAAAAWAAAAAAAAAAYA
+AAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAOgAAAAbAAAAAAAAAAYAAAAcAAAAAgAA
+AJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAOkAAAAAAAAA
+EAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA6wAAABsAAAAA
+AAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAA7AAAAB8AAAAAAAAABgAAACAA
+AAABAAAA7QAAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAA
+ACYAAAAAAAAAIwAAACcAAAABAAAA7gAAAAAAAAAeAAAADwAAAAAAAAAGAAAAFgAAAAAAAAAGAAAA
+ngAAAAEAAAD3AAAAnwAAAAEAAAD8AAAAoAAAAAAAAAAGAAAAoQAAAAEAAAD+AAAAogAAAAAAAAAG
+AAAAowAAAAAAAAAGAAAApAAAAAAAAAAGAAAApQAAAAAAAAAGAAAApgAAAAEAAAAAAQAApwAAAAAA
+AAAGAAAAqAAAAAAAAACpAAAAqgAAAAAAAAAGAAAAqwAAAAEAAAABAQAArAAAAAAAAAAGAAAArQAA
+AAAAAAAzAAAArgAAAAEAAAACAQAArwAAAAEAAAADAQAAsAAAAAEAAAD5AgAALAAAAAIAAAAAAAAA
+LQAAAAEAAAD6AgAALgAAAAIAAAABAAAALwAAAAEAAAD7AgAAMgAAAAAAAAAjAAAANAAAAAAAAAAz
+AAAAwgAAAAAAAAAGAAAAwwAAAAEAAAD9AgAAxgAAAAEAAAD/AgAAyAAAAAAAAAAGAAAAAAAAABAA
+AAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAPMAAAAbAAAAAAAA
+AAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAPQAAAAfAAAAAAAAAAYAAAAgAAAA
+AQAAAPUAAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAm
+AAAAAAAAACMAAAAnAAAAAQAAAPYAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkA
+AAAAAAAABgAAABoAAAABAAAA+AAAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAA
+AB4AAAABAAAA+QAAAB8AAAAAAAAABgAAACAAAAABAAAA+gAAACEAAAAAAAAAGAAAACIAAAAAAAAA
+IwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAA+wAAAAAAAAAd
+AAAABQAAAAAAAAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAAAEAQAACQAAAAAAAAAGAAAACgAAAAAA
+AAAGAAAACwAAAAEAAAAFAQAADAAAAAAAAAAGAAAADQAAAAAAAAAOAAAADwAAAAAAAAAGAAAAEAAA
+AAEAAAAGAQAAEQAAAAAAAAAGAAAAEgAAAAEAAAAHAQAAEwAAAAEAAAAIAQAAFQAAAAEAAAANAQAA
+KgAAAAAAAAAGAAAALAAAAAIAAAAAAAAALQAAAAEAAAAOAQAALgAAAAIAAAABAAAALwAAAAEAAAAP
+AQAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAANQAAAAAAAAAGAAAANgAAAAEAAAARAQAAcQAAAAAA
+AAAGAAAAcgAAAAAAAAAGAAAAcwAAAAAAAAB0AAAAdQAAAAEAAAAUAQAAfAAAAAEAAAAZAQAAFgAA
+AAAAAAAGAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA
+CQEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAACgEAAB8AAAAA
+AAAABgAAACAAAAABAAAACwEAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUA
+AAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAADAEAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAA
+AAAAAAB2AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAASAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAA
+dwAAAAAAAAB2AAAAeAAAAAAAAAAjAAAAeQAAAAAAAAAjAAAAegAAAAEAAAATAQAAAAAAABAAAAAW
+AAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAABUBAAAbAAAAAAAAAAYA
+AAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAABYBAAAfAAAAAAAAAAYAAAAgAAAAAQAA
+ABcBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAA
+AAAAACMAAAAnAAAAAQAAABgBAAAAAAAAHQAAAAUAAAAAAAAABgAAAAcAAAAAAAAABgAAAAgAAAAB
+AAAAGgEAAAkAAAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAAGwEAAAwAAAAAAAAABgAAAA0A
+AAAAAAAADgAAAA8AAAAAAAAABgAAABAAAAABAAAAHAEAABEAAAAAAAAABgAAABIAAAABAAAAHQEA
+ABMAAAABAAAAHgEAABUAAAABAAAAIwEAACoAAAAAAAAABgAAACwAAAACAAAAAAAAAC0AAAABAAAA
+JAEAAC4AAAACAAAAAQAAAC8AAAABAAAAJQEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAADUAAAAA
+AAAABgAAADYAAAABAAAAJwEAAHEAAAAAAAAABgAAAHIAAAAAAAAABgAAAHMAAAAAAAAAdAAAAHUA
+AAABAAAAKgEAAHwAAAABAAAALwEAABYAAAAAAAAABgAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAA
+ABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAB8BAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAA
+AAAAAAYAAAAeAAAAAQAAACABAAAfAAAAAAAAAAYAAAAgAAAAAQAAACEBAAAhAAAAAAAAABgAAAAi
+AAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAACIB
+AAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAAABoAAAABAAAAKAEA
+ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAAIwAAAHkAAAAAAAAA
+IwAAAHoAAAABAAAAKQEAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAG
+AAAAGgAAAAEAAAArAQAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEA
+AAAsAQAAHwAAAAAAAAAGAAAAIAAAAAEAAAAtAQAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAA
+AAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAuAQAAAAAAAB0AAAAFAAAA
+AAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAADABAAAJAAAAAAAAAAYAAAAKAAAAAAAAAAYAAAAL
+AAAAAQAAADEBAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAAAQAAADIB
+AAARAAAAAAAAAAYAAAASAAAAAQAAADMBAAATAAAAAQAAADQBAAAVAAAAAQAAADkBAAAqAAAAAAAA
+AAYAAAAsAAAAAgAAAAAAAAAtAAAAAQAAADoBAAAuAAAAAgAAAAEAAAAvAAAAAQAAADsBAAAyAAAA
+AAAAADMAAAA0AAAAAAAAADMAAAA1AAAAAAAAAAYAAAA2AAAAAQAAAD0BAABxAAAAAAAAAAYAAABy
+AAAAAAAAAAYAAABzAAAAAAAAAHQAAAB1AAAAAQAAAEABAAB8AAAAAQAAAEUBAAAWAAAAAAAAAAYA
+AAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAA1AQAAGwAA
+AAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAA2AQAAHwAAAAAAAAAGAAAA
+IAAAAAEAAAA3AQAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAj
+AAAAJgAAAAAAAAAjAAAAJwAAAAEAAAA4AQAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYA
+AAAZAAAAAAAAAAYAAAAaAAAAAQAAAD4BAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAA
+AHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAD8BAAAAAAAAEAAAABYAAAAAAAAA
+BgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAQQEAABsAAAAAAAAABgAAABwAAAAC
+AAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAQgEAAB8AAAAAAAAABgAAACAAAAABAAAAQwEAACEA
+AAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAA
+ACcAAAABAAAARAEAAAAAAAAdAAAABQAAAAAAAAAGAAAABwAAAAAAAAAGAAAACAAAAAEAAABGAQAA
+CQAAAAAAAAAGAAAACgAAAAAAAAAGAAAACwAAAAEAAABHAQAADAAAAAAAAAAGAAAADQAAAAAAAAAO
+AAAADwAAAAAAAAAGAAAAEAAAAAEAAABIAQAAEQAAAAAAAAAGAAAAEgAAAAEAAABJAQAAEwAAAAEA
+AABKAQAAFQAAAAEAAABPAQAAKgAAAAAAAAAGAAAALAAAAAIAAAAAAAAALQAAAAEAAABQAQAALgAA
+AAIAAAABAAAALwAAAAEAAABRAQAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAANQAAAAAAAAAGAAAA
+NgAAAAEAAABTAQAAcQAAAAAAAAAGAAAAcgAAAAAAAAAGAAAAcwAAAAAAAAB0AAAAdQAAAAEAAABW
+AQAAfAAAAAEAAABbAQAAFgAAAAAAAAAGAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkA
+AAAAAAAABgAAABoAAAABAAAASwEAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAA
+AB4AAAABAAAATAEAAB8AAAAAAAAABgAAACAAAAABAAAATQEAACEAAAAAAAAAGAAAACIAAAAAAAAA
+IwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAATgEAAAAAAAAK
+AAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB2AAAAGQAAAAAAAAAGAAAAGgAAAAEAAABUAQAAGwAAAAAA
+AAAGAAAAHAAAAAIAAACQAAAAdwAAAAAAAAB2AAAAeAAAAAAAAAAjAAAAeQAAAAAAAAAjAAAAegAA
+AAEAAABVAQAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAA
+AQAAAFcBAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAFgBAAAf
+AAAAAAAAAAYAAAAgAAAAAQAAAFkBAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMA
+AAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAFoBAAAAAAAACQAAALEAAAAAAAAABgAA
+ALIAAAABAAAAXAEAALAAAAABAAAAaQEAACwAAAACAAAAAAAAAC0AAAABAAAAagEAAC4AAAACAAAA
+AQAAAC8AAAABAAAAawEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAAsAAACPAAAAAAAAAAYAAACQ
+AAAAAQAAAF4BAACxAAAAAAAAAAYAAACyAAAAAQAAAF8BAACwAAAAAQAAAGABAAAsAAAAAgAAAAAA
+AAAtAAAAAQAAAGEBAAAuAAAAAgAAAAEAAAAvAAAAAQAAAGIBAAAyAAAAAAAAADMAAAA0AAAAAAAA
+ADMAAAALAAAAjwAAAAAAAAAGAAAAkAAAAAEAAABkAQAAsQAAAAAAAAAGAAAAsgAAAAEAAABlAQAA
+sAAAAAEAAABmAQAALAAAAAIAAAAAAAAALQAAAAEAAABnAQAALgAAAAIAAAABAAAALwAAAAEAAABo
+AQAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAACQAAALEAAAAAAAAABgAAALIAAAABAAAAbAEAALAA
+AAABAAAAsgEAACwAAAACAAAAAAAAAC0AAAABAAAAswEAAC4AAAACAAAAAQAAAC8AAAABAAAAtAEA
+ADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAAsAAACPAAAAAAAAAAYAAACQAAAAAQAAAG4BAACxAAAA
+AAAAAAYAAACyAAAAAQAAAG8BAACwAAAAAQAAAHABAAAsAAAAAgAAAAAAAAAtAAAAAQAAAHEBAAAu
+AAAAAgAAAAEAAAAvAAAAAQAAAHIBAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAALAAAAjwAAAAAA
+AAAGAAAAkAAAAAEAAAB0AQAAsQAAAAAAAAAGAAAAsgAAAAEAAAB1AQAAsAAAAAEAAAB2AQAALAAA
+AAIAAAAAAAAALQAAAAEAAAB3AQAALgAAAAIAAAABAAAALwAAAAEAAAB4AQAAMgAAAAAAAAAzAAAA
+NAAAAAAAAAAzAAAACwAAAI8AAAAAAAAABgAAAJAAAAABAAAAegEAALEAAAAAAAAABgAAALIAAAAB
+AAAAewEAALAAAAABAAAAfAEAACwAAAACAAAAAAAAAC0AAAABAAAAfQEAAC4AAAACAAAAAQAAAC8A
+AAABAAAAfgEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAAsAAACPAAAAAAAAAAYAAACQAAAAAQAA
+AIABAACxAAAAAAAAAAYAAACyAAAAAQAAAIEBAACwAAAAAQAAAIIBAAAsAAAAAgAAAAAAAAAtAAAA
+AQAAAIMBAAAuAAAAAgAAAAEAAAAvAAAAAQAAAIQBAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAAN
+AAAAtQAAAAAAAAAGAAAAtgAAAAAAAAAjAAAAjwAAAAAAAAAGAAAAkAAAAAEAAACGAQAAsQAAAAAA
+AAAGAAAAsgAAAAEAAACHAQAAsAAAAAEAAACIAQAALAAAAAIAAAAAAAAALQAAAAEAAACJAQAALgAA
+AAIAAAABAAAALwAAAAEAAACKAQAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAACQAAALEAAAAAAAAA
+BgAAALIAAAABAAAAiwEAALAAAAABAAAAjAEAACwAAAACAAAAAAAAAC0AAAABAAAAjQEAAC4AAAAC
+AAAAAQAAAC8AAAABAAAAjgEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAA0AAAC1AAAAAAAAAAYA
+AAC2AAAAAAAAACMAAACPAAAAAAAAAAYAAACQAAAAAQAAAJABAACxAAAAAAAAAAYAAACyAAAAAQAA
+AJEBAACwAAAAAQAAAJIBAAAsAAAAAgAAAAAAAAAtAAAAAQAAAJMBAAAuAAAAAgAAAAEAAAAvAAAA
+AQAAAJQBAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAALAAAAjwAAAAAAAAAGAAAAkAAAAAEAAACW
+AQAAsQAAAAAAAAAGAAAAsgAAAAEAAACXAQAAsAAAAAEAAACYAQAALAAAAAIAAAAAAAAALQAAAAEA
+AACZAQAALgAAAAIAAAABAAAALwAAAAEAAACaAQAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAACQAA
+ALEAAAAAAAAABgAAALIAAAABAAAAmwEAALAAAAABAAAAqAEAACwAAAACAAAAAAAAAC0AAAABAAAA
+qQEAAC4AAAACAAAAAQAAAC8AAAABAAAAqgEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAAwAAACP
+AAAAAAAAAAYAAACQAAAAAQAAAJ0BAAC3AAAAAAAAAAYAAACxAAAAAAAAAAYAAACyAAAAAQAAAJ4B
+AACwAAAAAQAAAJ8BAAAsAAAAAgAAAAAAAAAtAAAAAQAAAKABAAAuAAAAAgAAAAEAAAAvAAAAAQAA
+AKEBAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAAAAAAADQAAAI8AAAAAAAAABgAAAJAAAAABAAAA
+owEAALcAAAAAAAAABgAAALgAAAAAAAAAIwAAALEAAAAAAAAABgAAALIAAAABAAAApAEAALAAAAAB
+AAAApQEAACwAAAACAAAAAAAAAC0AAAABAAAApgEAAC4AAAACAAAAAQAAAC8AAAABAAAApwEAADIA
+AAAAAAAAMwAAADQAAAAAAAAAMwAAAA0AAAC5AAAAAAAAAAYAAAC6AAAAAQAAAKsBAACPAAAAAAAA
+AAYAAACQAAAAAQAAAK0BAACxAAAAAAAAAAYAAACyAAAAAQAAAK4BAACwAAAAAQAAAK8BAAAsAAAA
+AgAAAAAAAAAtAAAAAQAAALABAAAuAAAAAgAAAAEAAAAvAAAAAQAAALEBAAAyAAAAAAAAADMAAAA0
+AAAAAAAAADMAAAAJAAAAsQAAAAAAAAAGAAAAsgAAAAEAAAC1AQAAsAAAAAEAAADfAQAALAAAAAIA
+AAAAAAAALQAAAAEAAADgAQAALgAAAAIAAAABAAAALwAAAAEAAADhAQAAMgAAAAAAAAAzAAAANAAA
+AAAAAAAzAAAACQAAALEAAAAAAAAABgAAALIAAAABAAAAtgEAALAAAAABAAAAwwEAACwAAAACAAAA
+AAAAAC0AAAABAAAAxAEAAC4AAAACAAAAAQAAAC8AAAABAAAAxQEAADIAAAAAAAAAMwAAADQAAAAA
+AAAAMwAAAAwAAACPAAAAAAAAAAYAAACQAAAAAQAAALgBAAC3AAAAAAAAAAYAAACxAAAAAAAAAAYA
+AACyAAAAAQAAALkBAACwAAAAAQAAALoBAAAsAAAAAgAAAAAAAAAtAAAAAQAAALsBAAAuAAAAAgAA
+AAEAAAAvAAAAAQAAALwBAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAAAAAAADQAAAI8AAAAAAAAA
+BgAAAJAAAAABAAAAvgEAALcAAAAAAAAABgAAALgAAAAAAAAAIwAAALEAAAAAAAAABgAAALIAAAAB
+AAAAvwEAALAAAAABAAAAwAEAACwAAAACAAAAAAAAAC0AAAABAAAAwQEAAC4AAAACAAAAAQAAAC8A
+AAABAAAAwgEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAA0AAAC5AAAAAAAAAAYAAAC6AAAAAQAA
+AMYBAACPAAAAAAAAAAYAAACQAAAAAQAAAMgBAACxAAAAAAAAAAYAAACyAAAAAQAAAMkBAACwAAAA
+AQAAAMoBAAAsAAAAAgAAAAAAAAAtAAAAAQAAAMsBAAAuAAAAAgAAAAEAAAAvAAAAAQAAAMwBAAAy
+AAAAAAAAADMAAAA0AAAAAAAAADMAAAANAAAAtQAAAAAAAAAGAAAAtgAAAAAAAAAjAAAAtwAAAAAA
+AAAGAAAAuAAAAAAAAAAjAAAAsQAAAAAAAAAGAAAAsgAAAAEAAADNAQAAsAAAAAEAAADOAQAALAAA
+AAIAAAAAAAAALQAAAAEAAADPAQAALgAAAAIAAAABAAAALwAAAAEAAADQAQAAMgAAAAAAAAAzAAAA
+NAAAAAAAAAAzAAAADwAAAJ0AAAAAAAAABgAAALsAAAAAAAAAMwAAALkAAAAAAAAABgAAALoAAAAB
+AAAA0QEAAI8AAAAAAAAABgAAAJAAAAABAAAA0wEAALEAAAAAAAAABgAAALIAAAABAAAA1AEAALAA
+AAABAAAA1QEAACwAAAACAAAAAAAAAC0AAAABAAAA1gEAAC4AAAACAAAAAQAAAC8AAAABAAAA1wEA
+ADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAA8AAACdAAAAAAAAAAYAAAC7AAAAAAAAADMAAAC5AAAA
+AAAAAAYAAAC6AAAAAQAAANgBAACPAAAAAAAAAAYAAACQAAAAAQAAANoBAACxAAAAAAAAAAYAAACy
+AAAAAQAAANsBAACwAAAAAQAAANwBAAAsAAAAAgAAAAAAAAAtAAAAAQAAAN0BAAAuAAAAAgAAAAEA
+AAAvAAAAAQAAAN4BAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAAJAAAAsQAAAAAAAAAGAAAAsgAA
+AAEAAADiAQAAsAAAAAEAAAAEAgAALAAAAAIAAAAAAAAALQAAAAEAAAAFAgAALgAAAAIAAAABAAAA
+LwAAAAEAAAAGAgAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAADwAAALUAAAAAAAAABgAAALYAAAAA
+AAAAIwAAALkAAAAAAAAABgAAALoAAAABAAAA4wEAAI8AAAAAAAAABgAAAJAAAAABAAAA5QEAALEA
+AAAAAAAABgAAALIAAAABAAAA5gEAALAAAAABAAAA5wEAACwAAAACAAAAAAAAAC0AAAABAAAA6AEA
+AC4AAAACAAAAAQAAAC8AAAABAAAA6QEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAAsAAACPAAAA
+AAAAAAYAAACQAAAAAQAAAOsBAACxAAAAAAAAAAYAAACyAAAAAQAAAOwBAACwAAAAAQAAAO0BAAAs
+AAAAAgAAAAAAAAAtAAAAAQAAAO4BAAAuAAAAAgAAAAEAAAAvAAAAAQAAAO8BAAAyAAAAAAAAADMA
+AAA0AAAAAAAAADMAAAAPAAAAtQAAAAAAAAAGAAAAtgAAAAAAAAAjAAAAuQAAAAAAAAAGAAAAugAA
+AAEAAADwAQAAjwAAAAAAAAAGAAAAkAAAAAEAAADyAQAAsQAAAAAAAAAGAAAAsgAAAAEAAADzAQAA
+sAAAAAEAAAD0AQAALAAAAAIAAAAAAAAALQAAAAEAAAD1AQAALgAAAAIAAAABAAAALwAAAAEAAAD2
+AQAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAACwAAAI8AAAAAAAAABgAAAJAAAAABAAAA+AEAALEA
+AAAAAAAABgAAALIAAAABAAAA+QEAALAAAAABAAAA+gEAACwAAAACAAAAAAAAAC0AAAABAAAA+wEA
+AC4AAAACAAAAAQAAAC8AAAABAAAA/AEAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAA0AAAC5AAAA
+AAAAAAYAAAC6AAAAAQAAAP0BAACPAAAAAAAAAAYAAACQAAAAAQAAAP8BAACxAAAAAAAAAAYAAACy
+AAAAAQAAAAACAACwAAAAAQAAAAECAAAsAAAAAgAAAAAAAAAtAAAAAQAAAAICAAAuAAAAAgAAAAEA
+AAAvAAAAAQAAAAMCAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAAbAAAABQAAAAAAAAAGAAAABwAA
+AAAAAAAGAAAACAAAAAEAAAAHAgAACgAAAAAAAAAGAAAACwAAAAEAAAAIAgAADAAAAAAAAAAGAAAA
+DQAAAAAAAAAOAAAADwAAAAAAAAAGAAAAEAAAAAEAAAAJAgAAEQAAAAAAAAAGAAAAEgAAAAEAAAAK
+AgAAEwAAAAEAAAALAgAAFQAAAAEAAAAQAgAALAAAAAIAAAAAAAAALQAAAAEAAAARAgAALgAAAAIA
+AAABAAAALwAAAAEAAAASAgAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAANQAAAAAAAAAGAAAANgAA
+AAEAAAAUAgAAcQAAAAAAAAAGAAAAcgAAAAAAAAAGAAAAcwAAAAAAAAB0AAAAdQAAAAEAAAAXAgAA
+fAAAAAEAAAAcAgAAFgAAAAAAAAAGAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAA
+AAAABgAAABoAAAABAAAADAIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4A
+AAABAAAADQIAAB8AAAAAAAAABgAAACAAAAABAAAADgIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAA
+ACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAADwIAAAAAAAAKAAAA
+FgAAAAAAAAAGAAAAFwAAAAAAAAB2AAAAGQAAAAAAAAAGAAAAGgAAAAEAAAAVAgAAGwAAAAAAAAAG
+AAAAHAAAAAIAAACQAAAAdwAAAAAAAAB2AAAAeAAAAAAAAAAjAAAAeQAAAAAAAAAjAAAAegAAAAEA
+AAAWAgAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAA
+ABgCAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAABkCAAAfAAAA
+AAAAAAYAAAAgAAAAAQAAABoCAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAl
+AAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAABsCAAAAAAAAEwAAAAUAAAAAAAAABgAAAI0A
+AAAAAAAAvAAAAAoAAAAAAAAABgAAAAsAAAABAAAAHQIAAAwAAAAAAAAABgAAAA0AAAAAAAAAvQAA
+AA8AAAAAAAAABgAAABAAAAABAAAAHgIAABEAAAAAAAAABgAAABMAAAABAAAAHwIAABUAAAABAAAA
+JAIAACwAAAACAAAAAAAAAC0AAAABAAAAJQIAAC4AAAACAAAAAQAAAC8AAAABAAAAJgIAADIAAAAA
+AAAAMwAAADQAAAAAAAAAMwAAAHUAAAABAAAAKQIAAHwAAAABAAAALgIAABAAAAAWAAAAAAAAAAYA
+AAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAACACAAAbAAAAAAAAAAYAAAAcAAAAAgAA
+AJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAACECAAAfAAAAAAAAAAYAAAAgAAAAAQAAACICAAAhAAAA
+AAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAn
+AAAAAQAAACMCAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAAABoA
+AAABAAAAJwIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAAIwAA
+AHkAAAAAAAAAIwAAAHoAAAABAAAAKAIAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAA
+GQAAAAAAAAAGAAAAGgAAAAEAAAAqAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAG
+AAAAHgAAAAEAAAArAgAAHwAAAAAAAAAGAAAAIAAAAAEAAAAsAgAAIQAAAAAAAAAYAAAAIgAAAAAA
+AAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAAtAgAAAAAA
+ABsAAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAC8CAAAKAAAAAAAAAAYAAAALAAAA
+AQAAADACAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAAAAAAAAYAAAAQAAAAAQAAADECAAAR
+AAAAAAAAAAYAAAASAAAAAQAAADICAAATAAAAAQAAADMCAAAVAAAAAQAAADgCAAAsAAAAAgAAAAAA
+AAAtAAAAAQAAADkCAAAuAAAAAgAAAAEAAAAvAAAAAQAAADoCAAAyAAAAAAAAADMAAAA0AAAAAAAA
+ADMAAAA1AAAAAAAAAAYAAAA2AAAAAQAAADwCAABxAAAAAAAAAAYAAAByAAAAAAAAAAYAAABzAAAA
+AAAAAHQAAAB1AAAAAQAAAD8CAAB8AAAAAQAAAEQCAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAAAAAG
+AAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAA0AgAAGwAAAAAAAAAGAAAAHAAAAAIA
+AACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAA1AgAAHwAAAAAAAAAGAAAAIAAAAAEAAAA2AgAAIQAA
+AAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAA
+JwAAAAEAAAA3AgAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYAAAAa
+AAAAAQAAAD0CAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAAACMA
+AAB5AAAAAAAAACMAAAB6AAAAAQAAAD4CAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAA
+ABkAAAAAAAAABgAAABoAAAABAAAAQAIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAA
+BgAAAB4AAAABAAAAQQIAAB8AAAAAAAAABgAAACAAAAABAAAAQgIAACEAAAAAAAAAGAAAACIAAAAA
+AAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAQwIAAAAA
+AAATAAAABQAAAAAAAAAGAAAAjQAAAAAAAAC8AAAACgAAAAAAAAAGAAAACwAAAAEAAABFAgAADAAA
+AAAAAAAGAAAADQAAAAAAAAC9AAAADwAAAAAAAAAGAAAAEAAAAAEAAABGAgAAEQAAAAAAAAAGAAAA
+EwAAAAEAAABHAgAAFQAAAAEAAABMAgAALAAAAAIAAAAAAAAALQAAAAEAAABNAgAALgAAAAIAAAAB
+AAAALwAAAAEAAABOAgAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAAdQAAAAEAAABRAgAAfAAAAAEA
+AABWAgAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAASAIA
+ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAASQIAAB8AAAAAAAAA
+BgAAACAAAAABAAAASgIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAA
+AAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAASwIAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAA
+AAB2AAAAGQAAAAAAAAAGAAAAGgAAAAEAAABPAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdwAA
+AAAAAAB2AAAAeAAAAAAAAAAjAAAAeQAAAAAAAAAjAAAAegAAAAEAAABQAgAAAAAAABAAAAAWAAAA
+AAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAFICAAAbAAAAAAAAAAYAAAAc
+AAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAFMCAAAfAAAAAAAAAAYAAAAgAAAAAQAAAFQC
+AAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAA
+ACMAAAAnAAAAAQAAAFUCAAAAAAAAFAAAAAUAAAAAAAAABgAAAI0AAAAAAAAAjgAAAAoAAAAAAAAA
+BgAAAAsAAAABAAAAVwIAAAwAAAAAAAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAAWAIAAI8AAAAA
+AAAABgAAAJAAAAABAAAAWgIAABMAAAABAAAAWwIAABUAAAABAAAAYAIAACwAAAACAAAAAAAAAC0A
+AAABAAAAYQIAAC4AAAACAAAAAQAAAC8AAAABAAAAYgIAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAA
+AHUAAAABAAAAZQIAAHwAAAABAAAAagIAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAA
+FwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABcAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQ
+AAAAHQAAAAAAAAAGAAAAHgAAAAEAAABdAgAAHwAAAAAAAAAGAAAAIAAAAAEAAABeAgAAIQAAAAAA
+AAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAA
+AAEAAABfAgAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAA
+AQAAAGMCAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5
+AAAAAAAAACMAAAB6AAAAAQAAAGQCAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkA
+AAAAAAAABgAAABoAAAABAAAAZgIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAA
+AB4AAAABAAAAZwIAAB8AAAAAAAAABgAAACAAAAABAAAAaAIAACEAAAAAAAAAGAAAACIAAAAAAAAA
+IwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAaQIAAAAAAAAU
+AAAABQAAAAAAAAAGAAAAjQAAAAAAAACOAAAACgAAAAAAAAAGAAAACwAAAAEAAABrAgAADAAAAAAA
+AAAGAAAADwAAAAAAAAAGAAAAEAAAAAEAAABsAgAAjwAAAAAAAAAGAAAAkAAAAAEAAABuAgAAEwAA
+AAEAAABvAgAAFQAAAAEAAAB0AgAALAAAAAIAAAAAAAAALQAAAAEAAAB1AgAALgAAAAIAAAABAAAA
+LwAAAAEAAAB2AgAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAAdQAAAAEAAAB5AgAAfAAAAAEAAAB+
+AgAAFgAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYA
+AAAaAAAAAQAAAHACAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAA
+AHECAAAfAAAAAAAAAAYAAAAgAAAAAQAAAHICAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAA
+AAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAHMCAAAAAAAACgAAABYAAAAA
+AAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAAABoAAAABAAAAdwIAABsAAAAAAAAABgAAABwA
+AAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAAIwAAAHkAAAAAAAAAIwAAAHoAAAABAAAAeAIA
+AAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAAB6AgAA
+GwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAB7AgAAHwAAAAAAAAAG
+AAAAIAAAAAEAAAB8AgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAA
+AAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAB9AgAAAAAAABUAAAAFAAAAAAAAAAYAAACNAAAAAAAA
+AI4AAAAKAAAAAAAAAAYAAAALAAAAAQAAAH8CAAAMAAAAAAAAAAYAAAC+AAAAAAAAAAYAAAAPAAAA
+AAAAAAYAAAAQAAAAAQAAAIACAACPAAAAAAAAAAYAAACQAAAAAQAAAIICAAATAAAAAQAAAIMCAAAV
+AAAAAQAAAIgCAAAsAAAAAgAAAAAAAAAtAAAAAQAAAIkCAAAuAAAAAgAAAAEAAAAvAAAAAQAAAIoC
+AAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAB1AAAAAQAAAI0CAAB8AAAAAQAAAJICAAAWAAAAAAAA
+AAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAACEAgAA
+GwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAACFAgAAHwAAAAAAAAAG
+AAAAIAAAAAEAAACGAgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAA
+AAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACHAgAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAA
+AHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAIsCAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAA
+AAAAAHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAIwCAAAAAAAAEAAAABYAAAAA
+AAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAjgIAABsAAAAAAAAABgAAABwA
+AAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAjwIAAB8AAAAAAAAABgAAACAAAAABAAAAkAIA
+ACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAA
+IwAAACcAAAABAAAAkQIAAAAAAAAWAAAABQAAAAAAAAAGAAAAjQAAAAAAAACOAAAABwAAAAAAAAAG
+AAAACAAAAAEAAACTAgAACgAAAAAAAAAGAAAACwAAAAEAAACUAgAADAAAAAAAAAAGAAAADwAAAAAA
+AAAGAAAAEAAAAAEAAACVAgAAjwAAAAAAAAAGAAAAkAAAAAEAAACXAgAAEwAAAAEAAACYAgAAFQAA
+AAEAAACdAgAALAAAAAIAAAAAAAAALQAAAAEAAACeAgAALgAAAAIAAAABAAAALwAAAAEAAACfAgAA
+MgAAAAAAAAAzAAAANAAAAAAAAAAzAAAAdQAAAAEAAACiAgAAfAAAAAEAAACnAgAAFgAAAAAAAAAG
+AAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAJkC
+AAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAJoCAAAfAAAAAAAA
+AAYAAAAgAAAAAQAAAJsCAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAA
+AAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAJwCAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAA
+AAAAdgAAABkAAAAAAAAABgAAABoAAAABAAAAoAIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHcA
+AAAAAAAAdgAAAHgAAAAAAAAAIwAAAHkAAAAAAAAAIwAAAHoAAAABAAAAoQIAAAAAAAAQAAAAFgAA
+AAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAACjAgAAGwAAAAAAAAAGAAAA
+HAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAACkAgAAHwAAAAAAAAAGAAAAIAAAAAEAAACl
+AgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAA
+AAAjAAAAJwAAAAEAAACmAgAAAAAAABQAAAAFAAAAAAAAAAYAAACNAAAAAAAAAI4AAAAKAAAAAAAA
+AAYAAAALAAAAAQAAAKgCAAAMAAAAAAAAAAYAAAAPAAAAAAAAAAYAAAAQAAAAAQAAAKkCAACPAAAA
+AAAAAAYAAACQAAAAAQAAAKsCAAATAAAAAQAAAKwCAAAVAAAAAQAAALECAAAsAAAAAgAAAAAAAAAt
+AAAAAQAAALICAAAuAAAAAgAAAAEAAAAvAAAAAQAAALMCAAAyAAAAAAAAADMAAAA0AAAAAAAAADMA
+AAB1AAAAAQAAALYCAAB8AAAAAQAAALsCAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYAAAAAAAAABgAA
+ABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAArQIAABsAAAAAAAAABgAAABwAAAACAAAA
+kAAAAB0AAAAAAAAABgAAAB4AAAABAAAArgIAAB8AAAAAAAAABgAAACAAAAABAAAArwIAACEAAAAA
+AAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcA
+AAABAAAAsAIAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB2AAAAGQAAAAAAAAAGAAAAGgAA
+AAEAAAC0AgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdwAAAAAAAAB2AAAAeAAAAAAAAAAjAAAA
+eQAAAAAAAAAjAAAAegAAAAEAAAC1AgAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZ
+AAAAAAAAAAYAAAAaAAAAAQAAALcCAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYA
+AAAeAAAAAQAAALgCAAAfAAAAAAAAAAYAAAAgAAAAAQAAALkCAAAhAAAAAAAAABgAAAAiAAAAAAAA
+ACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAALoCAAAAAAAA
+FAAAAAUAAAAAAAAABgAAAI0AAAAAAAAAjgAAAAoAAAAAAAAABgAAAAsAAAABAAAAvAIAAAwAAAAA
+AAAABgAAAA8AAAAAAAAABgAAABAAAAABAAAAvQIAAI8AAAAAAAAABgAAAJAAAAABAAAAvwIAABMA
+AAABAAAAwAIAABUAAAABAAAAxQIAACwAAAACAAAAAAAAAC0AAAABAAAAxgIAAC4AAAACAAAAAQAA
+AC8AAAABAAAAxwIAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAHUAAAABAAAAygIAAHwAAAABAAAA
+zwIAABYAAAAAAAAABgAAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAG
+AAAAGgAAAAEAAADBAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEA
+AADCAgAAHwAAAAAAAAAGAAAAIAAAAAEAAADDAgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAA
+AAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAADEAgAAAAAAAAoAAAAWAAAA
+AAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAMgCAAAbAAAAAAAAAAYAAAAc
+AAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAMkC
+AAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAywIA
+ABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAzAIAAB8AAAAAAAAA
+BgAAACAAAAABAAAAzQIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAA
+AAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAzgIAAAAAAAAUAAAABQAAAAAAAAAGAAAAjQAAAAAA
+AACOAAAACgAAAAAAAAAGAAAACwAAAAEAAADQAgAADAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAA
+AAEAAADRAgAAjwAAAAAAAAAGAAAAkAAAAAEAAADTAgAAEwAAAAEAAADUAgAAFQAAAAEAAADZAgAA
+LAAAAAIAAAAAAAAALQAAAAEAAADaAgAALgAAAAIAAAABAAAALwAAAAEAAADbAgAAMgAAAAAAAAAz
+AAAANAAAAAAAAAAzAAAAdQAAAAEAAADeAgAAfAAAAAEAAADjAgAAFgAAAAAAAAAGAAAAAAAAABAA
+AAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAANUCAAAbAAAAAAAA
+AAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAANYCAAAfAAAAAAAAAAYAAAAgAAAA
+AQAAANcCAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAm
+AAAAAAAAACMAAAAnAAAAAQAAANgCAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdgAAABkA
+AAAAAAAABgAAABoAAAABAAAA3AIAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHcAAAAAAAAAdgAA
+AHgAAAAAAAAAIwAAAHkAAAAAAAAAIwAAAHoAAAABAAAA3QIAAAAAAAAQAAAAFgAAAAAAAAAGAAAA
+FwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAADfAgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQ
+AAAAHQAAAAAAAAAGAAAAHgAAAAEAAADgAgAAHwAAAAAAAAAGAAAAIAAAAAEAAADhAgAAIQAAAAAA
+AAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAA
+AAEAAADiAgAAAAAAABcAAAAFAAAAAAAAAAYAAACNAAAAAAAAAI4AAAAKAAAAAAAAAAYAAAALAAAA
+AQAAAOQCAAAMAAAAAAAAAAYAAAANAAAAAAAAAL8AAAC+AAAAAAAAAAYAAADAAAAAAQAAAOUCAAAP
+AAAAAAAAAAYAAAAQAAAAAQAAAOYCAACPAAAAAAAAAAYAAACQAAAAAQAAAOgCAAATAAAAAQAAAOkC
+AAAVAAAAAQAAAO4CAAAsAAAAAgAAAAAAAAAtAAAAAQAAAO8CAAAuAAAAAgAAAAEAAAAvAAAAAQAA
+APACAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAB1AAAAAQAAAPMCAAB8AAAAAQAAAPgCAAAWAAAA
+AAAAAAYAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAADq
+AgAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAADrAgAAHwAAAAAA
+AAAGAAAAIAAAAAEAAADsAgAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAA
+AAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAADtAgAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAPECAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3
+AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAPICAAAAAAAAEAAAABYA
+AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA9AIAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAA9QIAAB8AAAAAAAAABgAAACAAAAABAAAA
+9gIAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA
+AAAAIwAAACcAAAABAAAA9wIAAAAAAAAGAAAAFwAAAAAAAADEAAAAGwAAAAAAAAAGAAAAHAAAAAIA
+AAABAAAAdwAAAAAAAADEAAAAeQAAAAAAAAAjAAAAegAAAAEAAAD8AgAAAAAAAAYAAAAXAAAAAAAA
+AMQAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAAEAAAB3AAAAAAAAAMQAAAB5AAAAAAAAACMAAAB6AAAA
+AQAAAP4CAAAAAAAAAwAAAMsAAAABAAAADwMAAMwAAAABAAAAEAMAAM0AAAABAAAAEQMAAAEAAADf
+AAAAAQAAABYDAAABAAAA3wAAAAEAAAAYAwAAAgAAAN8AAAABAAAAHAMAAOgAAAABAAAAHQMAAAAA
+AAAaAAAADwAAAAAAAAAGAAAAFgAAAAAAAAAGAAAAngAAAAEAAAAkAwAAnwAAAAEAAAApAwAAoAAA
+AAAAAAAGAAAAoQAAAAEAAAD5AwAApwAAAAAAAAAGAAAAqAAAAAAAAACpAAAAqgAAAAAAAAAGAAAA
+qwAAAAEAAAD6AwAArAAAAAAAAAAGAAAArQAAAAAAAAAzAAAArgAAAAEAAAD7AwAArwAAAAEAAAD8
+AwAAsAAAAAEAAAD9AwAALAAAAAIAAAAAAAAALQAAAAEAAAD+AwAALgAAAAIAAAABAAAALwAAAAEA
+AAD/AwAAMgAAAAAAAAAjAAAANAAAAAAAAAAzAAAAwgAAAAAAAAAGAAAABQEAAAAAAAAzAAAAwwAA
+AAEAAAABBAAAxgAAAAEAAAADBAAAyAAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAACADAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAd
+AAAAAAAAAAYAAAAeAAAAAQAAACEDAAAfAAAAAAAAAAYAAAAgAAAAAQAAACIDAAAhAAAAAAAAABgA
+AAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAA
+ACMDAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAA
+JQMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAJgMAAB8AAAAA
+AAAABgAAACAAAAABAAAAJwMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUA
+AAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAKAMAAAAAAAAQAAAAPwAAAAEAAAAqAwAA6wAA
+AAEAAAArAwAAUQAAAAEAAAAsAwAAUgAAAAEAAAAtAwAA7AAAAAEAAABCAwAA7QAAAAEAAABXAwAA
+7gAAAAEAAABsAwAA7wAAAAEAAACBAwAA8QAAAAEAAACWAwAA8wAAAAEAAACpAwAA9AAAAAEAAAC8
+AwAA9QAAAAEAAADPAwAA9gAAAAEAAADiAwAA9wAAAAEAAAD1AwAA/gAAAAEAAAD2AwAABAEAAAEA
+AAD3AwAAAAAAABoAAAAFAAAAAAAAAAYAAAAHAAAAAAAAAAYAAAAIAAAAAQAAAC4DAAAJAAAAAAAA
+AAYAAAAKAAAAAAAAAAYAAAALAAAAAQAAAC8DAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4AAAAPAAAA
+AAAAAAYAAAAQAAAAAQAAADADAAARAAAAAAAAAAYAAAASAAAAAQAAADEDAAATAAAAAQAAADIDAAAV
+AAAAAQAAADcDAAAsAAAAAgAAAAAAAAAtAAAAAQAAADgDAAAuAAAAAgAAAAEAAAAvAAAAAQAAADkD
+AAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAABxAAAAAAAAAAYAAAByAAAAAAAAAAYAAABzAAAAAAAA
+AHQAAAB1AAAAAQAAADwDAAB8AAAAAQAAAEEDAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYAAAAAAAAA
+BgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAMwMAABsAAAAAAAAABgAAABwAAAAC
+AAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAANAMAAB8AAAAAAAAABgAAACAAAAABAAAANQMAACEA
+AAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAA
+ACcAAAABAAAANgMAAAAAAAAKAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB2AAAAGQAAAAAAAAAGAAAA
+GgAAAAEAAAA6AwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAdwAAAAAAAAB2AAAAeAAAAAAAAAAj
+AAAAeQAAAAAAAAAjAAAAegAAAAEAAAA7AwAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgA
+AAAZAAAAAAAAAAYAAAAaAAAAAQAAAD0DAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAA
+AAYAAAAeAAAAAQAAAD4DAAAfAAAAAAAAAAYAAAAgAAAAAQAAAD8DAAAhAAAAAAAAABgAAAAiAAAA
+AAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAEADAAAA
+AAAAGwAAAAUAAAAAAAAABgAAAI0AAAAAAAAAjgAAAAcAAAAAAAAABgAAAAgAAAABAAAAQwMAAAkA
+AAAAAAAABgAAAAoAAAAAAAAABgAAAAsAAAABAAAARAMAAAwAAAAAAAAABgAAAA0AAAAAAAAADgAA
+AA8AAAAAAAAABgAAABAAAAABAAAARQMAABEAAAAAAAAABgAAABIAAAABAAAARgMAABMAAAABAAAA
+RwMAABUAAAABAAAATAMAACwAAAACAAAAAAAAAC0AAAABAAAATQMAAC4AAAACAAAAAQAAAC8AAAAB
+AAAATgMAADIAAAAAAAAAMwAAADQAAAAAAAAAMwAAAHEAAAAAAAAABgAAAHIAAAAAAAAABgAAAHMA
+AAAAAAAAdAAAAHUAAAABAAAAUQMAAHwAAAABAAAAVgMAABYAAAAAAAAABgAAABAAAAAWAAAAAAAA
+AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAEgDAAAbAAAAAAAAAAYAAAAcAAAA
+AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAEkDAAAfAAAAAAAAAAYAAAAgAAAAAQAAAEoDAAAh
+AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA
+AAAnAAAAAQAAAEsDAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAA
+ABoAAAABAAAATwMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAA
+IwAAAHkAAAAAAAAAIwAAAHoAAAABAAAAUAMAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY
+AAAAGQAAAAAAAAAGAAAAGgAAAAEAAABSAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA
+AAAGAAAAHgAAAAEAAABTAwAAHwAAAAAAAAAGAAAAIAAAAAEAAABUAwAAIQAAAAAAAAAYAAAAIgAA
+AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAABVAwAA
+AAAAABsAAAAFAAAAAAAAAAYAAACNAAAAAAAAAI4AAAAHAAAAAAAAAAYAAAAIAAAAAQAAAFgDAAAJ
+AAAAAAAAAAYAAAAKAAAAAAAAAAYAAAALAAAAAQAAAFkDAAAMAAAAAAAAAAYAAAANAAAAAAAAAA4A
+AAAPAAAAAAAAAAYAAAAQAAAAAQAAAFoDAAARAAAAAAAAAAYAAAASAAAAAQAAAFsDAAATAAAAAQAA
+AFwDAAAVAAAAAQAAAGEDAAAsAAAAAgAAAAAAAAAtAAAAAQAAAGIDAAAuAAAAAgAAAAEAAAAvAAAA
+AQAAAGMDAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAABxAAAAAAAAAAYAAAByAAAAAAAAAAYAAABz
+AAAAAAAAAHQAAAB1AAAAAQAAAGYDAAB8AAAAAQAAAGsDAAAWAAAAAAAAAAYAAAAQAAAAFgAAAAAA
+AAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAABdAwAAGwAAAAAAAAAGAAAAHAAA
+AAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAABeAwAAHwAAAAAAAAAGAAAAIAAAAAEAAABfAwAA
+IQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAj
+AAAAJwAAAAEAAABgAwAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYA
+AAAaAAAAAQAAAGQDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAA
+ACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAAGUDAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAA
+GAAAABkAAAAAAAAABgAAABoAAAABAAAAZwMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAA
+AAAABgAAAB4AAAABAAAAaAMAAB8AAAAAAAAABgAAACAAAAABAAAAaQMAACEAAAAAAAAAGAAAACIA
+AAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAagMA
+AAAAAAAUAAAABQAAAAAAAAAGAAAAjQAAAAAAAACOAAAACgAAAAAAAAAGAAAACwAAAAEAAABtAwAA
+DAAAAAAAAAAGAAAADwAAAAAAAAAGAAAAEAAAAAEAAABuAwAAjwAAAAAAAAAGAAAAkAAAAAEAAABw
+AwAAEwAAAAEAAABxAwAAFQAAAAEAAAB2AwAALAAAAAIAAAAAAAAALQAAAAEAAAB3AwAALgAAAAIA
+AAABAAAALwAAAAEAAAB4AwAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAAdQAAAAEAAAB7AwAAfAAA
+AAEAAACAAwAAFgAAAAAAAAAGAAAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAA
+AAAAAAYAAAAaAAAAAQAAAHIDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAe
+AAAAAQAAAHMDAAAfAAAAAAAAAAYAAAAgAAAAAQAAAHQDAAAhAAAAAAAAABgAAAAiAAAAAAAAACMA
+AAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAHUDAAAAAAAACgAA
+ABYAAAAAAAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAAABoAAAABAAAAeQMAABsAAAAAAAAA
+BgAAABwAAAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAAIwAAAHkAAAAAAAAAIwAAAHoAAAAB
+AAAAegMAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEA
+AAB8AwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAAB9AwAAHwAA
+AAAAAAAGAAAAIAAAAAEAAAB+AwAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAA
+JQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAAB/AwAAAAAAABYAAAAFAAAAAAAAAAYAAACN
+AAAAAAAAAI4AAAAKAAAAAAAAAAYAAAALAAAAAQAAAIIDAAAMAAAAAAAAAAYAAAAPAAAAAAAAAAYA
+AAAQAAAAAQAAAIMDAACPAAAAAAAAAAYAAACQAAAAAQAAAIUDAAATAAAAAQAAAIYDAAAVAAAAAQAA
+AIsDAACdAAAAAAAAAAYAAAC7AAAAAAAAADMAAAAsAAAAAgAAAAAAAAAtAAAAAQAAAIwDAAAuAAAA
+AgAAAAEAAAAvAAAAAQAAAI0DAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAB1AAAAAQAAAJADAAB8
+AAAAAQAAAJUDAAAWAAAAAAAAAAYAAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkA
+AAAAAAAABgAAABoAAAABAAAAhwMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAA
+AB4AAAABAAAAiAMAAB8AAAAAAAAABgAAACAAAAABAAAAiQMAACEAAAAAAAAAGAAAACIAAAAAAAAA
+IwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAigMAAAAAAAAK
+AAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB2AAAAGQAAAAAAAAAGAAAAGgAAAAEAAACOAwAAGwAAAAAA
+AAAGAAAAHAAAAAIAAACQAAAAdwAAAAAAAAB2AAAAeAAAAAAAAAAjAAAAeQAAAAAAAAAjAAAAegAA
+AAEAAACPAwAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAA
+AQAAAJEDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAJIDAAAf
+AAAAAAAAAAYAAAAgAAAAAQAAAJMDAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMA
+AAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAJQDAAAAAAAAEwAAAAUAAAAAAAAABgAA
+AI0AAAAAAAAAjgAAAAoAAAAAAAAABgAAAAsAAAABAAAAlwMAAAwAAAAAAAAABgAAAA0AAAAAAAAA
+vQAAAA8AAAAAAAAABgAAABAAAAABAAAAmAMAABEAAAAAAAAABgAAABMAAAABAAAAmQMAABUAAAAB
+AAAAngMAACwAAAACAAAAAAAAAC0AAAABAAAAnwMAAC4AAAACAAAAAQAAAC8AAAABAAAAoAMAADIA
+AAAAAAAAMwAAADQAAAAAAAAAMwAAAHUAAAABAAAAowMAAHwAAAABAAAAqAMAABAAAAAWAAAAAAAA
+AAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAJoDAAAbAAAAAAAAAAYAAAAcAAAA
+AgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAJsDAAAfAAAAAAAAAAYAAAAgAAAAAQAAAJwDAAAh
+AAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMA
+AAAnAAAAAQAAAJ0DAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAA
+ABoAAAABAAAAoQMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAA
+IwAAAHkAAAAAAAAAIwAAAHoAAAABAAAAogMAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAY
+AAAAGQAAAAAAAAAGAAAAGgAAAAEAAACkAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAA
+AAAGAAAAHgAAAAEAAAClAwAAHwAAAAAAAAAGAAAAIAAAAAEAAACmAwAAIQAAAAAAAAAYAAAAIgAA
+AAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACnAwAA
+AAAAABMAAAAFAAAAAAAAAAYAAACNAAAAAAAAAI4AAAAKAAAAAAAAAAYAAAALAAAAAQAAAKoDAAAM
+AAAAAAAAAAYAAAANAAAAAAAAAL0AAAAPAAAAAAAAAAYAAAAQAAAAAQAAAKsDAAARAAAAAAAAAAYA
+AAATAAAAAQAAAKwDAAAVAAAAAQAAALEDAAAsAAAAAgAAAAAAAAAtAAAAAQAAALIDAAAuAAAAAgAA
+AAEAAAAvAAAAAQAAALMDAAAyAAAAAAAAADMAAAA0AAAAAAAAADMAAAB1AAAAAQAAALYDAAB8AAAA
+AQAAALsDAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAACt
+AwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAAHgAAAAEAAACuAwAAHwAAAAAA
+AAAGAAAAIAAAAAEAAACvAwAAIQAAAAAAAAAYAAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAA
+AAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAACwAwAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAA
+AAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAAALQDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3
+AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAALUDAAAAAAAAEAAAABYA
+AAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAAAAAABgAAABoAAAABAAAAtwMAABsAAAAAAAAABgAA
+ABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4AAAABAAAAuAMAAB8AAAAAAAAABgAAACAAAAABAAAA
+uQMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAA
+AAAAIwAAACcAAAABAAAAugMAAAAAAAATAAAABQAAAAAAAAAGAAAAjQAAAAAAAACOAAAACgAAAAAA
+AAAGAAAACwAAAAEAAAC9AwAADAAAAAAAAAAGAAAADQAAAAAAAAC9AAAADwAAAAAAAAAGAAAAEAAA
+AAEAAAC+AwAAEQAAAAAAAAAGAAAAEwAAAAEAAAC/AwAAFQAAAAEAAADEAwAALAAAAAIAAAAAAAAA
+LQAAAAEAAADFAwAALgAAAAIAAAABAAAALwAAAAEAAADGAwAAMgAAAAAAAAAzAAAANAAAAAAAAAAz
+AAAAdQAAAAEAAADJAwAAfAAAAAEAAADOAwAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkA
+AAAAAAAABgAAABoAAAABAAAAwAMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAA
+AB4AAAABAAAAwQMAAB8AAAAAAAAABgAAACAAAAABAAAAwgMAACEAAAAAAAAAGAAAACIAAAAAAAAA
+IwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAwwMAAAAAAAAK
+AAAAFgAAAAAAAAAGAAAAFwAAAAAAAAB2AAAAGQAAAAAAAAAGAAAAGgAAAAEAAADHAwAAGwAAAAAA
+AAAGAAAAHAAAAAIAAACQAAAAdwAAAAAAAAB2AAAAeAAAAAAAAAAjAAAAeQAAAAAAAAAjAAAAegAA
+AAEAAADIAwAAAAAAABAAAAAWAAAAAAAAAAYAAAAXAAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAA
+AQAAAMoDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAAdAAAAAAAAAAYAAAAeAAAAAQAAAMsDAAAf
+AAAAAAAAAAYAAAAgAAAAAQAAAMwDAAAhAAAAAAAAABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMA
+AAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAAAQAAAM0DAAAAAAAAEgAAAAUAAAAAAAAABgAA
+AAoAAAAAAAAABgAAAAsAAAABAAAA0AMAAAwAAAAAAAAABgAAAA0AAAAAAAAAvQAAAA8AAAAAAAAA
+BgAAABAAAAABAAAA0QMAABEAAAAAAAAABgAAABMAAAABAAAA0gMAABUAAAABAAAA1wMAACwAAAAC
+AAAAAAAAAC0AAAABAAAA2AMAAC4AAAACAAAAAQAAAC8AAAABAAAA2QMAADIAAAAAAAAAMwAAADQA
+AAAAAAAAMwAAAHUAAAABAAAA3AMAAHwAAAABAAAA4QMAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAA
+AAAAAAAYAAAAGQAAAAAAAAAGAAAAGgAAAAEAAADTAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAA
+HQAAAAAAAAAGAAAAHgAAAAEAAADUAwAAHwAAAAAAAAAGAAAAIAAAAAEAAADVAwAAIQAAAAAAAAAY
+AAAAIgAAAAAAAAAjAAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEA
+AADWAwAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYAAAAaAAAAAQAA
+ANoDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAAACMAAAB5AAAA
+AAAAACMAAAB6AAAAAQAAANsDAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAAGAAAABkAAAAA
+AAAABgAAABoAAAABAAAA3QMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAAAAAABgAAAB4A
+AAABAAAA3gMAAB8AAAAAAAAABgAAACAAAAABAAAA3wMAACEAAAAAAAAAGAAAACIAAAAAAAAAIwAA
+ACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAA4AMAAAAAAAAWAAAA
+BQAAAAAAAAAGAAAAjQAAAAAAAACOAAAACgAAAAAAAAAGAAAACwAAAAEAAADjAwAADAAAAAAAAAAG
+AAAADQAAAAAAAAC9AAAADwAAAAAAAAAGAAAAEAAAAAEAAADkAwAAEQAAAAAAAAAGAAAAEwAAAAEA
+AADlAwAAFQAAAAEAAADqAwAALAAAAAIAAAAAAAAALQAAAAEAAADrAwAALgAAAAIAAAABAAAALwAA
+AAEAAADsAwAAMgAAAAAAAAAzAAAANAAAAAAAAAAzAAAAcQAAAAAAAAAGAAAAcgAAAAAAAAAGAAAA
+cwAAAAAAAAB0AAAAdQAAAAEAAADvAwAAfAAAAAEAAAD0AwAAAAAAABAAAAAWAAAAAAAAAAYAAAAX
+AAAAAAAAABgAAAAZAAAAAAAAAAYAAAAaAAAAAQAAAOYDAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAA
+AAAdAAAAAAAAAAYAAAAeAAAAAQAAAOcDAAAfAAAAAAAAAAYAAAAgAAAAAQAAAOgDAAAhAAAAAAAA
+ABgAAAAiAAAAAAAAACMAAAAkAAAAAAAAACMAAAAlAAAAAAAAACMAAAAmAAAAAAAAACMAAAAnAAAA
+AQAAAOkDAAAAAAAACgAAABYAAAAAAAAABgAAABcAAAAAAAAAdgAAABkAAAAAAAAABgAAABoAAAAB
+AAAA7QMAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAHcAAAAAAAAAdgAAAHgAAAAAAAAAIwAAAHkA
+AAAAAAAAIwAAAHoAAAABAAAA7gMAAAAAAAAQAAAAFgAAAAAAAAAGAAAAFwAAAAAAAAAYAAAAGQAA
+AAAAAAAGAAAAGgAAAAEAAADwAwAAGwAAAAAAAAAGAAAAHAAAAAIAAACQAAAAHQAAAAAAAAAGAAAA
+HgAAAAEAAADxAwAAHwAAAAAAAAAGAAAAIAAAAAEAAADyAwAAIQAAAAAAAAAYAAAAIgAAAAAAAAAj
+AAAAJAAAAAAAAAAjAAAAJQAAAAAAAAAjAAAAJgAAAAAAAAAjAAAAJwAAAAEAAADzAwAAAAAAAAYA
+AAAXAAAAAAAAAMQAAAAbAAAAAAAAAAYAAAAcAAAAAgAAAAEAAAB3AAAAAAAAAMQAAAB5AAAAAAAA
+ACMAAAB6AAAAAQAAAAAEAAAAAAAABgAAABcAAAAAAAAAxAAAABsAAAAAAAAABgAAABwAAAACAAAA
+AQAAAHcAAAAAAAAAxAAAAHkAAAAAAAAAIwAAAHoAAAABAAAAAgQAAAAAAAACAAAABgEAAAEAAAAK
+BAAABwEAAAEAAAALBAAAAAAAAAoAAAAWAAAAAAAAAAYAAAAXAAAAAAAAAHYAAAAZAAAAAAAAAAYA
+AAAaAAAAAQAAABIEAAAbAAAAAAAAAAYAAAAcAAAAAgAAAJAAAAB3AAAAAAAAAHYAAAB4AAAAAAAA
+ACMAAAB5AAAAAAAAACMAAAB6AAAAAQAAABMEAAAAAAAAEAAAABYAAAAAAAAABgAAABcAAAAAAAAA
+GAAAABkAAAAAAAAABgAAABoAAAABAAAAFQQAABsAAAAAAAAABgAAABwAAAACAAAAkAAAAB0AAAAA
+AAAABgAAAB4AAAABAAAAFgQAAB8AAAAAAAAABgAAACAAAAABAAAAFwQAACEAAAAAAAAAGAAAACIA
+AAAAAAAAIwAAACQAAAAAAAAAIwAAACUAAAAAAAAAIwAAACYAAAAAAAAAIwAAACcAAAABAAAAGAQA
+AAAAAAAFAAAAAwAAAAEAAAAlBAAACwEAAAEAAAAmBAAADAEAAAEAAAAnBAAADQEAAAEAAAAoBAAA
+lAAAAAEAAAApBAAABQAAAAMAAAABAAAAKgQAAAsBAAABAAAAKwQAAAwBAAABAAAALAQAAA0BAAAB
+AAAALQQAAJQAAAABAAAALgQAAAUAAAADAAAAAQAAAC8EAAALAQAAAQAAADAEAAAMAQAAAQAAADEE
+AAANAQAAAQAAADIEAACUAAAAAQAAADMEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAOAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeT41AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAcEAAAAAAAKB5QAAAAAAAAGlAAAAAAAAA
+TkAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAA
+AAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAA
+AAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAAoHlAAAAAAAAA
+aUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAYAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMA
+AAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAAQA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA
+AAAAABAAAwB4PjAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA
+AAAACQAAACAAAAAAAAAAAAAkQAAAAAAAoHRAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAcT0K16Nw7T/NzMzMzMzk
+P83MzMzMzOQ/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAA
+BgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAA
+AAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAACRAAAAAAACgdEAAAAAAAABpQAAAAAAAAE5ADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAADAAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAF
+AAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYA
+AAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAA
+BAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAH
+AAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAEAAAGAAAACAAA
+AAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNl
+cGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9u
+cy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAA
+AABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAO
+AAAAaAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNm
+JTBAKHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAADgAA
+AEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9u
+eW1vdXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAlQAAAAEAAAAA
+AAAAEAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBT
+dXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJl
+c3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9jcmVhdGVfc3RkX3RleHQubQAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAA0AAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA
+AAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAA4AAAAGAAAADgAAAFAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJA
+AAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAkQAAAAAAAoHRAAAAAAAAAaUAAAAAA
+AABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAA8AAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACwAAAAcAAAAOAAAAMAAA
+AAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeD4wAA4AAAA4AAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8O
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAAJAAAACAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABACsAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQGpAAAAAAACgdEAAAAAAAAA+
+QAAAAAAAAE5ADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAKAAAA
+CQAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAw
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgD
+AAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAA
+AG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9u
+X2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQ
+AAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAA
+AAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdp
+dGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAKQAA
+AAEAAAAAAAAAEAAAACkAAABzZiUwQChzcmMsZXZlbnQpcGJfY2FsbChvYmplY3Qsc3JjLGV2ZW50
+KQAAAAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQ
+AAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AACNAAAAAQAAAAAAAAAQAAAAjQAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0Fw
+cGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1Rh
+YnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AQ2VsbC9zZXRfcGIubQAAAA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAABEAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAA
+AAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAA
+AQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAA
+AAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAakAAAAAAAKB0QAAAAAAAAD5AAAAAAAAA
+TkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAAASAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOQA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAATAAAABgAAAA4AAABQAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8A
+AAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAakAAAAAAAKB0QAAAAAAA
+AD5AAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAUAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABAAAAAHAAAA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAADwPw4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkA
+AAAYAAAAvkqWlzzj7z/VubCo6k3tP84Q/tvo5+8/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAAwAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB4PDAADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAkQAAAAAAA4HBAAAAAAAAA
+aUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAA
+AAkAAAAYAAAAcT0K16Nw7T/NzMzMzMzkP83MzMzMzOQ/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAO
+AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA
+AAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAACRAAAAAAADg
+cEAAAAAAAABpQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAFwAAAAIAAAAOAAAAOAAAAAYAAAAIAAAA
+AgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAA
+AAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAA
+AAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AAgAAAAFAAAADgAAAFAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAA
+DgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0O
+AAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEA
+AABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVu
+Y3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAA
+AAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9u
+AAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAA
+AAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAaAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNmJTBAKHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9i
+amVjdCxzcmMsZXZlbnQpAAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA
+CQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAlQAAAAEAAAAAAAAAEAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtl
+cmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9D
+b2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9jcmVh
+dGVfc3RkX3RleHQubQAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABgAAAAEAAAADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA
+AAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+ABkAAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA
+CQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAA
+AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA
+AAAkQAAAAAAA4HBAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABoAAAACAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAAFgAAAAcAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAA
+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
+DQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAAB
+AAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABA
+akAAAAAAAOBwQAAAAAAAAD5AAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAdAAAAAgAAAA4AAAA4AAAA
+BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAA
+AN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAABOQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+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
+DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA
+AAAAAAAkQAAAAAAAAG5AAAAAAAAAWUAAAAAAAAA+QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACIAAAACAAAADgAA
+ADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAA
+AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAU
+AAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAACMAAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+HEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA
+CQAAACAAAAAAAAAAAAAkQAAAAAAAAG5AAAAAAAAAWUAAAAAAAAA+QA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACQA
+AAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAIAAAAAcAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGRlbGV0ZQAADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAIBbQAAAAAAAAG5AAAAAAAAA
+WUAAAAAAAAA+QA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAA
+AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAA
+AAgAAAAOAAAASAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAA
+MAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADg
+AwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAA
+AABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlv
+bl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAA
+EAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAmAIAAAYAAAAIAAAAAgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAA
+AAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3
+aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAADAA
+AAABAAAAAAAAABAAAAAwAAAAc2YlMEAoc3JjLGV2ZW50KXBiX2RlbGV0ZV9jYWxsKG9iamVjdCxz
+cmMsZXZlbnQpDgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAA
+EAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAAlAAAAAEAAAAAAAAAEAAAAJQAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9B
+cHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9U
+YWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdyaWQvc2V0X2RlbGV0ZV9wYi5t
+AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAACYAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8A
+AAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACAW0AAAAAAAABuQAAAAAAA
+AFlAAAAAAAAAPkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAnAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAAD
+AAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAA+QA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAoAAAABgAA
+AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAA
+AAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACAW0AAAAAA
+AABuQAAAAAAAAFlAAAAAAAAAPkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAApAAAAAgAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+ACUAAAAHAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAgAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHk8MwAOAAAAUAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAwHxAAAAAAACgeUAAAAAA
+AABpQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAA
+AAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAA
+AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAA
+AAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAfEAAAAAA
+AKB5QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAtAAAAAgAAAA4AAAA4AAAABgAAAAgA
+AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAA
+AAAAAAAAAAADAAAAAAAAAA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAAB
+AAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAACAAAAAUAAAAOAAAAUAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAA
+AAAOAAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA
+3Q4AAADoAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAA
+AQAAAEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABm
+dW5jdGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEA
+AAAAAAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAoAIAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rp
+b24AAAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAA
+AAAAAAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABoAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAADIAAAABAAAAAAAAABAAAAAyAAAAc2YlMEAoc3JjLGV2ZW50KXRleHRib3hfY2FsbGJhY2so
+b2JqZWN0LHNyYyxldmVudCkAAAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAyAAAAAYAAAAIAAAABAAA
+AAAAAAAFAAAACAAAAAEAAACVAAAAAQAAAAAAAAAQAAAAlQAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNl
+a2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25z
+L0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2Ny
+ZWF0ZV9zdGRfdGV4dC5tAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAALgAAAAQAAAAOAAAAMAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABQAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAATkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA
+AAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAALwAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAO
+AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA
+AAAAwHxAAAAAAACgeUAAAAAAAABpQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAMAAAAAIAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAAAsAAAABwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMA
+AAABAAAAAAAAABAAAwB5PDMADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACoAAAAIAAAADgAAADgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADwPw4A
+AABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAA
+AQAAAAEAAAAAAAAABgAAABwAAAAAAADdAgAAAAEAAAACAAAABAAAACsAAAAJAAAAAAAAAA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+AEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAAgAAAAoAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAbmV3AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACghEAAAAAAAOB6QAAAAAAAAE5AAAAA
+AAAANEAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACoAAAAIAAAA
+DgAAAEAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMAAAYA
+AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0
+bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFu
+ZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAf
+AAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAA
+dHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGlu
+X2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAtAAAAAQAA
+AAAAAAAQAAAALQAAAHNmJTBAKHNyYyxldmVudClwYl9uZXdfY2FsbChvYmplY3Qsc3JjLGV2ZW50
+KQAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJ
+AAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAI0A
+AAABAAAAAAAAABAAAACNAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGlj
+YXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxh
+ciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHcmlkL3NldF9wYi5tAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAMgAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA
+AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAA
+iUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAKCEQAAAAAAA4HpAAAAAAAAATkAAAAAAAAA0QA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAADMAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAACAAAAAUAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA
+AQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADQAAAAGAAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA
+0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAKCEQAAAAAAA4HpAAAAAAAAATkAA
+AAAAAAA0QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAADUAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAMQAAAAcAAAAOAAAA
+OAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAGRlbGV0
+ZQAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAKCEQAAAAAAAoHlAAAAAAAAATkAAAAAAAAA0QA4AAAAQAQAABgAAAAgAAAABAAAAAAAA
+AAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+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
+AQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAG
+AAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAA
+AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0QA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+JEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAAA5AAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAACghEAAAAAAAKB5QAAAAAAAAE5AAAAAAAAANEAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AAA6AAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADYAAAAHAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAKgAAAAgAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAACAAAACgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJZAAAAAAAAgjEAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+ABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA
+AAkAAAAgAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAIlAAAAAAADAgkAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA8
+AAAAAgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJZAAAAAAAAgjEAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA
+8D8AAAAAAADwPwAAAAAAAIlAAAAAAABYhEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAA9AAAAAgAAAA4AAAAQAQAA
+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
+b3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAO
+AAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9B
+cHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUA
+AAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxl
+X3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALAAAAAEAAAAAAAAA
+EAAAACwAAABzZiUxQChzcmMsZXZlbnQpcmVzaXplX2ZpZyhvYmplY3Qsc3JjLGV2ZW50KQAAAAAO
+AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu
+b255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAA
+AAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u
+IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw
+cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AD8AAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+EAAAAAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAMAAAAAQAAAAAAAAAQ
+AAAADAAAAGZfdW5wcm92YWJsZQAAAAAOAAAAMAgAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAABAA
+AAAQAAAAAQAAAAAAAAAJAAAAAAgAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/DgAAAEAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAgAA
+AAEAAAAAAAAACQAAABAAAAAAAAAAAADwPwAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAAwAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQB5AAAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAA4HBAAAAA
+AAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA
+AAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAA
+AAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAA
+AAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAwHxAAAAA
+AADgcEAAAAAAAABpQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAQQAAAAIAAAAOAAAAOAAAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAA
+AAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAA
+AQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAAgAAAAFAAAADgAAAFAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAA
+AAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAA
+AN0OAAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAA
+AAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAA
+ZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAAB
+AAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAA
+CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0
+aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAA
+AAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAaAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNmJTBAKHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNr
+KG9iamVjdCxzcmMsZXZlbnQpAAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAlQAAAAEAAAAAAAAAEAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFz
+ZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9u
+cy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9j
+cmVhdGVfc3RkX3RleHQubQAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEIAAAAEAAAADgAAADAAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEA
+AAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAEMAAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA
+AAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5A
+DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA
+AAAAAMB8QAAAAAAA4HBAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEQAAAACAAAADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AAAAQA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB5
+K3gADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAMB8QAAAAAAAoHRAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAA
+AADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAA
+AAAJAAAAIAAAAAAAAAAAwHxAAAAAAACgdEAAAAAAAABpQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+RgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAF
+AAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEA
+AAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAA
+AAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQ
+AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcA
+AABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAFAEAAAGAAAACAAAAAEAAAAAAAAA
+BQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA6AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAA
+AAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJf
+UjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+ABAAAQBAAAAADgAAAKACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+BQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAA
+AAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAaAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAyAAAAAQAAAAAAAAAQAAAAMgAAAHNmJTBAKHNyYyxl
+dmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9iamVjdCxzcmMsZXZlbnQpAAAAAAAADgAAAEAAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAA
+AAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAlQAAAAEAAAAAAAAAEAAAAJUA
+AAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01h
+dGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9v
+bGJveC9UYWJsZVRvb2wvQEdVSS9jcmVhdGVfc3RkX3RleHQubQAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEcA
+AAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAA
+AAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAEgAAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAA
+AAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMB8QAAAAAAAoHRAAAAAAAAAaUAAAAAAAABOQA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAAEkAAAACAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAAMAAAABAAAAAAAAABAAAwB4KnkADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAA4HBAAAAAAAAAaUAAAAAAAABOQA4A
+AABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAA
+AQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQ
+ckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHBAAAAAAADgcEAAAAAAAABpQAAA
+AAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAASwAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAA
+AAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAA
+AFAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA6AMAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFi
+cm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxl
+AA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAA
+L0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAKACAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlw
+ZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2Zp
+bGVfcGF0aAAAAAAOAAAAaAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAyAAAAAQAAAAAA
+AAAQAAAAMgAAAHNmJTBAKHNyYyxldmVudCl0ZXh0Ym94X2NhbGxiYWNrKG9iamVjdCxzcmMsZXZl
+bnQpAAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAA
+EAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAB
+AAAAlQAAAAEAAAAAAAAAEAAAAJUAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9B
+cHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9U
+YWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9jcmVhdGVfc3RkX3RleHQu
+bQAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAEwAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5A
+DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAE0AAAAGAAAADgAA
+AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA
+AADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAA4HBA
+AAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAE4AAAACAAAADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAAwAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQB4AAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEBwQAAAAAAA
+oHRAAAAAAAAAaUAAAAAAAABOQA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMA
+AAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAA
+AQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJ
+AAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAA
+UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA
+QHBAAAAAAACgdEAAAAAAAABpQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAUAAAAAIAAAAOAAAAOAAA
+AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAA
+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
+L0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlw
+ZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2Zp
+bGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAtAAAAAQAAAAAA
+AAAQAAAALQAAAHNmJTMzQChzcmMsZXZlbnQpYWJvdXRfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAA
+AA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAA
+YW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAIoAAAAB
+AAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRp
+b24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBF
+eHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAAVgAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA
+AAAQAAAAAAAAAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAACAAAAABAAAAAAAA
+ABAAAAAgAAAAQWJvdXQgVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gOAAAASAAAAAYAAAAIAAAA
+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
+AQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAG
+AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5j
+dGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UA
+AAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAMwAAAAEAAAAAAAAAEAAAADMAAABzZiUzMUAoc3JjLGV2ZW50KXB2c19leHRfY2FsbF9z
+aW0ob2JqZWN0LHNyYyxldmVudCkAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJh
+c2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1P
+bnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkv
+aW5pdC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAWwAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAAEAAAAAAAA
+AAUAAAAIAAAAAQAAABYAAAABAAAAAAAAABAAAAAWAAAAUFZTIFR5cGVjaGVjayBTaW1UeXBlcwAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAA
+AADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAA
+EAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEAEAAAG
+AAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMAAAYAAAAIAAAAAgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAA
+AAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQ
+AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxp
+Y2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAA
+AAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0
+aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAwAAAAAQAAAAAAAAAQAAAA
+MAAAAHNmJTMwQChzcmMsZXZlbnQpcHZzX2ZpbGVfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQ4AAABA
+AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnlt
+b3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAA
+ABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3Vw
+cG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNz
+aW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAXQAA
+AAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAA
+AAAAAA4AAABIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABEAAAABAAAAAAAAABAAAAAR
+AAAAUFZTIEdlbmVyYXRlIGZpbGUAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAA
+AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAA
+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
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAO
+AAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRs
+YWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5k
+bGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8A
+AAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0
+eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5f
+ZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAC8AAAABAAAA
+AAAAABAAAAAvAAAAc2YlMjdAKHNyYyxldmVudClwdnNfZXh0X2NhbGwob2JqZWN0LHNyYyxldmVu
+dCkADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkA
+AABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAA
+AAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNh
+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
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAO
+AAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRs
+YWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5k
+bGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8A
+AAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0
+eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5f
+ZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAC0AAAABAAAA
+AAAAABAAAAAtAAAAc2YlMjVAKHNyYyxldmVudCljaGVja19jYWxsKG9iamVjdCxzcmMsZXZlbnQp
+AAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkA
+AABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAA
+AAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNh
+dGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFy
+IEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAABoAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAABAAAAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAADAAAAAEAAAAA
+AAAAEAAAAAwAAABTeW50YXggQ2hlY2sAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAA
+AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAA
+AADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAOAAAAAQAAAAAAAAAQAAAADgAAAERlZmF1bHQgUHJvdmVyAAAOAAAAEAEAAAYAAAAIAAAAAQAA
+AAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQ
+AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcA
+AABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEgEAAAGAAAACAAAAAEAAAAAAAAA
+BQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA4AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAA
+AAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJf
+UjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+ABAAAQBAAAAADgAAAJgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+BQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAA
+AAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAaAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAA1AAAAAQAAAAAAAAAQAAAANQAAAHNmJTI0QChzcmMs
+ZXZlbnQpcHJvdmVyX3NlbGVjdF9jYWxsKG9iamVjdCxzcmMsZXZlbnQpAAAADgAAAEAAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAA
+AAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAAAAEAAAAAAAAAEAAAAIoA
+AAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01h
+dGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9v
+bGJveC9UYWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABrAAAABAAAAA4A
+AAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAA
+ADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAFBWUwAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C
+AAAAAAAAAAAAAAADAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAAAQAQAA
+BgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAAA
+AAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAASAQAAAYAAAAI
+AAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADgAwAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJyb290AAAAAAAA
+c2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUADgAAAFAAAAAG
+AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAvQXBwbGljYXRp
+b25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAmAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBlAAAAAAAAAAAA
+AAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmlsZV9wYXRoAAAA
+AA4AAABoAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAADUAAAABAAAAAAAAABAAAAA1AAAA
+c2YlMjNAKHNyYyxldmVudClwcm92ZXJfc2VsZWN0X2NhbGwob2JqZWN0LHNyYyxldmVudCkAAAAO
+AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu
+b255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAA
+AAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u
+IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw
+cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AG0AAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+EAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQ
+AAQAQ1ZDMw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYA
+AAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAA
+AAAADgAAAFAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAHAAAAAQAAAAEAAAAAAAAABgAAABwA
+AAAAAADdAgAAAAIAAAABAAAAagAAAGwAAAALAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAAD
+AAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAA
+AQB0AAAADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAA
+AA4AAABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAG
+AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1h
+dGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hh
+bmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAA
+HwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAA
+AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp
+bl9maWxlX3BhdGgAAAAADgAAAGgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMQAAAAEA
+AAAAAAAAEAAAADEAAABzZiUyMkAoc3JjLGV2ZW50KXR5cGVjaGVja19jYWxsKG9iamVjdCxzcmMs
+ZXZlbnQpAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAA
+AAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI
+AAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJh
+cnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlv
+bnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAbwAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AAkAAAABAAAAAAAAABAAAAAJAAAAVHlwZWNoZWNrAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAA
+AAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEA
+AAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAA
+AAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAHAAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAPAAAAAQAAAAEAAAAAAAAABgAAADwAAAAAAADdAgAAAAoAAAABAAAAWgAAAFwAAABe
+AAAAYAAAAGIAAABkAAAAZQAAAGcAAABpAAAAbgAAAAsAAAAAAAAADgAAADgAAAAGAAAACAAAAAIA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAA
+AAAAAAMAAAAAAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAA
+AAAAEAAEAEVkaXQOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAALAAAAAQAAAAAA
+AAAQAAAACwAAAE91dHB1dCBNb2RlAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA
+AAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+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
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEgEAAAG
+AAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA4AMAAAYAAAAIAAAAAgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAA
+AAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQ
+AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxp
+Y2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAAAJgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAA
+AAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0
+aAAAAAAOAAAAaAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAA0AAAAAQAAAAAAAAAQAAAA
+NAAAAHNmJTIwQChzcmMsZXZlbnQpbXVsdGlfc2VsZWN0X2NhbGwob2JqZWN0LHNyYyxldmVudCkA
+AAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkA
+AABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAA
+AAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNh
+dGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFy
+IEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAB1AAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAABAAAAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACgAAAAEAAAAA
+AAAAEAAAAAoAAABPbmUgT3V0cHV0AAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgA
+AAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAA
+AAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAA
+AADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAcA
+AAABAAAAAQAAAAAAAAAGAAAAHAAAAAAAAN0CAAAAAgAAAAEAAAByAAAAdAAAAAsAAAAAAAAADgAA
+ADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAA
+AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAU
+AAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAAEAABAHAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA
+AAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+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
+AAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAA
+AAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAsAAAAAQAAAAAAAAAQAAAALAAAAHNmJTE4QChzcmMsZXZlbnQpcmVkb19jYWxsKG9iamVjdCxz
+cmMsZXZlbnQpAAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAA
+AAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI
+AAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJh
+cnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlv
+bnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAegAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+AAQAAAABAAAAAAAAABAABABSZWRvDgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAA
+AQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAA
+AAAAAAAAAAAAAwAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+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
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAADAAAAABAAAAAAAAABAAAAAwAAAAc2YlMTVAKHNy
+YyxldmVudClzYXZlX2V4dF9jYWxsKG9iamVjdCxzcmMsZXZlbnQpDgAAAEAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAA
+AMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAAAAEAAAAAAAAAEAAAAIoAAAAvVXNl
+cnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jr
+cy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9U
+YWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACBAAAABAAAAA4AAAAwAAAA
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAEAAAAAG
+AAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAADgAAAAEAAAAAAAAAEAAAAA4AAABTYXZlIHRvIE0t
+RmlsZQAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAA
+ABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAA
+AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAcwAA
+AA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACAAAAAUAAAAOAAAA
+QAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAAMAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4AAADYAwAABgAAAAgA
+AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAEAAAABtYXRsYWJy
+b290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5jdGlvbl9oYW5kbGUA
+DgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAAAAAAEAAAAB8AAAAv
+QXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24AAAAAAAAAAAB0eXBl
+AAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAAAAB3aXRoaW5fZmls
+ZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAACwAAAABAAAAAAAA
+ABAAAAAsAAAAc2YlMTRAKHNyYyxldmVudClzYXZlX2NhbGwob2JqZWN0LHNyYyxldmVudCkAAAAA
+DgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAAAAAAEAAAAAkAAABh
+bm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAigAAAAEA
+AAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFyeS9BcHBsaWNhdGlv
+biBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9ucy9UYWJ1bGFyIEV4
+cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AACDAAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA
+ABAAAAAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAADQAAAAEAAAAAAAAA
+EAAAAA0AAABTYXZlIHRvIEJsb2NrAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAF
+AAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAOAAAAAYA
+AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADd
+AgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAAB
+AAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAA
+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
+AQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAA
+AAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA
+AAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+LkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAA
+AAAAAAAAgFZAAAAAAABQfkAAAAAAAEBvQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAiQAAAAIAAAAO
+AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEA
+AAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAA
+ABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAA
+CAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgA
+AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QA
+AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+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
+SW5wdXRzAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJ
+AAAAIAAAAAAAAAAAABRAAAAAAABQfkAAAAAAAABUQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAA
+AAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAABRA
+AAAAAABQfkAAAAAAAABUQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAjgAAAAIAAAAOAAAAOAAAAAYA
+AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADd
+AgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5ADgAAAFAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+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
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAATkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAlAAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAc
+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJ
+AAAAIAAAAAAAAAAAkHpAAAAAAABQfkAAAAAAAEBvQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAlQAA
+AAIAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAPAAAAAQAAAAAAAAAQAAAA
+DwAAAEV4cHJlc3Npb24gTmFtZQAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHVAAAAAAABQfkAAAAAAAABUQAAAAAAAAE5ADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAA
+AAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA
+AQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAQHVAAAAAAABQfkAAAAAAAABUQAAAAAAAAE5ADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAlwAAAAIA
+AAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAA
+AAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAA
+BgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAE5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAA
+ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAJgAAAAG
+AAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAEB1QAAA
+AAAAUH5AAAAAAAAAVEAAAAAAAABOQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAJkAAAACAAAADgAAADgAAAAGAAAA
+CAAAAAQAAAAAAAAABQAAAAgAAAABAAAACAAAAAEAAAAAAAAAEAAAAAgAAABTZXR0aW5ncw4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADA
+gkAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA
+AAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAAC
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEAEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAA
+AQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAABgAEAAAAAN0OAAAA2AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5l
+bAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAO
+AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4A
+AAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAA
+AJACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAA
+VQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdv
+cmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAAvAAAAAQAAAAAAAAAQAAAALwAAAHNmJTlAKHNyYyxldmVudClzZXR0aW5n
+c19jYWxsKG9iamVjdCxzcmMsZXZlbnQpAA4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADAAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAAABAAAACKAAAAL1VzZXJzL3Blc2FyYWFtYXJh
+c2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1P
+bnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BHVUkv
+aW5pdC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAmwAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAA
+DgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAA
+AAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMCCQAAAAAAA
+WIFAAAAAAAAAVEAAAAAAAABEQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAJwAAAACAAAADgAAADgAAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAA
+AAAAAAAAAAMAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEA
+AAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEQA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACdAAAABgAAAA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANBy
+QAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAADAgkAAAAAAAFiBQAAAAAAAAFRAAAAA
+AAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAACeAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAI
+AAAAAQAAAAUAAAABAAAAAAAAABAAAAAFAAAAUG9ydHMAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAGIBAAAAAAABYgUAAAAAAAABU
+QAAAAAAAAERADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAA
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAA
+BQAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAw
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgD
+AAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAA
+AG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9u
+X2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQ
+AAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAA
+AAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdp
+dGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALAAA
+AAEAAAAAAAAAEAAAACwAAABzZiU4QChzcmMsZXZlbnQpaW5wdXRfY2FsbChvYmplY3Qsc3JjLGV2
+ZW50KQAAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQ
+AAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AACKAAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0Fw
+cGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1Rh
+YnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAAKAAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAA
+AAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAA
+AQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAA
+AAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAYgEAAAAAAAFiBQAAAAAAAAFRAAAAAAAAA
+REAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAAChAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4A
+AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAAogAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAA
+AAAAAAAJAAAAIAAAAAAAAAAAGIBAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAAowAAAAIAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAA
+AAAQAAAACQAAAFR5cGVjaGVjawAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4HpAAAAAAABYgUAAAAAAAABUQAAAAAAAAERA
+DgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABA
+BAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJv
+b3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAO
+AAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9B
+cHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUA
+AAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxl
+X3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAMAAAAAEAAAAAAAAA
+EAAAADAAAABzZiU3QChzcmMsZXZlbnQpdHlwZWNoZWNrX2NhbGwob2JqZWN0LHNyYyxldmVudCkO
+AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu
+b255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAA
+AAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u
+IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw
+cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AKUAAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+EAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAG
+AAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAA
+AADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAADgekAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAACmAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUA
+AAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAApwAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA
+AQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAA4HpAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAqAAAAAIA
+AAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAABADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABgAAAAEAAAAAAAAA
+EAAAAAYAAABTeW50YXgAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB
+AAAAAAAAAAkAAAAgAAAAAAAAAACQdUAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAAEAEAAAYA
+AAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAA
+BAAAAA4AAACQAAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAH
+AAAAAQAAAAcAAABvYmplY3QAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEA
+AAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAAFAAAADgAAAEAEAAAGAAAACAAA
+AAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABgAEAAAAAN0OAAAA2AMAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNl
+cGFyYXRvcgAAAAAAAABzZW50aW5lbAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9u
+cy9NQVRMQUJfUjIwMjFiLmFwcAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAQAAEALwAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAABAAAQBAAAAADgAAAJACAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAABQAEABEAAAABAAAAVQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAA
+AABmaWxlAAAAAAAAAAAAAAAAAHdvcmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAO
+AAAAYAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAsAAAAAQAAAAAAAAAQAAAALAAAAHNm
+JTZAKHNyYyxldmVudCljaGVja19jYWxsKG9iamVjdCxzcmMsZXZlbnQpAAAAAA4AAABAAAAABgAA
+AAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAA
+AAAAAA4AAADAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAIoAAAABAAAAAAAAABAAAACK
+AAAAL1VzZXJzL3Blc2FyYWFtYXJhc2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9N
+YXRoV29ya3MvTUFUTEFCIEFkZC1PbnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRv
+b2xib3gvVGFibGVUb29sL0BHVUkvaW5pdC5tAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAqgAAAAQAAAAO
+AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA
+3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA0HJAAAAAAAAAiUAAAAAAAMCCQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+HEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAA
+CQAAACAAAAAAAAAAAJB1QAAAAAAAWIFAAAAAAAAAVEAAAAAAAABEQA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAKsA
+AAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAA
+AAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAABEQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAA
+AAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACs
+AAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQ
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACQ
+dUAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACtAAAAAgAAAA4AAAA4AAAA
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAgAAAABAAAAAAAAABAAAAAIAAAAU2F2ZSBFeHQO
+AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA
+AAAAQHBAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAA
+AAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0
+AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAA
+AgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2Vu
+dGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5h
+cHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8A
+AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAA
+AA4AAACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAA
+AQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAA
+AAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAALwAAAAEAAAAAAAAAEAAAAC8AAABzZiU1QChzcmMsZXZlbnQpc2F2
+ZV9leHRfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAI
+AAAABAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFh
+bWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBB
+ZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9A
+R1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAK8AAAAEAAAADgAAADAAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAA
+AAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg
+AAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAABAcEAA
+AAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACwAAAAAgAAAA4AAAA4AAAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C
+AAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAsQAAAAYAAAAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAA
+AADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAQHBAAAAAAABYgUAAAAAAAABU
+QAAAAAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAsgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAAAFAAAAAQAAAAAAAAAQAAAABQAAAENsb3NlAAAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAOBlQAAAAAAAWIFAAAAA
+AAAAVEAAAAAAAABEQA4AAAAQAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAA
+AAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAAAAAAEAAAADgAAAJAAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAABwAAAG9iamVjdAAADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+CAAAAAUAAAAOAAAAQAQAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAIAAAABAAAAAQAAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAGAAQAAAAA3Q4A
+AADYAwAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAA
+AEAAAABtYXRsYWJyb290AAAAAAAAc2VwYXJhdG9yAAAAAAAAAHNlbnRpbmVsAAAAAAAAAABmdW5j
+dGlvbl9oYW5kbGUADgAAAFAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAHwAAAAEAAAAA
+AAAAEAAAAB8AAAAvQXBwbGljYXRpb25zL01BVExBQl9SMjAyMWIuYXBwAA4AAAAwAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQAvAAAADgAAADAAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAEAAAAAOAAAAkAIAAAYAAAAIAAAA
+AgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAEQAAAAEAAABVAAAAZnVuY3Rpb24A
+AAAAAAAAAAB0eXBlAAAAAAAAAAAAAAAAAGZpbGUAAAAAAAAAAAAAAAAAd29ya3NwYWNlAAAAAAAA
+AAB3aXRoaW5fZmlsZV9wYXRoAAAAAA4AAABgAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAA
+ACsAAAABAAAAAAAAABAAAAArAAAAc2YlNEAoc3JjLGV2ZW50KWNsb3NlX2ZpZyhvYmplY3Qsc3Jj
+LGV2ZW50KQAAAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAACQAAAAEAAAAA
+AAAAEAAAAAkAAABhbm9ueW1vdXMAAAAAAAAADgAAAMAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAigAAAAEAAAAAAAAAEAAAAIoAAAAvVXNlcnMvcGVzYXJhYW1hcmFzZWtlcmEvTGlicmFy
+eS9BcHBsaWNhdGlvbiBTdXBwb3J0L01hdGhXb3Jrcy9NQVRMQUIgQWRkLU9ucy9Db2xsZWN0aW9u
+cy9UYWJ1bGFyIEV4cHJlc3Npb24gVG9vbGJveC9UYWJsZVRvb2wvQEdVSS9pbml0Lm0AAAAAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAC0AAAABAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAAAA
+AAAAAAABAAAAAAAAABAAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAA
+AQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQ
+ckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA4GVAAAAAAABYgUAAAAAAAABUQAAA
+AAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAtQAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAA
+AAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+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
+aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29s
+Ym94L1RhYmxlVG9vbC9AR1VJL2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAALkAAAAEAAAADgAA
+ADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0C
+AAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAACAVkAAAAAAAFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAC6AAAA
+AgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAB
+AAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAA
+AAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAREAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJ
+AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAuwAA
+AAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAAPC/AAAAAADQckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgFZA
+AAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAvAAAAAIAAAAOAAAAMAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQARWRpdA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAA
+UAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA
+ABRAAAAAAABYgUAAAAAAAABUQAAAAAAAAERADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgA
+AAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAA
+AgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAAIAAAABQAAAA4AAABABAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAA
+AAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAYABAAAAADdDgAAANgDAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGlu
+ZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAA
+DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAO
+AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4A
+AACQAgAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAA
+AFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3
+b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAALwAAAAEAAAAAAAAAEAAAAC8AAABzZiUyQChzcmMsZXZlbnQpZWRpdF90
+b2dfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFub255bW91cwAAAAAAAAAOAAAAwAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAACKAAAAAQAAAAAAAAAQAAAAigAAAC9Vc2Vycy9wZXNhcmFhbWFy
+YXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQt
+T25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AR1VJ
+L2luaXQubQAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA
+AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAL4AAAAEAAAADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAA
+AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAA
+AAAAAAAA8L8AAAAAANByQAAAAAAAAIlAAAAAAADAgkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAFEAAAAAA
+AFiBQAAAAAAAAFRAAAAAAAAAREAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAC/AAAAAgAAAA4AAAA4AAAABgAAAAgA
+AAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAA
+AAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAAB
+AAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAwAAAAAYAAAAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAADQ
+ckAAAAAAAACJQAAAAAAAwIJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAABRAAAAAAABYgUAAAAAAAABUQAAA
+AAAAAERADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAwQAAAAIAAAAOAAAAwAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAACMAAAABAAAAAQAAAAAAAAAGAAAAjAAAAAAAAN0CAAAAHgAAAAEAAABAAAAARQAAAEoAAABP
+AAAANgAAADEAAAAsAAAABQAAACUAAAAgAAAAGwAAABYAAAAQAAAACwAAAFQAAABZAAAAcAAAAH0A
+AACIAAAAjQAAAJEAAACWAAAAmgAAAJ8AAACkAAAAqQAAAK4AAACzAAAAuAAAAL0AAAAMAAAAAAAA
+AA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAA
+AQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAG
+AAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAOI7jOI7j9L9YVVVVVVX1P47jOI7jOCZAqqqq
+qqqqIEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAADCAAAADQAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFAAAAAAAAA
+JkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAADDAAAADgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADsAAAAPAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAvQAAAAcAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAC4AAAABwAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAKQAAAAH
+AAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAAswAAAAcAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAA
+AAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACuAAAABwAAAA4AAABIAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAAB
+AAAAAQAAAKkAAAAHAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEA
+AAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAnwAAAAcAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACaAAAA
+BwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAJEAAAAHAAAADgAAAEAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAADAAAAAEAAAAAAAAAEAAAAAwAAABmX3VucHJvdmFibGUAAAAADgAAADAAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAAEAADAHgseQAOAAAASAAAAAYAAAAIAAAA
+DQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAACI
+AAAABwAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAEAAVJxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAECPQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAWUAOAAAAOAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAAEgAAAAGAAAACAAA
+AA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA
+xAAAABAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAACWAAAABwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAI0AAAAHAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAAQAAABEAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAABAAAAEQAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AMUAAAASAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADGAAAAEwAAAA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAAQAAABEAAAAOAAAAqAAAAAYAAAAIAAAAAQAAAAAA
+AAAFAAAACAAAAAEAAAACAAAAAQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAAGAAAAAQAAAAAAAAAQAAAABgAAAG91dHB1dAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAABwAAAAEAAAAAAAAAEAAAAAcAAABJbmhlcml0AA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMcA
+AAAUAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAADwPw4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJZAAAAAAAAgjEAOAAAAOAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAu
+QA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAA
+AAAAAAAoh0AAAAAAAABlQAAAAAAAIIdAAAAAAAAgckAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADJAAAAAgAAAA4A
+AABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAgJZAAAAAAAAgjEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAoh0AAAAAAAABl
+QAAAAAAAIIdAAAAAAADgc0AOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADKAAAAAgAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMgA
+AAAPAAAADgAAACgEAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAgAAAAEAAAAAAAAABQAE
+AAQAAAABAAAAEAAAAGlkAABUQ0MAc2VxAGNlAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAAFAAAAAQAAAAAAAAAQAAAABQAAADEyMzRhAAAADgAAAEgAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAFgAAAAEAAAAAAAAAEAAAABYAAABmX3VucHJvdmFibGUuY3ZjXzJfQ09N
+AAAOAAAASAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAXAAAAAQAAAAAAAAAQAAAAFwAA
+AFFVRVJZICgoeD4wKSBPUiAoeDwwKSk7AA4AAAAIAQAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAA
+AQAAAAQAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAAB
+AAAAAAAAABAAAgB4IAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAgAAAAEA
+AAAAAAAAEAACACAwAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAACAAAAAQAA
+AAAAAAAQAAIAeSAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAABAAAA
+AAAAABAAAgAgMAAADgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABQAAAAEAAAAA
+AAAAEAAAAAUAAAAxMjM0YQAAAA4AAABIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABYA
+AAABAAAAAAAAABAAAAAWAAAAZl91bnByb3ZhYmxlLmN2Y180X0NPTQAADgAAAEgAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAABAAAAFwAAAAEAAAAAAAAAEAAAABcAAABRVUVSWSAoKHk+NSkgT1Ig
+KHk8MykpOwAOAAAACAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAACAAAAAQAAAAAAAAAQAAIAeCAAAA4A
+AAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAAABAAAgAgMAAADgAA
+ADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAgAAAAEAAAAAAAAAEAACAHkgAAAOAAAA
+MAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAACAAAAAQAAAAAAAAAQAAIAIDMAAA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAg
+ckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAIIdADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAAQA4AAABIAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAABYAAAAB
+AAAAAAAAABAAAAAWAAAAZl91bnByb3ZhYmxlLmN2Y18yX0NPTQAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAkQAAAAAAAACRAAAAA
+AAAAaUAAAAAAAABpQA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA
+AAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAA
+AAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAA
+AAAAAAAAAPC/AAAAAAAYg0AAAAAAACCHQAAAAAAAIHJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAACRAAAAA
+AAAAJEAAAAAAAABpQAAAAAAAAGlADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAzgAAAAIAAAAOAAAAOAAAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAA
+AAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA
+AQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAmQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAM8AAAAGAAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA
+GINAAAAAAAAgh0AAAAAAACByQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAkQAAAAAAAACRAAAAAAAAAaUAA
+AAAAAABpQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAANAAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAzQAAAAcAAAAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AABADgAAAEgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAFwAAAAEAAAAAAAAAEAAAABcA
+AABRVUVSWSAoKHg+MCkgT1IgKHg8MCkpOwAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgGtAAAAAAAAAJEAAAAAAAMByQAAAAAAAAGlA
+DgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAA
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUA
+AAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAA
+ABiDQAAAAAAAIIdAAAAAAAAgckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAACAa0AAAAAAAAAkQAAAAAAAwHJA
+AAAAAAAAaUAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAADSAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAA
+AAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAg
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaUAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAACZADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAA0wAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAAAYg0AAAAAAACCHQAAA
+AAAAIHJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAE
+AAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgGtAAAAAAAAAJEAAAAAAAMByQAAAAAAAAGlADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAA1AAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADRAAAABwAAAA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAEAOAAAASAAAAAYA
+AAAIAAAABAAAAAAAAAAFAAAACAAAAAMAAAAHAAAAAQAAAAAAAAAQAAAAFQAAAHh5ICAgICAgID09
+ICAgIDAwIDs7IAAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAACQgEAAAAAAAAAkQAAAAAAAAGlAAAAAAAAAaUAOAAAASAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAA
+AAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAAGINAAAAAAAAgh0AA
+AAAAACByQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAJCAQAAAAAAAACRAAAAAAAAAaUAAAAAAAABpQA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAANYAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAABpQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAADXAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAABiDQAAAAAAAIIdAAAAAAAAgckAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABxA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAACQgEAAAAAAAAAkQAAAAAAAAGlAAAAAAAAAaUAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADYAAAA
+AgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAANUAAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAABAAAAAEAAAAAAAAAEAAEAE5leHQOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAA8IRAAAAAAAAAbkAAAAAAAABOQAAAAAAAADRA
+DgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADMAAAAFQAAAA4AAABI
+BAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1hdGxhYnJv
+b3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hhbmRsZQAO
+AAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAAHwAAAC9B
+cHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAAAHR5cGUA
+AAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhpbl9maWxl
+X3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALgAAAAEAAAAAAAAA
+EAAAAC4AAABzZiUxQChzcmMsZXZlbnQpcGJfbmV4dF9jYWxsKG9iamVjdCxzcmMsZXZlbnQpAAAO
+AAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAACQAAAGFu
+b255bW91cwAAAAAAAAAOAAAAyAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACXAAAAAQAA
+AAAAAAAQAAAAlwAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxpY2F0aW9u
+IFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVsYXIgRXhw
+cmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AVmFsaWRhdGlvblJlcG9ydC9pbml0Lm0ADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAA2gAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAAAAAAAAAA
+AQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAAAAEAAAAB
+AAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAAGINAAAAA
+AAAgh0AAAAAAACByQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAPCEQAAAAAAAAG5AAAAAAAAATkAAAAAAAAA0
+QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAANsAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAAAAAADgAA
+AFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0QA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+JEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAADcAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAABiDQAAAAAAAIIdAAAAAAAAgckAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAA
+AAAAAAkAAAAgAAAAAAAAAADwhEAAAAAAAABuQAAAAAAAAE5AAAAAAAAANEAOAAAASAAAAAYAAAAI
+AAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEA
+AADdAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAANkAAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAFByZXYOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAwIJAAAAAAAAAbkAAAAAAAABOQAAA
+AAAAADRADgAAABABAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAAAQAAAAEAAAAAAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAAAAAAAAQAAAAOAAAAkAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQABwAAAAEAAAAHAAAAb2JqZWN0AAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADMAAAAFQAA
+AA4AAABIBAAABgAAAAgAAAABAAAAAAAAAAUAAAAIAAAAAgAAAAEAAAABAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAANAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAYABAAAAADdDgAAAOADAAAG
+AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABAAAAABAAAAQAAAAG1h
+dGxhYnJvb3QAAAAAAABzZXBhcmF0b3IAAAAAAAAAc2VudGluZWwAAAAAAAAAAGZ1bmN0aW9uX2hh
+bmRsZQAOAAAAUAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAfAAAAAQAAAAAAAAAQAAAA
+HwAAAC9BcHBsaWNhdGlvbnMvTUFUTEFCX1IyMDIxYi5hcHAADgAAADAAAAAGAAAACAAAAAQAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAAEAABAC8AAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAQAAAAA4AAACYAgAABgAAAAgAAAACAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAARAAAAAQAAAFUAAABmdW5jdGlvbgAAAAAAAAAA
+AHR5cGUAAAAAAAAAAAAAAAAAZmlsZQAAAAAAAAAAAAAAAAB3b3Jrc3BhY2UAAAAAAAAAAHdpdGhp
+bl9maWxlX3BhdGgAAAAADgAAAGAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAALgAAAAEA
+AAAAAAAAEAAAAC4AAABzZiUyQChzcmMsZXZlbnQpcGJfcHJldl9jYWxsKG9iamVjdCxzcmMsZXZl
+bnQpAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAJAAAAAQAAAAAAAAAQAAAA
+CQAAAGFub255bW91cwAAAAAAAAAOAAAAyAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAACX
+AAAAAQAAAAAAAAAQAAAAlwAAAC9Vc2Vycy9wZXNhcmFhbWFyYXNla2VyYS9MaWJyYXJ5L0FwcGxp
+Y2F0aW9uIFN1cHBvcnQvTWF0aFdvcmtzL01BVExBQiBBZGQtT25zL0NvbGxlY3Rpb25zL1RhYnVs
+YXIgRXhwcmVzc2lvbiBUb29sYm94L1RhYmxlVG9vbC9AVmFsaWRhdGlvblJlcG9ydC9pbml0Lm0A
+DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAA
+AADdAgAAAAEAAAABAAAA3wAAAAQAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAQAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAA
+AAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA
+GINAAAAAAAAgh0AAAAAAACByQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMCCQAAAAAAAAG5AAAAAAAAATkAA
+AAAAAAA0QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAOAAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAA
+AAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0QA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAADhAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAABiDQAAAAAAAIIdAAAAA
+AAAgckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAADAgkAAAAAAAABuQAAAAAAAAE5AAAAAAAAANEAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAADiAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAN4AAAAHAAAADgAAADgAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAACAAAAAEAAAAAAAAAEAAAAAgAAABUQ0MgTmFtZQ4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAA
+AIBrQAAAAAAAAGlAAAAAAAAALkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUAAAAB
+AAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAABAAAAAAAAAA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAABiD
+QAAAAAAAIIdAAAAAAAAgckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAJEAAAAAAAIBrQAAAAAAAAGlAAAAA
+AAAALkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAADkAAAAAgAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAUAAAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAA
+AA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAACRADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAA5QAAAAYAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAAAYg0AAAAAAACCHQAAAAAAA
+IHJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA
+AQAAAAAAAAAJAAAAIAAAAAAAAAAAACRAAAAAAACAa0AAAAAAAABpQAAAAAAAAC5ADgAAAEgAAAAG
+AAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEA
+AAABAAAA5gAAAAIAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAA
+AAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADjAAAABwAAAA4AAAA4AAAABgAAAAgAAAAEAAAA
+AAAAAAUAAAAIAAAAAQAAAAcAAAABAAAAAAAAABAAAAAHAAAAU2VxdWVudAAOAAAAUAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgGtAAAAAAACA
+a0AAAAAAAABpQAAAAAAAAC5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAA
+AAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAAAAAYg0AA
+AAAAACCHQAAAAAAAIHJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAgGtAAAAAAACAa0AAAAAAAABpQAAAAAAA
+AC5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgA
+AAAAAADdAgAAAAEAAAABAAAA6AAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAAAAAAAAAO
+AAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAOkAAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAAGINAAAAAAAAgh0AAAAAAACBy
+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ
+AAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEA
+AAAAAAAACQAAACAAAAAAAAAAAIBrQAAAAAAAgGtAAAAAAAAAaUAAAAAAAAAuQA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAOoAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAA
+AAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA5wAAAAcAAAAOAAAAQAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAAPAAAAAQAAAAAAAAAQAAAADwAAAENvdW50ZXIgRXhhbXBsZQAOAAAAUAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAkIBA
+AAAAAACAa0AAAAAAAABpQAAAAAAAAC5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAF
+AAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAAAAAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAAPC/AAAA
+AAAYg0AAAAAAACCHQAAAAAAAIHJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAkIBAAAAAAACAa0AAAAAAAABp
+QAAAAAAAAC5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAA7AAAAAIAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAwAA
+AAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAkQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAA
+AAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAO0AAAAGAAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAAGINAAAAAAAAgh0AA
+AAAAACByQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+BAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAJCAQAAAAAAAgGtAAAAAAAAAaUAAAAAAAAAuQA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAAO4AAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA6wAAAAcAAAAOAAAAOAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAAAIAAAAAQAAAAAAAAAQAAAACAAAADEgIG9mICAyDgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMCCQAAA
+AAAAQHBAAAAAAABAYEAAAAAAAAA0QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABQAA
+AAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAEAAAAAAAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA
+GINAAAAAAAAgh0AAAAAAACByQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAMCCQAAAAAAAQHBAAAAAAABAYEAA
+AAAAAAA0QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAPAAAAACAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAA
+AAAAAAUAAAAIAAAABQAAAAEAAAABAAAAAAAAAAYAAAAUAAAAAAAA3QIAAAAAAAAAAAAAAAMAAAAA
+AAAADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0QA4AAABQAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAJEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAADxAAAABgAAAA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAA8L8AAAAAABiDQAAAAAAAIIdAAAAA
+AAAgckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAABxADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQA
+AAABAAAAAAAAAAkAAAAgAAAAAAAAAADAgkAAAAAAAEBwQAAAAAAAQGBAAAAAAAAANEAOAAAASAAA
+AAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAA
+AQAAAAEAAADyAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAAB
+AAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAO8AAAAHAAAADgAAAEgAAAAGAAAACAAAAAQA
+AAAAAAAABQAAAAgAAAABAAAAEQAAAAEAAAAAAAAAEAAAABEAAABUeXBlY2hlY2sgU3VtbWFyeQAA
+AAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAA
+IAAAAAAAAAAAACRAAAAAAABAb0AAAAAAAABpQAAAAAAAAD5ADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAAAAAAAAAAAAAAAQAAAAAA
+AAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAA
+AAAAAAAAAPC/AAAAAAAYg0AAAAAAACCHQAAAAAAAIHJADgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAcQA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAALkAOAAAAUAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAJAAAAIAAAAAAAAAAAACRAAAAA
+AABAb0AAAAAAAABpQAAAAAAAAD5ADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAA
+AQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA9AAAAAIAAAAOAAAAOAAAAAYAAAAI
+AAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAFAAAAAQAAAAEAAAAAAAAABgAAABQAAAAAAADdAgAA
+AAAAAAAAAAAAAwAAAAAAAAAOAAAAUAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAEAAAA
+AQAAAAAAAAAJAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5ADgAAAFAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAuQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAPUAAAAGAAAADgAAAFAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAADwvwAAAAAA
+GINAAAAAAAAgh0AAAAAAACByQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAHEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAC5ADgAAAFAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAACQAAACAAAAAAAAAAAAAkQAAAAAAAQG9AAAAAAAAAaUAA
+AAAAAAA+QA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAPYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAA8wAAAAcAAAAOAAAA
+SAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0C
+AAAAAQAAAAEAAAAIAAAABQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAEAEAAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAA
+AAIAAAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAAAAAABAAAAA4AAACQAAAABgAAAAgAAAAC
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAHAAAAAQAAAAcAAABvYmplY3QAAA4A
+AABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA
+3QIAAAABAAAAAQAAAMwAAAAVAAAADgAAAEgEAAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAAACAAAA
+AQAAAAEAAAAAAAAADgAAADAAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAABgAEAAAAAN0OAAAA4AMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAA
+AAAFAAQAEAAAAAEAAABAAAAAbWF0bGFicm9vdAAAAAAAAHNlcGFyYXRvcgAAAAAAAABzZW50aW5l
+bAAAAAAAAAAAZnVuY3Rpb25faGFuZGxlAA4AAABQAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAB8AAAABAAAAAAAAABAAAAAfAAAAL0FwcGxpY2F0aW9ucy9NQVRMQUJfUjIwMjFiLmFwcAAO
+AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEALwAAAA4A
+AAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAABAAAQBAAAAADgAA
+AJgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABEAAAABAAAA
+VQAAAGZ1bmN0aW9uAAAAAAAAAAAAdHlwZQAAAAAAAAAAAAAAAABmaWxlAAAAAAAAAAAAAAAAAHdv
+cmtzcGFjZQAAAAAAAAAAd2l0aGluX2ZpbGVfcGF0aAAAAAAOAAAAYAAAAAYAAAAIAAAABAAAAAAA
+AAAFAAAACAAAAAEAAAAwAAAAAQAAAAAAAAAQAAAAMAAAAHNmJTBAKHNyYyxldmVudCljbG9zZV9y
+ZXFfY2FsbChvYmplY3Qsc3JjLGV2ZW50KQ4AAABAAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAA
+AQAAAAkAAAABAAAAAAAAABAAAAAJAAAAYW5vbnltb3VzAAAAAAAAAA4AAADIAAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAJcAAAABAAAAAAAAABAAAACXAAAAL1VzZXJzL3Blc2FyYWFtYXJh
+c2VrZXJhL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9NYXRoV29ya3MvTUFUTEFCIEFkZC1P
+bnMvQ29sbGVjdGlvbnMvVGFidWxhciBFeHByZXNzaW9uIFRvb2xib3gvVGFibGVUb29sL0BWYWxp
+ZGF0aW9uUmVwb3J0L2luaXQubQAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAADLAAAABAAAAA4AAAAwAAAABgAAAAgA
+AAAEAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAABAAAAAAAAAADgAAAEAAAAAGAAAACAAA
+AAQAAAAAAAAABQAAAAgAAAABAAAACwAAAAEAAAAAAAAAEAAAAAsAAABDVkMzIFJlcG9ydAAAAAAA
+DgAAADAIAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAQAAAAEAAAAAEAAAAAAAAACQAAAAAIAAAA
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAA
+APA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA
+8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8A
+AAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAA
+AADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABA
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAIAAAABAAAAAAAAAAkAAAAQAAAAAAAAAAAA
+8D8AAAAAAADwPw4AAABwAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAADwAAAAEAAAABAAAAAAAA
+AAYAAAA8AAAAAAAA3QIAAAAKAAAAAQAAAPMAAADvAAAA6wAAAOcAAADjAAAA3gAAANkAAADVAAAA
+0QAAAM0AAAAHAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAUA
+AAABAAAAAQAAAAAAAAAGAAAAFAAAAAAAAN0CAAAAAAAAAAAAAAADAAAAAAAAAA4AAABQAAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAGMdxHMdx7L85juM4
+juMLQOQ4juM4jiRAyHEcx3EcEEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAD3AAAADQAAAA4AAABQAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkAAAAgAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAACFAAAAAAAAAJkAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAD4AAAADgAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAMgA
+AAAPAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAA
+AAgAAAAAAAAAAAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA
+AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAHQAAAALAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAcgAAAAsA
+AAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAA
+AAAAAN0CAAAAAQAAAAEAAABqAAAACwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAA
+BgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAGwAAAALAAAADgAAADgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAAD5AAAAFgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAHsAAAALAAAADgAAAEgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAA
+AAEAAAABAAAAeQAAAAsAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+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
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAAuQA4AAABQAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAQAAAABAAAAAAAAAAkA
+AAAgAAAAAAAAAABAcEAAAAAAAKB5QAAAAAAAAGlAAAAAAAAATkAOAAAASAAAAAYAAAAIAAAADQAA
+AAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAD7AAAA
+AgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAUAAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAAwAAAAEAAAAAAAAAEAADAHk+NQAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAKgAAAAgAAAAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAPA/DgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAA
+ABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAACQAAAA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAAAoAAAAJAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAA
+AAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAATwAAAAcAAAAOAAAAMAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAeAAAAA4AAABIAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAA
+AAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAABAAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAVAAAACQAAAA4AAABI
+AAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIA
+AAABAAAAAQAAAEoAAAAHAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAAAwAA
+AAEAAAAAAAAAEAADAHgqeQAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAA
+AQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAACsA
+AAAJAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAACgAAAAkAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAA
+CAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAABFAAAABwAAAA4AAAAw
+AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB5K3gADgAAAEgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADw
+PwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAArAAAACQAAAA4AAABIAAAABgAAAAgAAAAN
+AAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAABUA
+AAAJAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAA
+ABgAAAAAAADdAgAAAAEAAAABAAAAQAAAAAcAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAQAAEAeQAAAA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAFgA
+AAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAJAAAAAQAAAAEAAAAAAAAABgAAACQAAAAAAADdAgAA
+AAEAAAAEAAAAAwAAAPwAAAD9AAAA/gAAABcAAAAAAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAA
+BQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAAKgAAAAgAAAAO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAAJAAAACAAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAAKAAAADgAAAEgAAAAGAAAA
+CAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAAB
+AAAAKgAAAAgAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAACAAAAA4AAABAAAAABgAAAAgAAAAEAAAAAAAA
+AAUAAAAIAAAAAQAAAAwAAAABAAAAAAAAABAAAAAMAAAAZl91bnByb3ZhYmxlAAAAAA4AAAAwAAAA
+BgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAABAAAwB4LHkADgAAAJgBAAAG
+AAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAcAAAABAAAAIwAAAHNl
+dAAAAABpbnB1dHMAY291bnQAAHJhbmdlAABleGNlcHQAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAQI9ADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABZ
+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJ
+AAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAA
+AAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAADsAAAAPAAAADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAACQ
+AAAABgAAAAgAAAAMAAAAAAAAAAUAAAAIAAAAGAAAAAEAAAABAAAAAAAAAAUAAABgAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAOg3AAAGAAAACAAAAAEAAAAAAAAA
+BQAAAAgAAAAYAAAAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUA
+AAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAA
+AAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAA
+CAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4
+AAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAA
+AAAOAAAAYBIAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQAGQAA
+AAEAAAB4BQAAR3JpZDIAAAAAAAAAAAAAAAAAAAAAAAAAAEdyaWQxAAAAAAAAAAAAAAAAAAAAAAAA
+AABHcmlkMAAAAAAAAAAAAAAAAAAAAAAAAAAAbWFpbl9maWcAAAAAAAAAAAAAAAAAAAAAAGZyYW1l
+AAAAAAAAAAAAAAAAAAAAAAAAAABmaWcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc2Nyb2xsX3YAAAAA
+AAAAAAAAAAAAAAAAAGVkaXRfdG9nAAAAAAAAAAAAAAAAAAAAAABzYXZlX3BiAAAAAAAAAAAAAAAA
+AAAAAAAAcHZzX3BiAAAAAAAAAAAAAAAAAAAAAAAAAGNsb3NlX3BiAAAAAAAAAAAAAAAAAAAAAABz
+YXZlX2V4dF9wYgAAAAAAAAAAAAAAAAAAY2hlY2tfcGIAAAAAAAAAAAAAAAAAAAAAAGlucHV0X3Bi
+AAAAAAAAAAAAAAAAAAAAAABzZXR0aW5nc19wYgAAAAAAAAAAAAAAAAAAZnVuY3Rpb25fbmFtZV9j
+b250cm9sAAAAAGZ1bmN0aW9uX25hbWVfdGV4dAAAAAAAAABmdW5jdGlvbl9pbnB1dHNfdGV4dAAA
+AAAAZnVuY3Rpb25faW5wdXRzX2NvbnRyb2wAAGVkaXQAAAAAAAAAAAAAAAAAAAAAAAAAAABpbml0
+aWFsaXplZAAAAAAAAAAAAAAAAAAAYmxvY2tfaGFuZGxlAAAAAAAAAAAAAAAAAHNldHRpbmdzAAAA
+AAAAAAAAAAAAAAAAAABoZWFkZXJfaGVpZ2h0AAAAAAAAAAAAAAAAZmlnX2hlaWdodAAAAAAAAAAA
+AAAAAAAAAGZpZ193aWR0aAAAAAAAAAAAAAAAAAAAAABwYl9vZmZzZXQAAAAAAAAAAAAAAAAAAAAA
+cGJfd2lkdGgAAAAAAAAAAAAAAAAAAAAAAHBiX2hlaWdodAAAAAAAAAAAAAAAAAAAAABodHhfaGVp
+Z2h0AAAAAAAAAAAAAAAAAAAAdGV4dF93aWR0aAAAAAAAAAAAAAAAAAAAAG5hbWVfbGFiZWwAAAAA
+AAAAAAAAAAAAAABpbnB1dF9sYWJlbAAAAAAAAAAAAAAAAAAARGF0YQAAAAAAAAAAAAAAAAAAAAAA
+AAAAAFBWUwAAAAAAAAAAAAAAAAAAAAAAAAAAAABDVkMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHZz
+X2NoZWNrZWQAAAAAAAAAAAAAAAAAAG1vZGUAAAAAAAAAAAAAAAAAAAAAAAAAAABFTUxHZW4AAAAA
+AAAAAAAAAAAAAAAAAAAAVGFibGVCbGsAAAAAAAAAAAAAAAAAAAAAAHNhdmVkAAAAAAAAAAAAAAAA
+AAAAAAAAAAB2YWxpZGF0aW9uX3JlcG9ydF9oYW5kbGUAbXVsdGlfdHlwZQAAAAAAAAAAAAAAAAAA
+AG11bHRpX21vZGUAAAAAAAAAAAAAAAAAAABtdWx0aV9ncnAAAAAAAAAAAAAAAAAAAAAAbXVsdGlf
+b3B0X3JlZwAAAAAAAAAAAAAAAG11bHRpX29wdF9vdXQAAAAAAAAAAAAAAABwcm92ZXJfb3B0X3B2
+cwAAAAAAAAAAAAAAcHJvdmVyX29wdF9jdmMAAAAAAAAAAAAAAHZlcnNpb24AAAAAAAAAAAAAAAAA
+AAAAAAB1bmRvX21hbgAAAAAAAAAAAAAAAAAAAAAAdW5kb19vcHQAAAAAAAAAAAAAAAAAAAAAAHJl
+ZG9fb3B0AAAAAAAAAAAAAAAAAAAAAABkZWZhdWx0X3Byb3ZlcgAAAAAAAAAAAAAAUFZTX2NvbnN0
+AAAAAAAAAAAAAAAAAAAAAENWQ19jb25zdAAAAAAAAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAXkAOAAAAOAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAwIJADgAAADgAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAACJQA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAAFEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAAFRADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAABEQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAQG9ADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEA
+AAAFAAAAAQAAAAAAAAAQAAAABQAAADAuNy40AAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgA
+AAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAQA4AAAA4AAAABgAAAAgAAAAC
+AAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYA
+AAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAA
+AMgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAA8AAAABAAAA
+hwAAAHBhcmVudF9jZWxsAAAAAHBhcmVudF9ncmlkAAAAAGNlbGxzAAAAAAAAAAAAAHNwbGl0X3Bi
+AAAAAAAAAG51bV9jZWxscwAAAAAAAGdyaWRfaW5kZXgAAAAAAHJHcmlkAAAAAAAAAAAAAG5ld19j
+ZWxsX3BiAAAAAGRlbGV0ZV9jZWxsX3BiAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAGgFAAAGAAAACAAAAAIAAAAAAAAA
+BQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABYAAAABAAAAYAEAAHN1YmdyaWQAAAAAAAAAAAAA
+AAAAAABjb25kAAAAAAAAAAAAAAAAAAAAAAAAY29uZF90ZXh0AAAAAAAAAAAAAAAAAGNlbGxfaW5k
+ZXgAAAAAAAAAAAAAAABwYXJlbnRfZ3JpZAAAAAAAAAAAAAAAd2lkdGgAAAAAAAAAAAAAAAAAAAAA
+AGhlaWdodAAAAAAAAAAAAAAAAAAAAABncmlkX3BiAAAAAAAAAAAAAAAAAAAAcGJfZmxhZwAAAAAA
+AAAAAAAAAAAAAGNvbG9yAAAAAAAAAAAAAAAAAAAAAABjb25kaXRpb25fdGV4dF93aWR0aAAAY29u
+ZGl0aW9uX3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAAAAAAABjb25kaXRpb25fdGV4dF95
+AAAAAAAAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aAAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAA
+ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA
+AAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEA
+AAAAAAAACQAAAAgAAAAAAAAAAABpQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAA
+AAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADgAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAkQA4AAAA4AAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAANEAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAD5A
+DgAAAPgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAYAAAAB
+AAAAEgAAAENlbGxzAEdyaWQxAEdyaWQyAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAA
+CAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAACAAAAAAAAAAUAAAAI
+AAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAA
+AAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAADgAAADgAAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAAAAAAEAAAAAAAAABQAEAAEAAAABAAAAAAAAAA4AAAA4AAAA
+BgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAUABAABAAAAAQAAAAAAAAAO
+AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEA
+AAAAAAAADgAAANAFAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AA8AAAABAAAAHQEAAHB2c19pbmNsdWRlcwAAAGNvdW50ZXJfdHJpYWxzAGNvdW50ZXJfcmFuZ2UA
+AGV4Y2VwdAAAAAAAAAAAAGZpZ193aWR0aAAAAAAAAGZpZ19oZWlnaHQAAAAAAG9wZW4AAAAAAAAA
+AAAAAGZpZwAAAAAAAAAAAAAAAGJ1dHRvbl93aWR0aAAAAGJ1dHRvbl9oZWlnaHQAAGJ1dHRvbl9v
+ZmZzZXQAAHRpdGxlX2hlaWdodAAAAGxhYmVsX2hlaWdodAAAAGxhYmVsX3dpZHRoAAAAAHRleHRf
+b2Zmc2V0AAAAAGluY2x1ZGVfdGV4dAAAAGNvdW50X3RleHQAAAAAAHJhbmdlX3RleHQAAAAAAGV4
+Y2VwdF9jaGVjawAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAB5QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAADAckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAE5ADgAAADgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAA+QA4AAAA4AAAABgAA
+AAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAJEAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+AD5ADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAAA+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAADAUkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAA
+AQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAA
+AAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAA
+AAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAA
+AAAAAAEAAAAAAAAACQAAAAAAAAAOAAAACAMAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAB
+AAAAAQAAAAAAAAAFAAQAEAAAAAEAAACgAAAAR3JpZDAAAAAAAAAAAAAAAEdyaWQxAAAAAAAAAAAA
+AABHcmlkMgAAAAAAAAAAAAAAZnVuY3Rpb25fbmFtZQAAAGZ1bmN0aW9uX2lucHV0cwBzZXR0aW5n
+cwAAAAAAAAAAY2hlY2tlZAAAAAAAAAAAAG9wZW4AAAAAAAAAAAAAAABmaWcAAAAAAAAAAAAAAAAA
+bXVsdGlfbW9kZQAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAAB
+AAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEA
+AAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA
+AAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAA
+AAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAA
+AAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAA
+CQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJ
+AAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkA
+AAAAAAAADgAAAGgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AA0AAAABAAAAaAAAAGRlZmF1bHRfdHlwZQBwdnNfdmVyc2lvbgAAb3V0cHV0X3R5cGUAAGlucHV0
+X3R5cGUAAABkYXRhAAAAAAAAAAAAbW9kZQAAAAAAAAAAAG11bHRpX21vZGUAAAB0eXBlX21vZGUA
+AAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAHJl
+YWwOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA
+AA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA
+DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A
+AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AADwPw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAA
+AAAADgAAALgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAgA
+AAABAAAAEAAAAGNvbW1hbmQAZGF0YQAAAAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAAEAAAAAQAAAAAAAAAQAAQAY3ZjMw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAABABAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAABQAEAA0AAAABAAAAJwAAAGRhdGEAAAAAAAAAAABkYXRhdHlwZQAAAAAA
+bXVsdGlfb3V0cHV0AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAA
+AAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAA
+AAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAADwPw4AAADoCAAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAUABAAOAAAAAQAAAKQBAABmaWcAAAAAAAAAAAAAAFBWU19yZXN1bHRzAAAAZmln
+X2hlaWdodAAAAABmaWdfd2lkdGgAAAAAAGVkaXRfdGNjAAAAAAAAZWRpdF9zZXEAAAAAAABlZGl0
+X2NlAAAAAAAAAHBiX25leHQAAAAAAAAAcGJfcHJldgAAAAAAAABwYl9vcGVuAAAAAAAAAGxhYmVs
+X3RjYwAAAAAAbGFiZWxfc2VxAAAAAABsYWJlbF9jZQAAAAAAAGxhYmVsX3BhZ2UAAAAAbGFiZWxf
+dGl0bGUAAABsYWJlbF9oZWlnaHQAAFRDQ193aWR0aAAAAAAAVENDX2hlaWdodAAAAABzZXFfd2lk
+dGgAAAAAAHNlcV9oZWlnaHQAAAAAY2Vfd2lkdGgAAAAAAABjZV9oZWlnaHQAAAAAAGhlYWRlcl9o
+ZWlnaHQAZ3VpAAAAAAAAAAAAAABwYl9uYXZfd2lkdGgAAHBiX25hdl9oZWlnaHQAb2Zmc2V0AAAA
+AAAAAABwYWdlAAAAAAAAAAAAAGtleXdvcmQAAAAAAAAAdGNfbW9kZQAAAAAAAAAAAAAADgAAADAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAeUAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAIlADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAA
+AAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAA
+AAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAA
+AAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAA
+AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA
+AA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA
+DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4A
+AAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAA
+ADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAA
+MAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+LkAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAGlADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+CQAAAAgAAAAAAAAAAABpQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAAB
+AAAAAAAAAAkAAAAIAAAAAAAAAADAckAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEA
+AAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAGlADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAA
+AAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABpQA4AAAA4AAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAaUAOAAAAOAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAE5ADgAAADAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAE5A
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAA0QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAAJEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAA
+BQAAAAEAAAAAAAAAEAAAAAUAAAAxMjM0YQAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAFgBAAAGAAAACAAAAAIAAAAAAAAABQAAAAgA
+AAABAAAAAQAAAAEAAAAAAAAABQAEAA4AAAABAAAAOAAAAHF1ZXVlAAAAAAAAAAAAbWF4X2RlcHRo
+AAAAAABjdXJyZW50X2RlcHRoAHVuZG9fbGV2ZWwAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAElADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACQAQAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAMAAAAAQAAADwAAABDZWxsMQAAAAAAAABD
+ZWxsMgAAAAAAAAByZXN1bHQAAAAAAAByZXN1bHRfdGV4dABjb2xvcgAAAAAAAAAAAAAADgAAADAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACIAAAABgAA
+AAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAAAFgAAAABAAAAAAAAAAIAAABYAAAAAAFJTQAAAAAOAAAA
+SAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAF
+AAAATUNPUwAAAAAOAAAAAAAAAA
+__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml
+
+
+
+ 99fa511f-91a5-484a-a914-4808caa832d8
+ maci64
+
+ %<Auto>
+ %<Auto>
+ 573648863
+ %<AutoIncrement:24.0>
+
+
+ none
+
+
+ normal
+
+ $bdroot
+
+ $bdroot |
+
+
+ |
+
+
+
+
+ warning
+
+
+
+ Ensure deterministic transfer (maximum delay)
+ Ensure data integrity only
+ Ensure deterministic transfer (minimum delay)
+ None
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSet0.xml
+
+
+
+ []
+
+
+
+ []
+
+ []
+ 0.0
+ 10.0
+ auto
+ on
+ auto
+ auto
+ 5
+ auto
+ 10*128*eps
+ 1000
+ 4
+ 1
+ auto
+ auto
+ 1
+ 1e-3
+ on
+ off
+ off
+ ode45
+ auto
+ auto
+ DisableAll
+ UseLocalSettings
+ Nonadaptive
+ TrustRegion
+ off
+ off
+ Fast
+ off
+ off
+ Unconstrained
+ Whenever possible
+ []
+ off
+ off
+ ode3
+
+
+ []
+
+ []
+ 1
+ [t, u]
+ xFinal
+ xInitial
+ on
+ 1000
+ off
+ off
+ off
+ off
+ Array
+ ModelDataLogs
+ on
+ off
+ on
+ on
+ off
+ on
+ off
+ streamout
+ on
+ off
+ xout
+ tout
+ yout
+ logsout
+ dsmout
+ RefineOutputTimes
+ []
+ out
+ 1
+ off
+ timeseries
+ out.mat
+ [-inf, inf]
+
+
+
+ BooleansAsBitfields |
+ PassReuseOutputArgsAs |
+ PassReuseOutputArgsThreshold |
+ ZeroExternalMemoryAtStartup |
+ ZeroInternalMemoryAtStartup |
+ OptimizeModelRefInitCode |
+ NoFixptDivByZeroProtection |
+ UseSpecifiedMinMax |
+ EfficientTunableParamExpr |
+
+
+ []
+ on
+ on
+ on
+ Tunable
+ off
+ off
+ off
+ off
+ double
+ off
+ off
+ on
+ on
+ off
+ off
+ on
+ off
+
+ on
+ off
+ uint_T
+ Same as modeled
+ on
+ 64
+ Structure reference
+ 12
+ 2147483647
+ on
+ 5
+ off
+ off
+ Native Integer
+ on
+ on
+ off
+ off
+ off
+ on
+ inf
+ Inherit from target
+ on
+ off
+ off
+ off
+ on
+ on
+ off
+ off
+ level2
+ Balanced
+ on
+ off
+ off
+ GradualUnderflow
+ off
+
+
+
+ UseOnlyExistingSharedCode |
+
+
+ []
+ error
+ none
+ none
+ none
+ error
+ none
+ UseLocalSettings
+ UseLocalSettings
+ UseLocalSettings
+ warning
+ warning
+ warning
+ warning
+ on
+ Classic
+ none
+ off
+ UseLocalSettings
+ warning
+ warning
+ none
+ error
+ warning
+ warning
+ warning
+ warning
+ error
+ error
+ error
+ none
+ warning
+ none
+ warning
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ none
+ none
+ none
+ none
+ none
+ none
+ warning
+ none
+ warning
+ warning
+ warning
+ error
+ none
+ error
+ none
+ warning
+ warning
+ UseLocalSettings
+ on
+ off
+ none
+ error
+ none
+ none
+ warning
+ warning
+ none
+ warning
+ error
+ warning
+ warning
+ error
+ none
+ warning
+ none
+ warning
+ ErrorLevel1
+ WarnAndRepair
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ error
+ warning
+ warning
+ none
+ warning
+ warning
+ all
+ warning
+ on
+ warning
+ warning
+ off
+
+ none
+ off
+ warning
+ none
+
+
+ []
+
+ []
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ Undefined
+ Unspecified
+ 32
+ on
+ off
+ 32-bit Generic
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ on
+ off
+ Undefined
+ Unspecified
+ 32
+ 32
+ 32
+ Specified
+ off
+ on
+ on
+ on
+ EmbeddedCoderHSP
+
+
+ []
+
+ []
+ IfOutOfDateOrStructuralChange
+ on
+ error
+ off
+ on
+ None
+ Multi
+ Infer from blocks in model
+
+ on
+ off
+ off
+ off
+
+
+ []
+
+ []
+
+
+
+
+ []
+
+
+
+
+
+
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ off
+ on
+ 50
+ on
+ on
+ on
+ 65536
+ off
+ []
+ NotSpecified
+ UseInterfaceOnly
+ off
+ None
+
+ generic
+ C
+ off
+ 200
+ 1024
+ off
+
+
+ mkl-dnn
+ on
+
+
+
+ IncludeHyperlinkInReport |
+ GenerateTraceInfo |
+ GenerateTraceReport |
+ GenerateTraceReportSl |
+ GenerateTraceReportSf |
+ GenerateTraceReportEml |
+ PortableWordSizes |
+ GenerateWebview |
+ GenerateCodeMetricsReport |
+ GenerateCodeReplacementReport |
+ GenerateMissedCodeReplacementReport |
+ GenerateErtSFunction |
+ CreateSILPILBlock |
+ CodeExecutionProfiling |
+ CodeProfilingSaveOptions |
+ CodeProfilingInstrumentation |
+ CodeStackProfiling |
+
+
+ grt.tlc
+ None
+ off
+ off
+
+ off
+ make_rtw
+ on
+ off
+
+ grt_default_tmf
+
+ off
+ on
+ off
+ []
+ off
+ off
+ off
+ off
+ off
+ off
+
+
+
+
+
+
+
+
+
+
+
+ Automatically locate an installed toolchain
+ Faster Builds
+ []
+ off
+ off
+ off
+ None
+ off
+ executionProfile
+ SummaryOnly
+ off
+ off
+ C
+ None
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ []
+
+ Off
+ 1024
+
+ -1
+ discrete
+ 200
+ off
+ 1024
+ on
+ on
+ on
+ off
+ 3.5
+
+
+ 0
+ none
+ on
+ 19.05
+ unspecified
+
+
+
+ IgnoreCustomStorageClasses |
+ IgnoreTestpoints |
+ InsertBlockDesc |
+ SFDataObjDesc |
+ SimulinkDataObjDesc |
+ DefineNamingRule |
+ SignalNamingRule |
+ ParamNamingRule |
+ InlinedPrmAccess |
+ CustomSymbolStr |
+ CustomSymbolStrGlobalVar |
+ CustomSymbolStrType |
+ CustomSymbolStrField |
+ CustomSymbolStrFcn |
+ CustomSymbolStrFcnArg |
+ CustomSymbolStrBlkIO |
+ CustomSymbolStrTmpVar |
+ CustomSymbolStrMacro |
+ ReqsInCode |
+ BlockCommentType |
+ InsertPolySpaceComments |
+ MATLABFcnDesc |
+ InternalIdentifier |
+ CustomSymbolStrModelFcn |
+ CustomSymbolStrUtil |
+ CustomSymbolStrEmxType |
+ CustomSymbolStrEmxFcn |
+ CustomUserTokenString |
+
+
+ []
+
+ off
+ on
+ Auto
+ on
+ off
+ 31
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ 1
+ 8
+ $R$N$M
+ $N$R$M_T
+ $N$M
+ $R$N$M$F
+ $R$N
+ rt$I$N$M
+ rtb_$N$M
+ $N$M
+ $R$N$M
+ $N$C
+ emxArray_$M$N
+ emx$M$N
+
+
+ None
+
+ None
+
+ None
+
+ off
+ off
+ on
+ BlockPathComment
+ on
+ off
+ off
+
+ Shortened
+ Literals
+ off
+ off
+ []
+ error
+
+
+
+ GeneratePreprocessorConditionals |
+ IncludeMdlTerminateFcn |
+ RemoveResetFunc |
+ SuppressErrorStatus |
+ ERTCustomFileBanners |
+ GenerateSampleERTMain |
+ GenerateTestInterfaces |
+ ModelStepFunctionPrototypeControlCompliant |
+ CPPClassGenCompliant |
+ PortableWordSizes |
+ PurelyIntegerCode |
+ PreserveStateflowLocalDataDimensions |
+ SupportComplex |
+ SupportAbsoluteTime |
+ SupportContinuousTime |
+ SupportNonInlinedSFcns |
+ GenerateAllocFcn |
+ ExistingSharedCode |
+ ParenthesesLevel |
+ ERTMultiwordTypeDef |
+ MultiwordTypeDef |
+ RemoveDisableFunc |
+
+
+ []
+ ansi_tfl_table_tmw.mat
+
+
+ NOT IN USE
+ C89/C90 (ANSI)
+ None
+ Auto
+ System defined
+ 2048
+ 256
+ on
+ off
+
+ off
+ off
+ on
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ Auto
+ off
+ on
+ rt_
+ on
+ Nonreusable function
+ off
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ Nominal
+ Nominal
+ Simulink.SoftwareTarget.GRTCustomization
+ off
+ on
+ off
+ off
+ on
+ off
+ on
+ on
+ []
+ []
+ 1,2,3,4,...
+ Size,Breakpoints,Table
+ Size,Breakpoints,Table
+ Column-major
+ error
+ $R$E
+ $R$E
+ $R_data
+
+ None |
+
+ off
+ off
+ off
+ off
+ 1000000
+ 0
+ ext_comm
+
+ Level1
+ off
+ off
+ off
+ off
+ off
+ Error
+
+
+
+
+ []
+ Simulink Coverage Configuration Component
+ []
+ Simulink Coverage
+ off
+ EntireSystem
+ on
+ off
+ /
+ covdata
+
+ dw
+
+
+ off
+ on
+ on
+ on
+ on
+ covCumulativeData
+ off
+ on
+ slcov_output/$ModelName$
+ $ModelName$_cvdata
+ on
+ off
+
+ off
+ on
+ 1e-05
+ 0.01
+ off
+ 0
+ 0
+ Masking
+
+
+ Configuration
+ Solver
+ [ 200, 74, 1080, 704 ]
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml
+
+
+ Configuration
+
+
+__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml
+
+
+ 0
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ Unset
+ 0
+ Simulink
+ 0
+ 0
+ 1
+
+
+__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml
+
+
+
+
+
+
+
+
+ false
+ Default
+ -2147483648
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml
+
+
+
+
+ HighNumberFirst
+ Default
+
+
+
+
+
+ Default
+ graph.Graph
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_9.xml
+
+
+ f_unprovable/code
+ [293 257 161 328]
+ [0 156.75 0 153.75]
+ [1 1 1280 778 1.25]
+ 9
+ LIBRARY_TOOLBAR
+ 7
+ CLUSTER_CHART
+ EML_CHART
+ 2
+ 1
+
+ f_unprovable
+
+
+
+ eML_blk_kernel()
+ [18 64.5 118 66]
+ 12
+ SUBCHART
+ 9
+ FUNC_STATE
+ CLUSTER_STATE
+
+ 1
+ function output = f_unprovable(x,y)
+%%#eml
+output=x;
+if(x>0)
+ if(y>5)
+ output = x;
+ elseif(y<3)
+ output = y+x;
+ end
+elseif(x<0)
+ if(y>5)
+ output = x*y;
+ elseif(y<3)
+ output = y;
+ end
+end
+
+ Matrix(4,1)
+[205.0, 227.0, 1080.0, 733.0]
+ 1
+
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ {eML_blk_kernel();}
+ [32.125 19.875 102.544 14.964]
+ 12
+
+ [0 0 1 0 23.5747 14.625 0 0]
+
+
+ 3
+ [1 0 -1 0 23.5747 42.5747 0 0]
+
+ [23.5747 24.9468]
+ [23.575 23.575 14.625 34.575]
+ 9
+ SMART
+
+ BOTH_STICK
+
+ 1
+
+
+ [23.5747 49.5747 7]
+ 9
+ CONNECTIVE_JUNCTION
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml
+
+
+
+ 80000046
+
+
+ Default Simulink S-Function Target.
+
+
+
+
+
+ 8
+ f_unprovable/code
+ 9
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml
+
+
+ [395, 327, 933, 805]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ Simulink
+
+ [35, 38, 65, 52]
+ -2
+
+
+ [35, 38, 65, 52]
+ -1
+ 2
+
+
+ [2, 1]
+ [250, 49, 320, 96]
+ -3
+ 1.31
+ Stateflow.Translate.translate
+ ExplicitOnly
+ on
+ off
+ MATLAB Function
+
+
+
+ [35, 53, 65, 67]
+ -4
+
+
+ 1
+ 4#out:1
+ 3#in:2
+
+
+ 2
+ 3#out:1
+ 5#in:1
+
+
+ 3
+ 6#out:1
+ 3#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml
+
+
+ [219, 337, 814, 775]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ 24
+ 13
+ Simulink
+
+ [20, 101, 40, 119]
+ -1
+
+
+ [20, 136, 40, 154]
+ -2
+ 2
+
+
+ [1, 1]
+ [270, 230, 320, 270]
+ 2
+ 1
+
+
+ Stateflow S-Function 2
+ [2, 2]
+ [180, 100, 230, 160]
+ 1
+ sf_sfun
+ [2 2]
+ off
+ off
+ off
+
+ 2
+ output
+
+
+
+ [460, 241, 480, 259]
+ 3
+
+
+ [460, 101, 480, 119]
+ -6
+
+
+ 6
+ 3::21#out:1
+ [120, 0]
+ 3::22#in:1
+
+
+ 7
+ 3::19#out:1
+ 3::22#in:2
+
+
+ output
+ 8
+ [0, 0]
+ 3::22#out:2
+ 3::20#in:1
+
+
+ 9
+ 3::23#out:1
+ 3::24#in:1
+
+
+ 10
+ 3::22#out:1
+ 3::23#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml
+
+
+ [71, 199, 758, 703]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ on
+ off
+ Deduce
+ simulink-default.rpt
+ 7
+ Simulink
+
+ [2, 1]
+ [100, 59, 265, 126]
+ -1
+ 1.12
+ on
+
+ TTdiag Copy
+ TTdiag Delete
+ TTdiag Open Simulink
+ off
+
+ port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')
+ Table Block
+
+
+
+
+ This model is an example of a table which will not pass the typecheck.
+It is a 2 dimensional table which has problems in both dimensions. Both
+PVS and CVC3 will discover the problems in this table.
+ [280, 67, 597, 99]
+ [0, 0, 0, 0]
+ -1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml
+
+
+
+
+ 1
+ [71.0, 199.0, 687.0, 504.0]
+
+ 0
+ Left
+ 50
+ 50
+ 9
+ Unset
+
+
+ 1
+
+
+ 1
+ 1
+ SimulinkTopLevel
+ 0
+ [649.0, 269.0]
+ 1.0
+ [22.015625, -34.5]
+ [22.015625, -34.5, 649.0, 269.0]
+
+
+
+ GLUE2:PropertyInspector
+ Property Inspector
+ 0
+
+
+ 0
+ Right
+ 640
+ 480
+ Unset
+
+
+ Simulink:Editor:ReferencedFiles
+ Referenced Files
+ 0
+
+ {"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"}
+
+ 0
+ Left
+ 640
+ 480
+ Unset
+
+
+ AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAAq8AAAFKAAAAAQAAAAIAAAABAAAAAvwAAAAA
+
+ c7a4b0ac-6f51-4aa1-9eda-6903a726a8a3
+
+
+
+
+
+__MWOPC_PACKAGE_END__
+=======
Model {
Name "unprovable"
Version 7.5
@@ -1206,3 +6462,4 @@ Stateflow {
linkNode [1 0 0]
}
}
+>>>>>>> 6e8ce001ab8e32d0a66c7fab9f1c8f2d9f1bad69
diff --git a/Examples/unprovable.mdl.r2010a b/Examples/unprovable.mdl.r2010a
new file mode 100644
index 0000000000000000000000000000000000000000..614eaf3a24990fb72c49514df40ff5592b1f1888
--- /dev/null
+++ b/Examples/unprovable.mdl.r2010a
@@ -0,0 +1,1208 @@
+Model {
+ Name "unprovable"
+ Version 7.5
+ MdlSubVersion 0
+ GraphicalInterface {
+ NumRootInports 0
+ NumRootOutports 0
+ ParameterArgumentNames ""
+ ComputedModelVersion "1.3"
+ NumModelReferences 0
+ NumTestPointedSignals 0
+ }
+ SavedCharacterEncoding "ISO-8859-1"
+ SaveDefaultBlockParams on
+ ScopeRefreshTime 0.035000
+ OverrideScopeRefreshTime on
+ DisableAllScopes off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ MinMaxOverflowArchiveMode "Overwrite"
+ MaxMDLFileLineLength 120
+ Created "Mon Jan 24 14:04:47 2011"
+ Creator "colin"
+ UpdateHistory "UpdateHistoryNever"
+ ModifiedByFormat "%"
+ LastModifiedBy "matthew"
+ ModifiedDateFormat "%"
+ LastModifiedDate "Thu May 15 16:36:47 2014"
+ RTWModifiedTimeStamp 322072565
+ ModelVersionFormat "1.%"
+ ConfigurationManager "none"
+ SampleTimeColors off
+ SampleTimeAnnotations off
+ LibraryLinkDisplay "none"
+ WideLines off
+ ShowLineDimensions off
+ ShowPortDataTypes off
+ ShowLoopsOnError on
+ IgnoreBidirectionalLines off
+ ShowStorageClass off
+ ShowTestPointIcons on
+ ShowSignalResolutionIcons on
+ ShowViewerIcons on
+ SortedOrder off
+ ExecutionContextIcon off
+ ShowLinearizationAnnotations on
+ BlockNameDataTip off
+ BlockParametersDataTip off
+ BlockDescriptionStringDataTip off
+ ToolBar on
+ StatusBar on
+ BrowserShowLibraryLinks off
+ BrowserLookUnderMasks off
+ SimulationMode "normal"
+ LinearizationMsg "none"
+ Profile off
+ ParamWorkspaceSource "MATLABWorkspace"
+ AccelSystemTargetFile "accel.tlc"
+ AccelTemplateMakefile "accel_default_tmf"
+ AccelMakeCommand "make_rtw"
+ TryForcingSFcnDF off
+ RecordCoverage off
+ CovPath "/"
+ CovSaveName "covdata"
+ CovMetricSettings "dw"
+ CovNameIncrementing off
+ CovHtmlReporting on
+ CovForceBlockReductionOff on
+ covSaveCumulativeToWorkspaceVar on
+ CovSaveSingleToWorkspaceVar on
+ CovCumulativeVarName "covCumulativeData"
+ CovCumulativeReport off
+ CovReportOnPause on
+ CovModelRefEnable "Off"
+ CovExternalEMLEnable off
+ ExtModeBatchMode off
+ ExtModeEnableFloating on
+ ExtModeTrigType "manual"
+ ExtModeTrigMode "normal"
+ ExtModeTrigPort "1"
+ ExtModeTrigElement "any"
+ ExtModeTrigDuration 1000
+ ExtModeTrigDurationFloating "auto"
+ ExtModeTrigHoldOff 0
+ ExtModeTrigDelay 0
+ ExtModeTrigDirection "rising"
+ ExtModeTrigLevel 0
+ ExtModeArchiveMode "off"
+ ExtModeAutoIncOneShot off
+ ExtModeIncDirWhenArm off
+ ExtModeAddSuffixToVar off
+ ExtModeWriteAllDataToWs off
+ ExtModeArmWhenConnect on
+ ExtModeSkipDownloadWhenConnect off
+ ExtModeLogAll on
+ ExtModeAutoUpdateStatusClock on
+ BufferReuse on
+ ShowModelReferenceBlockVersion off
+ ShowModelReferenceBlockIO off
+ Array {
+ Type "Handle"
+ Dimension 1
+ Simulink.ConfigSet {
+ $ObjectID 1
+ Version "1.10.0"
+ Array {
+ Type "Handle"
+ Dimension 8
+ Simulink.SolverCC {
+ $ObjectID 2
+ Version "1.10.0"
+ StartTime "0.0"
+ StopTime "10.0"
+ AbsTol "auto"
+ FixedStep "auto"
+ InitialStep "auto"
+ MaxNumMinSteps "-1"
+ MaxOrder 5
+ ZcThreshold "auto"
+ ConsecutiveZCsStepRelTol "10*128*eps"
+ MaxConsecutiveZCs "1000"
+ ExtrapolationOrder 4
+ NumberNewtonIterations 1
+ MaxStep "auto"
+ MinStep "auto"
+ MaxConsecutiveMinStep "1"
+ RelTol "1e-3"
+ SolverMode "Auto"
+ Solver "ode45"
+ SolverName "ode45"
+ SolverJacobianMethodControl "auto"
+ ShapePreserveControl "DisableAll"
+ ZeroCrossControl "UseLocalSettings"
+ ZeroCrossAlgorithm "Nonadaptive"
+ AlgebraicLoopSolver "TrustRegion"
+ SolverResetMethod "Fast"
+ PositivePriorityOrder off
+ AutoInsertRateTranBlk off
+ SampleTimeConstraint "Unconstrained"
+ InsertRTBMode "Whenever possible"
+ }
+ Simulink.DataIOCC {
+ $ObjectID 3
+ Version "1.10.0"
+ Decimation "1"
+ ExternalInput "[t, u]"
+ FinalStateName "xFinal"
+ InitialState "xInitial"
+ LimitDataPoints on
+ MaxDataPoints "1000"
+ LoadExternalInput off
+ LoadInitialState off
+ SaveFinalState off
+ SaveCompleteFinalSimState off
+ SaveFormat "Array"
+ SaveOutput on
+ SaveState off
+ SignalLogging on
+ DSMLogging on
+ InspectSignalLogs off
+ SaveTime on
+ ReturnWorkspaceOutputs off
+ StateSaveName "xout"
+ TimeSaveName "tout"
+ OutputSaveName "yout"
+ SignalLoggingName "logsout"
+ DSMLoggingName "dsmout"
+ OutputOption "RefineOutputTimes"
+ OutputTimes "[]"
+ ReturnWorkspaceOutputsName "out"
+ Refine "1"
+ }
+ Simulink.OptimizationCC {
+ $ObjectID 4
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 7
+ Cell "BooleansAsBitfields"
+ Cell "PassReuseOutputArgsAs"
+ Cell "PassReuseOutputArgsThreshold"
+ Cell "ZeroExternalMemoryAtStartup"
+ Cell "ZeroInternalMemoryAtStartup"
+ Cell "OptimizeModelRefInitCode"
+ Cell "NoFixptDivByZeroProtection"
+ PropName "DisabledProps"
+ }
+ BlockReduction on
+ BooleanDataType on
+ ConditionallyExecuteInputs on
+ InlineParams off
+ UseIntDivNetSlope off
+ InlineInvariantSignals off
+ OptimizeBlockIOStorage on
+ BufferReuse on
+ EnhancedBackFolding off
+ StrengthReduction off
+ EnforceIntegerDowncast on
+ ExpressionFolding on
+ BooleansAsBitfields off
+ BitfieldContainerType "uint_T"
+ EnableMemcpy on
+ MemcpyThreshold 64
+ PassReuseOutputArgsAs "Structure reference"
+ ExpressionDepthLimit 2147483647
+ FoldNonRolledExpr on
+ LocalBlockOutputs on
+ RollThreshold 5
+ SystemCodeInlineAuto off
+ StateBitsets off
+ DataBitsets off
+ UseTempVars off
+ ZeroExternalMemoryAtStartup on
+ ZeroInternalMemoryAtStartup on
+ InitFltsAndDblsToZero off
+ NoFixptDivByZeroProtection off
+ EfficientFloat2IntCast off
+ EfficientMapNaN2IntZero on
+ OptimizeModelRefInitCode off
+ LifeSpan "inf"
+ MaxStackSize "Inherit from target"
+ BufferReusableBoundary on
+ SimCompilerOptimization "Off"
+ AccelVerboseBuild off
+ }
+ Simulink.DebuggingCC {
+ $ObjectID 5
+ Version "1.10.0"
+ RTPrefix "error"
+ ConsistencyChecking "none"
+ ArrayBoundsChecking "none"
+ SignalInfNanChecking "none"
+ SignalRangeChecking "none"
+ ReadBeforeWriteMsg "UseLocalSettings"
+ WriteAfterWriteMsg "UseLocalSettings"
+ WriteAfterReadMsg "UseLocalSettings"
+ AlgebraicLoopMsg "warning"
+ ArtificialAlgebraicLoopMsg "warning"
+ SaveWithDisabledLinksMsg "warning"
+ SaveWithParameterizedLinksMsg "warning"
+ CheckSSInitialOutputMsg on
+ UnderspecifiedInitializationDetection "Classic"
+ MergeDetectMultiDrivingBlocksExec "none"
+ CheckExecutionContextPreStartOutputMsg off
+ CheckExecutionContextRuntimeOutputMsg off
+ SignalResolutionControl "UseLocalSettings"
+ BlockPriorityViolationMsg "warning"
+ MinStepSizeMsg "warning"
+ TimeAdjustmentMsg "none"
+ MaxConsecutiveZCsMsg "error"
+ SolverPrmCheckMsg "warning"
+ InheritedTsInSrcMsg "warning"
+ DiscreteInheritContinuousMsg "warning"
+ MultiTaskDSMMsg "error"
+ MultiTaskCondExecSysMsg "error"
+ MultiTaskRateTransMsg "error"
+ SingleTaskRateTransMsg "none"
+ TasksWithSamePriorityMsg "warning"
+ SigSpecEnsureSampleTimeMsg "warning"
+ CheckMatrixSingularityMsg "none"
+ IntegerOverflowMsg "warning"
+ Int32ToFloatConvMsg "warning"
+ ParameterDowncastMsg "error"
+ ParameterOverflowMsg "error"
+ ParameterUnderflowMsg "none"
+ ParameterPrecisionLossMsg "warning"
+ ParameterTunabilityLossMsg "warning"
+ FixptConstUnderflowMsg "none"
+ FixptConstOverflowMsg "none"
+ FixptConstPrecisionLossMsg "none"
+ UnderSpecifiedDataTypeMsg "none"
+ UnnecessaryDatatypeConvMsg "none"
+ VectorMatrixConversionMsg "none"
+ InvalidFcnCallConnMsg "error"
+ FcnCallInpInsideContextMsg "Use local settings"
+ SignalLabelMismatchMsg "none"
+ UnconnectedInputMsg "warning"
+ UnconnectedOutputMsg "warning"
+ UnconnectedLineMsg "warning"
+ SFcnCompatibilityMsg "none"
+ UniqueDataStoreMsg "none"
+ BusObjectLabelMismatch "warning"
+ RootOutportRequireBusObject "warning"
+ AssertControl "UseLocalSettings"
+ EnableOverflowDetection off
+ ModelReferenceIOMsg "none"
+ ModelReferenceVersionMismatchMessage "none"
+ ModelReferenceIOMismatchMessage "none"
+ ModelReferenceCSMismatchMessage "none"
+ UnknownTsInhSupMsg "warning"
+ ModelReferenceDataLoggingMessage "warning"
+ ModelReferenceSymbolNameMessage "warning"
+ ModelReferenceExtraNoncontSigs "error"
+ StateNameClashWarn "warning"
+ SimStateInterfaceChecksumMismatchMsg "warning"
+ StrictBusMsg "ErrorLevel1"
+ BusNameAdapt "WarnAndRepair"
+ NonBusSignalsTreatedAsBus "none"
+ LoggingUnavailableSignals "error"
+ BlockIODiagnostic "none"
+ }
+ Simulink.HardwareCC {
+ $ObjectID 6
+ Version "1.10.0"
+ ProdBitPerChar 8
+ ProdBitPerShort 16
+ ProdBitPerInt 32
+ ProdBitPerLong 32
+ ProdIntDivRoundTo "Undefined"
+ ProdEndianess "Unspecified"
+ ProdWordSize 32
+ ProdShiftRightIntArith on
+ ProdHWDeviceType "32-bit Generic"
+ TargetBitPerChar 8
+ TargetBitPerShort 16
+ TargetBitPerInt 32
+ TargetBitPerLong 32
+ TargetShiftRightIntArith on
+ TargetIntDivRoundTo "Undefined"
+ TargetEndianess "Unspecified"
+ TargetWordSize 32
+ TargetTypeEmulationWarnSuppressLevel 0
+ TargetPreprocMaxBitsSint 32
+ TargetPreprocMaxBitsUint 32
+ TargetHWDeviceType "Specified"
+ TargetUnknown off
+ ProdEqTarget on
+ }
+ Simulink.ModelReferenceCC {
+ $ObjectID 7
+ Version "1.10.0"
+ UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+ CheckModelReferenceTargetMessage "error"
+ EnableParallelModelReferenceBuilds off
+ ParallelModelReferenceMATLABWorkerInit "None"
+ ModelReferenceNumInstancesAllowed "Multi"
+ PropagateVarSize "Infer from blocks in model"
+ ModelReferencePassRootInputsByReference on
+ ModelReferenceMinAlgLoopOccurrences off
+ PropagateSignalLabelsOutOfModel off
+ SupportModelReferenceSimTargetCustomCode off
+ }
+ Simulink.SFSimCC {
+ $ObjectID 8
+ Version "1.10.0"
+ SFSimEnableDebug on
+ SFSimOverflowDetection on
+ SFSimEcho on
+ SimBlas on
+ SimCtrlC on
+ SimExtrinsic on
+ SimIntegrity on
+ SimUseLocalCustomCode off
+ SimBuildMode "sf_incremental_build"
+ }
+ Simulink.RTWCC {
+ $BackupClass "Simulink.RTWCC"
+ $ObjectID 9
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 6
+ Cell "IncludeHyperlinkInReport"
+ Cell "GenerateTraceInfo"
+ Cell "GenerateTraceReport"
+ Cell "GenerateTraceReportSl"
+ Cell "GenerateTraceReportSf"
+ Cell "GenerateTraceReportEml"
+ PropName "DisabledProps"
+ }
+ SystemTargetFile "grt.tlc"
+ GenCodeOnly off
+ MakeCommand "make_rtw"
+ GenerateMakefile on
+ TemplateMakefile "grt_default_tmf"
+ GenerateReport off
+ SaveLog off
+ RTWVerbose on
+ RetainRTWFile off
+ ProfileTLC off
+ TLCDebug off
+ TLCCoverage off
+ TLCAssert off
+ ProcessScriptMode "Default"
+ ConfigurationMode "Optimized"
+ ConfigAtBuild off
+ RTWUseLocalCustomCode off
+ RTWUseSimCustomCode off
+ IncludeHyperlinkInReport off
+ LaunchReport off
+ TargetLang "C"
+ IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+ IncludeERTFirstTime off
+ GenerateTraceInfo off
+ GenerateTraceReport off
+ GenerateTraceReportSl off
+ GenerateTraceReportSf off
+ GenerateTraceReportEml off
+ GenerateCodeInfo off
+ RTWCompilerOptimization "Off"
+ CheckMdlBeforeBuild "Off"
+ CustomRebuildMode "OnUpdate"
+ Array {
+ Type "Handle"
+ Dimension 2
+ Simulink.CodeAppCC {
+ $ObjectID 10
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 19
+ Cell "IgnoreCustomStorageClasses"
+ Cell "IgnoreTestpoints"
+ Cell "InsertBlockDesc"
+ Cell "SFDataObjDesc"
+ Cell "SimulinkDataObjDesc"
+ Cell "DefineNamingRule"
+ Cell "SignalNamingRule"
+ Cell "ParamNamingRule"
+ Cell "InlinedPrmAccess"
+ Cell "CustomSymbolStr"
+ Cell "CustomSymbolStrGlobalVar"
+ Cell "CustomSymbolStrType"
+ Cell "CustomSymbolStrField"
+ Cell "CustomSymbolStrFcn"
+ Cell "CustomSymbolStrFcnArg"
+ Cell "CustomSymbolStrBlkIO"
+ Cell "CustomSymbolStrTmpVar"
+ Cell "CustomSymbolStrMacro"
+ Cell "ReqsInCode"
+ PropName "DisabledProps"
+ }
+ ForceParamTrailComments off
+ GenerateComments on
+ IgnoreCustomStorageClasses on
+ IgnoreTestpoints off
+ IncHierarchyInIds off
+ MaxIdLength 31
+ PreserveName off
+ PreserveNameWithParent off
+ ShowEliminatedStatement off
+ IncAutoGenComments off
+ SimulinkDataObjDesc off
+ SFDataObjDesc off
+ IncDataTypeInIds off
+ MangleLength 1
+ CustomSymbolStrGlobalVar "$R$N$M"
+ CustomSymbolStrType "$N$R$M"
+ CustomSymbolStrField "$N$M"
+ CustomSymbolStrFcn "$R$N$M$F"
+ CustomSymbolStrFcnArg "rt$I$N$M"
+ CustomSymbolStrBlkIO "rtb_$N$M"
+ CustomSymbolStrTmpVar "$N$M"
+ CustomSymbolStrMacro "$R$N$M"
+ DefineNamingRule "None"
+ ParamNamingRule "None"
+ SignalNamingRule "None"
+ InsertBlockDesc off
+ SimulinkBlockComments on
+ EnableCustomComments off
+ InlinedPrmAccess "Literals"
+ ReqsInCode off
+ UseSimReservedNames off
+ }
+ Simulink.GRTTargetCC {
+ $BackupClass "Simulink.TargetCC"
+ $ObjectID 11
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 17
+ Cell "GeneratePreprocessorConditionals"
+ Cell "IncludeMdlTerminateFcn"
+ Cell "CombineOutputUpdateFcns"
+ Cell "SuppressErrorStatus"
+ Cell "ERTCustomFileBanners"
+ Cell "GenerateSampleERTMain"
+ Cell "GenerateTestInterfaces"
+ Cell "ModelStepFunctionPrototypeControlCompliant"
+ Cell "CPPClassGenCompliant"
+ Cell "MultiInstanceERTCode"
+ Cell "PurelyIntegerCode"
+ Cell "SupportNonFinite"
+ Cell "SupportComplex"
+ Cell "SupportAbsoluteTime"
+ Cell "SupportContinuousTime"
+ Cell "SupportNonInlinedSFcns"
+ Cell "PortableWordSizes"
+ PropName "DisabledProps"
+ }
+ TargetFcnLib "ansi_tfl_table_tmw.mat"
+ TargetLibSuffix ""
+ TargetPreCompLibLocation ""
+ TargetFunctionLibrary "ANSI_C"
+ UtilityFuncGeneration "Auto"
+ ERTMultiwordTypeDef "System defined"
+ ERTCodeCoverageTool "None"
+ ERTMultiwordLength 256
+ MultiwordLength 2048
+ GenerateFullHeader on
+ GenerateSampleERTMain off
+ GenerateTestInterfaces off
+ IsPILTarget off
+ ModelReferenceCompliant on
+ ParMdlRefBuildCompliant on
+ CompOptLevelCompliant on
+ IncludeMdlTerminateFcn on
+ GeneratePreprocessorConditionals "Disable all"
+ CombineOutputUpdateFcns off
+ SuppressErrorStatus off
+ ERTFirstTimeCompliant off
+ IncludeFileDelimiter "Auto"
+ ERTCustomFileBanners off
+ SupportAbsoluteTime on
+ LogVarNameModifier "rt_"
+ MatFileLogging on
+ MultiInstanceERTCode off
+ SupportNonFinite on
+ SupportComplex on
+ PurelyIntegerCode off
+ SupportContinuousTime on
+ SupportNonInlinedSFcns on
+ SupportVariableSizeSignals off
+ EnableShiftOperators on
+ ParenthesesLevel "Nominal"
+ PortableWordSizes off
+ ModelStepFunctionPrototypeControlCompliant off
+ CPPClassGenCompliant off
+ AutosarCompliant off
+ UseMalloc off
+ ExtMode off
+ ExtModeStaticAlloc off
+ ExtModeTesting off
+ ExtModeStaticAllocSize 1000000
+ ExtModeTransport 0
+ ExtModeMexFile "ext_comm"
+ ExtModeIntrfLevel "Level1"
+ RTWCAPISignals off
+ RTWCAPIParams off
+ RTWCAPIStates off
+ GenerateASAP2 off
+ }
+ PropName "Components"
+ }
+ }
+ PropName "Components"
+ }
+ Name "Configuration"
+ CurrentDlgPage "Solver"
+ ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] "
+ }
+ PropName "ConfigurationSets"
+ }
+ Simulink.ConfigSet {
+ $PropName "ActiveConfigurationSet"
+ $ObjectID 1
+ }
+ BlockDefaults {
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ NamePlacement "normal"
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ ShowName on
+ BlockRotation 0
+ BlockMirror off
+ }
+ AnnotationDefaults {
+ HorizontalAlignment "center"
+ VerticalAlignment "middle"
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ UseDisplayTextAsClickCallback off
+ }
+ LineDefaults {
+ FontName "Helvetica"
+ FontSize 9
+ FontWeight "normal"
+ FontAngle "normal"
+ }
+ BlockParameterDefaults {
+ Block {
+ BlockType Demux
+ Outputs "4"
+ DisplayOption "none"
+ BusSelectionMode off
+ }
+ Block {
+ BlockType Inport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ LatchByDelayingOutsideSignal off
+ LatchInputForFeedbackSignals off
+ Interpolate on
+ }
+ Block {
+ BlockType Outport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ SourceOfInitialOutputValue "Dialog"
+ OutputWhenDisabled "held"
+ InitialOutput "[]"
+ }
+ Block {
+ BlockType "S-Function"
+ FunctionName "system"
+ SFunctionModules "''"
+ PortCounts "[]"
+ SFunctionDeploymentMode off
+ }
+ Block {
+ BlockType SubSystem
+ ShowPortLabels "FromPortIcon"
+ Permissions "ReadWrite"
+ PermitHierarchicalResolution "All"
+ TreatAsAtomicUnit off
+ CheckFcnCallInpInsideContextMsg off
+ SystemSampleTime "-1"
+ RTWFcnNameOpts "Auto"
+ RTWFileNameOpts "Auto"
+ RTWMemSecFuncInitTerm "Inherit from model"
+ RTWMemSecFuncExecute "Inherit from model"
+ RTWMemSecDataConstants "Inherit from model"
+ RTWMemSecDataInternal "Inherit from model"
+ RTWMemSecDataParameters "Inherit from model"
+ SimViewingDevice off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ }
+ Block {
+ BlockType Terminator
+ }
+ }
+ System {
+ Name "unprovable"
+ Location [109, 319, 756, 645]
+ Open on
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ ReportName "simulink-default.rpt"
+ SIDHighWatermark 6
+ Block {
+ BlockType SubSystem
+ Name "f_unprovable"
+ SID 1
+ Ports [2, 1]
+ Position [100, 59, 265, 126]
+ LibraryVersion "1.12"
+ UserDataPersistent on
+ UserData "DataTag0"
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5,"
+ " 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizon"
+ "talAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "f_unprovable"
+ Location [433, 447, 931, 747]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 4
+ Position [35, 38, 65, 52]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 6
+ Position [35, 38, 65, 52]
+ Port "2"
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType SubSystem
+ Name "code"
+ SID 3
+ Ports [2, 1]
+ Position [250, 49, 320, 96]
+ LibraryVersion "1.31"
+ PermitHierarchicalResolution "ExplicitOnly"
+ TreatAsAtomicUnit on
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskType "Stateflow"
+ MaskDescription "Embedded MATLAB block"
+ MaskDisplay "disp('f_unprovable');"
+ MaskSelfModifiable on
+ MaskIconFrame on
+ MaskIconOpaque off
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "autoscale"
+ System {
+ Name "code"
+ Location [257, 457, 812, 717]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ SIDHighWatermark 21
+ SIDPrevWatermark 13
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 21
+ Position [20, 101, 40, 119]
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 19
+ Position [20, 136, 40, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Demux
+ Name " Demux "
+ SID 15
+ Ports [1, 1]
+ Position [270, 160, 320, 200]
+ Outputs "1"
+ }
+ Block {
+ BlockType "S-Function"
+ Name " SFunction "
+ SID 14
+ Tag "Stateflow S-Function unprovable 2"
+ Ports [2, 2]
+ Position [180, 100, 230, 160]
+ FunctionName "sf_sfun"
+ PortCounts "[2 2]"
+ EnableBusSupport off
+ Port {
+ PortNumber 2
+ Name "output"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ }
+ Block {
+ BlockType Terminator
+ Name " Terminator "
+ SID 17
+ Position [460, 171, 480, 189]
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 20
+ Position [460, 101, 480, 119]
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock " SFunction "
+ SrcPort 1
+ DstBlock " Demux "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 2
+ }
+ Line {
+ Name "output"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 2
+ DstBlock "output"
+ DstPort 1
+ }
+ Line {
+ SrcBlock " Demux "
+ SrcPort 1
+ DstBlock " Terminator "
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 5
+ Position [35, 53, 65, 67]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 2
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 1
+ DstBlock "output"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 1
+ }
+ }
+ }
+ Annotation {
+ Name "This model is an example of a table which will not pass the typecheck.\nIt is a 2 dimensional table"
+ " which has problems in both dimensions. Both\nPVS and CVC3 will discover the problems in this table."
+ Position [438, 83]
+ }
+ }
+}
+MatData {
+ NumRecords 1
+ DataRecord {
+ Tag DataTag0
+ Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ! !0 X #0)P !@ @ ) 4"
+ " ( 0 * G ! ( \"@)P %)30 . \"< 8 ( @ % \" $ ! 0 "
+ " % 0 !0 $ % 34-/4P . N\"8 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!"
+ "E "
+ "!R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F#XP X X !@ @ & 4 ( 0 $ ! D "
+ " ( \\#\\. , 8 ( ! % \" $ # 0 0 , >#PP X X !@ @ "
+ " & 4 ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 "
+ " ! 0 & & -T\" 0 $ ( 0 X X !@ @ & 4 ( 0 $ "
+ "! D ( \\#\\. . 8 ( !@ % \" $ ! 0 ) \" "
+ " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX !0 !@ @ "
+ " - 4 ( !P $ ! 8 < W0( ! @ < ) @ . . 8 "
+ "( !@ % \" $ ! 0 ) \" ! #@ #@ & \" 8 !0 @ "
+ " ! 0 $ \"0 @ 0 X !( !@ @ - 4 ( !@ $ ! 8 "
+ "8 W0( ! 0 ( # #@ $@ & \" T !0 @ & 0 $ !@ !@ "
+ " #= @ $ ! \" $ . . 8 ( !@ % \" $ ! 0 ) \" "
+ " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ @ "
+ "& 4 ( 0 $ ! D ( \\#\\. 2 8 ( #0 % \" 8 "
+ " ! 0 & & -T\" 0 $ ' @ X P !@ @ $ 4 ( 0 $ "
+ "! ! 0!X #@ $@ & \" 8 !0 @ ! P $ \"0 !@ #P/P "
+ " / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ "
+ " $ @ X !( !@ @ - 4 ( !@ $ ! 8 8 W0( ! 0 D "
+ "\" #@ # & \" 0 !0 @ ! P $ $ # '@J>0 . 2 8 ( !@ "
+ "% \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - 4 "
+ " ( !@ $ ! 8 8 W0( ! 0 8 \" #@ $@ & \" T !0 @ "
+ " & 0 $ !@ !@ #= @ $ ! !P ( . , 8 ( ! % \" $ "
+ "# 0 0 , >2MX X !( !@ @ & 4 ( 0 , ! D 8 \\#\\"
+ " #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ !"
+ " !@ ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ )"
+ " @ X P !@ @ $ 4 ( 0 $ ! ! 0!Y #@ $@ & \" 8 "
+ " !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 6 8 ( #0 %"
+ " \" D ! 0 & ) -T\" 0 0 # \"@ L , ! . 2 8 "
+ "( #0 % \" 8 ! 0 & & -T\" 0 $ % 0 X !( !@ @ "
+ "- 4 ( !@ $ ! 8 8 W0( ! 0 @ ! #@ $@ & \" T "
+ " !0 @ & 0 $ !@ !@ #= @ $ ! @ , . 2 8 ( #0 % "
+ " \" 8 ! 0 & & -T\" 0 $ % 0 X !( !@ @ - 4 ( "
+ " !@ $ ! 8 8 W0( ! 0 @ ! #@ $ & \" 0 !0 @ ! "
+ " # $ $ P !F7W5N<')O=F%B;&4 #@ # & \" 0 !0 @ ! P $ "
+ "$ # '@L>0 . F $ 8 ( @ % \" $ ! 0 % 0 !P $ C '0 8V5L;%]I;F1E> '!A'1?> &-O;F1I=&EO;E]T97AT7WD !C;VYD:71I;VY?=&5X=%]O9F9S970 9W)I9%]P=7-H7W=I9'1H "
+ " X P !@ @ & 4 ( ! D #@ # & \" 8 !0 "
+ " @ $ \"0 . , 8 ( !@ % \" 0 ) "
+ " X X !@ @ & 4 ( 0 $ ! D ( . , 8 ( !@ "
+ " % \" 0 ) X X !@ @ & 4 ( 0 $ ! D "
+ " ( . . 8 ( !@ % \" $ ! 0 ) \" #@ # "
+ " & \" 8 !0 @ $ \"0 . . 8 ( !@ % \" $"
+ " ! 0 ) \" #@ # & \" 8 !0 @ $ \"0 "
+ " . . 8 ( !@ % \" $ ! 0 ) \" &E #@ #@ & \" "
+ " 8 !0 @ ! 0 $ \"0 @ !.0 X X !@ @ & 4 ( 0 "
+ "$ ! D ( )$ . . 8 ( !@ % \" $ ! 0 ) \" "
+ " \"1 #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ T0 X X !@ "
+ " @ & 4 ( 0 $ ! D ( /D . ^ 8 ( @ % \" "
+ "$ ! 0 % 0 !@ $ 2 0V5L;', 1W)I9#$ 1W)I9#( #@ # & \" 8 !0 @"
+ " $ \"0 . , 8 ( !@ % \" 0 ) X"
+ " P !@ @ & 4 ( ! D #@ ) ! & \" ( !0 @ "
+ " ! 0 $ !0 $ P ! / $-E;&PQ $-E;&PR ')E0)\n if(y>5)\n output = x;\n e"
+ "lseif(y<3)\n output = y+x;\n end\nelseif(x<0)\n if(y>5)\n output = x*y;\n elseif(y<3)\n output = y;\n"
+ " end\nend\n"
+ editorLayout "100 M4x1[205 227 1080 733]"
+ }
+ }
+ junction {
+ id 4
+ position [23.5747 49.5747 7]
+ chart 2
+ linkNode [2 0 0]
+ subviewer 2
+ ssIdNumber 3
+ type CONNECTIVE_JUNCTION
+ }
+ transition {
+ id 5
+ labelString "{eML_blk_kernel();}"
+ labelPosition [32.125 19.875 102.544 14.964]
+ fontSize 12
+ src {
+ intersection [0 0 1 0 23.5747 14.625 0 0]
+ }
+ dst {
+ id 4
+ intersection [7 0 -1 -1 23.5747 42.5747 0 0]
+ }
+ midPoint [23.5747 24.9468]
+ chart 2
+ linkNode [2 0 0]
+ dataLimits [23.575 23.575 14.625 34.575]
+ subviewer 2
+ drawStyle SMART
+ executionOrder 1
+ ssIdNumber 2
+ }
+ data {
+ id 6
+ ssIdNumber 7
+ name "x"
+ linkNode [2 0 7]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 7
+ ssIdNumber 5
+ name "y"
+ linkNode [2 6 8]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 8
+ ssIdNumber 6
+ name "output"
+ linkNode [2 7 0]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ instance {
+ id 9
+ name "f_unprovable/code"
+ machine 1
+ chart 2
+ }
+ target {
+ id 10
+ name "sfun"
+ description "Default Simulink S-Function Target."
+ machine 1
+ linkNode [1 0 0]
+ }
+}
diff --git a/FindJavaObjects/findjobj.asv b/FindJavaObjects/findjobj.asv
new file mode 100644
index 0000000000000000000000000000000000000000..09f556cc99da34ab84c56d05a2e9373bae936489
--- /dev/null
+++ b/FindJavaObjects/findjobj.asv
@@ -0,0 +1,3459 @@
+function [handles,levels,parentIdx,listing] = findjobj(container),varargin)
+%#ok<*CTCH,*ASGLU,*MSNU,*NASGU>
+%findjobj Find java objects contained within a specified java container or Matlab GUI handle
+%
+% Syntax:
+% [handles, levels, parentIds, listing] = findjobj(container, 'PropName',PropValue(s), ...)
+%
+% Input parameters:
+% container - optional handle to java container uipanel or figure. If unsupplied then current figure will be used
+% 'PropName',PropValue - optional list of property pairs (case insensitive). PropName may also be named -PropName
+% 'position' - filter results based on those elements that contain the specified X,Y position or a java element
+% Note: specify a Matlab position (X,Y = pixels from bottom left corner), not a java one
+% 'size' - filter results based on those elements that have the specified W,H (in pixels)
+% 'class' - filter results based on those elements that contain the substring (or java class) PropValue
+% Note1: filtering is case insensitive and relies on regexp, so you can pass wildcards etc.
+% Note2: '-class' is an undocumented findobj PropName, but only works on Matlab (not java) classes
+% 'property' - filter results based on those elements that possess the specified case-insensitive property string
+% Note1: passing a property value is possible if the argument following 'property' is a cell in the
+% format of {'propName','propValue'}. Example: FINDJOBJ(...,'property',{'Text','click me'})
+% Note2: partial property names (e.g. 'Tex') are accepted, as long as they're not ambiguous
+% 'depth' - filter results based on specified depth. 0=top-level, Inf=all levels (default=Inf)
+% 'flat' - same as specifying: 'depth',0
+% 'not' - negates the following filter: 'not','class','c' returns all elements EXCEPT those with class 'c'
+% 'persist' - persist figure components information, allowing much faster results for subsequent invocations
+% 'nomenu' - skip menu processing, for "lean" list of handles & much faster processing;
+% This option is the default for HG containers but not for figure, Java or no container
+% 'print' - display all java elements in a hierarchical list, indented appropriately
+% Note1: optional PropValue of element index or handle to java container
+% Note2: normally this option would be placed last, after all filtering is complete. Placing this
+% option before some filters enables debug print-outs of interim filtering results.
+% Note3: output is to the Matlab command window unless the 'listing' (4th) output arg is requested
+% 'list' - same as 'print'
+% 'debug' - list found component positions in the Command Window
+%
+% Output parameters:
+% handles - list of handles to java elements
+% levels - list of corresponding hierarchy level of the java elements (top=0)
+% parentIds - list of indexes (in unfiltered handles) of the parent container of the corresponding java element
+% listing - results of 'print'/'list' options (empty if these options were not specified)
+%
+% Note: If no output parameter is specified, then an interactive window will be displayed with a
+% ^^^^ tree view of all container components, their properties and callbacks.
+%
+% Examples:
+% findjobj; % display list of all javaelements of currrent figure in an interactive GUI
+% handles = findjobj; % get list of all java elements of current figure (inc. menus, toolbars etc.)
+% findjobj('print'); % list all java elements in current figure
+% findjobj('print',6); % list all java elements in current figure, contained within its 6th element
+% handles = findjobj(hButton); % hButton is a matlab button
+% handles = findjobj(gcf,'position',getpixelposition(hButton,1)); % same as above but also return hButton's panel
+% handles = findjobj(hButton,'persist'); % same as above, persist info for future reuse
+% handles = findjobj('class','pushbutton'); % get all pushbuttons in current figure
+% handles = findjobj('class','pushbutton','position',123,456); % get all pushbuttons at the specified position
+% handles = findjobj(gcf,'class','pushbutton','size',23,15); % get all pushbuttons with the specified size
+% handles = findjobj('property','Text','not','class','button'); % get all non-button elements with 'text' property
+% handles = findjobj('-property',{'Text','click me'}); % get all elements with 'text' property = 'click me'
+%
+% Sample usage:
+% hButton = uicontrol('string','click me');
+% jButton = findjobj(hButton,'nomenu');
+% % or: jButton = findjobj('property',{'Text','click me'});
+% jButton.setFlyOverAppearance(1);
+% jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
+% set(jButton,'FocusGainedCallback',@myMatlabFunction); % some 30 callback points available...
+% jButton.get; % list all changeable properties...
+%
+% hEditbox = uicontrol('style','edit');
+% jEditbox = findjobj(hEditbox,'nomenu');
+% jEditbox.setCaretColor(java.awt.Color.red);
+% jEditbox.KeyTypedCallback = @myCallbackFunc; % many more callbacks where this came from...
+% jEdit.requestFocus;
+%
+% Technical explanation & details:
+% http://undocumentedmatlab.com/blog/findjobj/
+% http://undocumentedmatlab.com/blog/findjobj-gui-display-container-hierarchy/
+%
+% Known issues/limitations:
+% - Cannot currently process multiple container objects - just one at a time
+% - Initial processing is a bit slow when the figure is laden with many UI components (so better use 'persist')
+% - Passing a simple container Matlab handle is currently filtered by its position+size: should find a better way to do this
+% - Matlab uipanels are not implemented as simple java panels, and so they can't be found using this utility
+% - Labels have a write-only text property in java, so they can't be found using the 'property',{'Text','string'} notation
+%
+% Warning:
+% This code heavily relies on undocumented and unsupported Matlab functionality.
+% It works on Matlab 7+, but use at your own risk!
+%
+% Bugs and suggestions:
+% Please send to Yair Altman (altmany at gmail dot com)
+%
+% Change log:
+% 2019-07-03: Additional fix for R2018b; added separate findjobj_fast utility
+% 2018-09-21: Fix for R2018b suggested by Eddie (FEX); speedup suggested by Martin Lehmann (FEX); alert if trying to use with uifigure
+% 2017-04-13: Fixed two edge-cases (one suggested by H. Koch)
+% 2016-04-19: Fixed edge-cases in old Matlab release; slightly improved performance even further
+% 2016-04-14: Improved performance for the most common use-case (single input/output): improved code + allow inspecting groot
+% 2016-04-11: Improved performance for the most common use-case (single input/output)
+% 2015-01-12: Differentiate between overlapping controls (for example in different tabs); fixed case of docked figure
+% 2014-10-20: Additional fixes for R2014a, R2014b
+% 2014-10-13: Fixes for R2014b
+% 2014-01-04: Minor fix for R2014a; check for newer FEX version up to twice a day only
+% 2013-12-29: Only check for newer FEX version in non-deployed mode; handled case of invisible figure container
+% 2013-10-08: Fixed minor edge case (retrieving multiple scroll-panes)
+% 2013-06-30: Additional fixes for the upcoming HG2
+% 2013-05-15: Fix for the upcoming HG2
+% 2013-02-21: Fixed HG-Java warnings
+% 2013-01-23: Fixed callbacks table grouping & editing bugs; added hidden properties to the properties tooltip; updated help section
+% 2013-01-13: Improved callbacks table; fixed tree refresh failure; fixed: tree node-selection didn't update the props pane nor flash the selected component
+% 2012-07-25: Fixes for R2012a as well as some older Matlab releases
+% 2011-12-07: Fixed 'File is empty' messages in compiled apps
+% 2011-11-22: Fix suggested by Ward
+% 2011-02-01: Fixes for R2011a
+% 2010-06-13: Fixes for R2010b; fixed download (m-file => zip-file)
+% 2010-04-21: Minor fix to support combo-boxes (aka drop-down, popup-menu) on Windows
+% 2010-03-17: Important release: Fixes for R2010a, debug listing, objects not found, component containers that should be ignored etc.
+% 2010-02-04: Forced an EDT redraw before processing; warned if requested handle is invisible
+% 2010-01-18: Found a way to display label text next to the relevant node name
+% 2009-10-28: Fixed uitreenode warning
+% 2009-10-27: Fixed auto-collapse of invisible container nodes; added dynamic tree tooltips & context-menu; minor fix to version-check display
+% 2009-09-30: Fix for Matlab 7.0 as suggested by Oliver W; minor GUI fix (classname font)
+% 2009-08-07: Fixed edge-case of missing JIDE tables
+% 2009-05-24: Added support for future Matlab versions that will not support JavaFrame
+% 2009-05-15: Added sanity checks for axes items
+% 2009-04-28: Added 'debug' input arg; increased size tolerance 1px => 2px
+% 2009-04-23: Fixed location of popupmenus (always 20px high despite what's reported by Matlab...); fixed uiinspect processing issues; added blog link; narrower action buttons
+% 2009-04-09: Automatic 'nomenu' for uicontrol inputs; significant performance improvement
+% 2009-03-31: Fixed position of some Java components; fixed properties tooltip; fixed node visibility indication
+% 2009-02-26: Indicated components visibility (& auto-collapse non-visible containers); auto-highlight selected component; fixes in node icons, figure title & tree refresh; improved error handling; display FindJObj version update description if available
+% 2009-02-24: Fixed update check; added dedicated labels icon
+% 2009-02-18: Fixed compatibility with old Matlab versions
+% 2009-02-08: Callbacks table fixes; use uiinspect if available; fix update check according to new FEX website
+% 2008-12-17: R2008b compatibility
+% 2008-09-10: Fixed minor bug as per Johnny Smith
+% 2007-11-14: Fixed edge case problem with class properties tooltip; used existing object icon if available; added checkbox option to hide standard callbacks
+% 2007-08-15: Fixed object naming relative property priorities; added sanity check for illegal container arg; enabled desktop (0) container; cleaned up warnings about special class objects
+% 2007-08-03: Fixed minor tagging problems with a few Java sub-classes; displayed UIClassID if text/name/tag is unavailable
+% 2007-06-15: Fixed problems finding HG components found by J. Wagberg
+% 2007-05-22: Added 'nomenu' option for improved performance; fixed 'export handles' bug; fixed handle-finding/display bugs; "cleaner" error handling
+% 2007-04-23: HTMLized classname tooltip; returned top-level figure Frame handle for figure container; fixed callbacks table; auto-checked newer version; fixed Matlab 7.2 compatibility issue; added HG objects tree
+% 2007-04-19: Fixed edge case of missing figure; displayed tree hierarchy in interactive GUI if no output args; workaround for figure sub-menus invisible unless clicked
+% 2007-04-04: Improved performance; returned full listing results in 4th output arg; enabled partial property names & property values; automatically filtered out container panels if children also returned; fixed finding sub-menu items
+% 2007-03-20: First version posted on the MathWorks file exchange: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317
+%
+% See also:
+% java, handle, findobj, findall, javaGetHandles, uiinspect (on the File Exchange)
+
+% License to use and modify this code is granted freely to all interested, as long as the original author is
+% referenced and attributed as such. The original author maintains the right to be solely associated with this work.
+
+% Programmed and Copyright by Yair M. Altman: altmany(at)gmail.com
+% $Revision: 1.52 $ $Date: 2019/07/03 19:09:23 $
+
+ % Ensure Java AWT is enabled
+ error(javachk('awt'));
+
+ persistent pContainer pHandles pLevels pParentIdx pPositions
+
+ try
+ % Initialize
+ handles = handle([]);
+ levels = [];
+ parentIdx = [];
+ positions = []; % Java positions start at the top-left corner
+ %sizes = [];
+ listing = '';
+ hg_levels = [];
+ hg_handles = handle([]); % HG handles are double
+ hg_parentIdx = [];
+ nomenu = false;
+ menuBarFoundFlag = false;
+ hFig = [];
+
+ % Force an EDT redraw before processing, to ensure all uicontrols etc. are rendered
+ drawnow; pause(0.02);
+
+ % Default container is the current figure's root panel
+ if nargin
+ if isempty(container) % empty container - bail out
+ return;
+ elseif ischar(container) % container skipped - this is part of the args list...
+ varargin = [{container}, varargin];
+ origContainer = getCurrentFigure;
+ [container,contentSize] = getRootPanel(origContainer);
+ elseif isequal(container,0) % root
+ origContainer = handle(container);
+ container = com.mathworks.mde.desk.MLDesktop.getInstance.getMainFrame;
+ contentSize = [container.getWidth, container.getHeight];
+ elseif ishghandle(container) % && ~isa(container,'java.awt.Container')
+ container = container(1); % another current limitation...
+ hFig = ancestor(container,'figure');
+ oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ try hJavaFrame = get(hFig,'JavaFrame'); catch, hJavaFrame = []; end
+ warning(oldWarn);
+ if isempty(hJavaFrame) % alert if trying to use with web-based (not Java-based) uifigure
+ error('YMA:findjobj:NonJavaFigure', 'Findjobj only works with Java-based figures, not web-based (App Designer) uifigures');
+ end
+ origContainer = handle(container);
+ if isa(origContainer,'uimenu') || isa(origContainer,'matlab.ui.container.Menu')
+ % getpixelposition doesn't work for menus... - damn!
+ varargin = {'class','MenuPeer', 'property',{'Label',strrep(get(container,'Label'),'&','')}, varargin{:}};
+ elseif ~isa(origContainer, 'figure') && ~isempty(hFig) && ~isa(origContainer, 'matlab.ui.Figure')
+ % For a single input & output, try using the fast variant
+ if nargin==1 && nargout==1
+ try
+ handles = findjobj_fast(container);
+ if ~isempty(handles)
+ try handles = handle(handles,'callbackproperties'); catch, end
+ return
+ end
+ catch
+ % never mind - proceed normally using the slower variant below...
+ end
+ end
+
+ % See limitations section above: should find a better way to directly refer to the element's java container
+ try
+ % Note: 'PixelBounds' is undocumented and unsupported, but much faster than getpixelposition!
+ % ^^^^ unfortunately, its Y position is inaccurate in some cases - damn!
+ %size = get(container,'PixelBounds');
+ pos = fix(getpixelposition(container,1));
+ %varargin = {'position',pos(1:2), 'size',pos(3:4), 'not','class','java.awt.Panel', varargin{:}};
+ catch
+ try
+ figName = get(hFig,'name');
+ if strcmpi(get(hFig,'number'),'on')
+ figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $','');
+ end
+ mde = com.mathworks.mde.desk.MLDesktop.getInstance;
+ jFig = mde.getClient(figName);
+ if isempty(jFig), error('dummy'); end
+ catch
+ jFig = get(hJavaFrame,'FigurePanelContainer');
+ end
+ pos = [];
+ try
+ pxsize = get(container,'PixelBounds');
+ pos = [pxsize(1)+5, jFig.getHeight - (pxsize(4)-5)];
+ catch
+ % never mind...
+ end
+ end
+ if size(pos,2) == 2
+ pos(:,3:4) = 0;
+ end
+ if ~isempty(pos)
+ if isa(handle(container),'uicontrol') && strcmp(get(container,'style'),'popupmenu')
+ % popupmenus (combo-box dropdowns) are always 20px high
+ pos(2) = pos(2) + pos(4) - 20;
+ pos(4) = 20;
+ end
+ %varargin = {'position',pos(1:2), 'size',size(3:4)-size(1:2)-10, 'not','class','java.awt.Panel', varargin{:}};
+ varargin = {'position',pos(1:2)+[0,pos(4)], 'size',pos(3:4), 'not','class','java.awt.Panel', 'nomenu', varargin{:}};
+ end
+ elseif isempty(hFig)
+ hFig = handle(container);
+ end
+ [container,contentSize] = getRootPanel(hFig);
+ elseif isjava(container)
+ % Maybe a java container obj (will crash otherwise)
+ origContainer = container;
+ contentSize = [container.getWidth, container.getHeight];
+ else
+ error('YMA:findjobj:IllegalContainer','Input arg does not appear to be a valid GUI object');
+ end
+ else
+ % Default container = current figure
+ origContainer = getCurrentFigure;
+ [container,contentSize] = getRootPanel(origContainer);
+ end
+
+ % Check persistency
+ if isequal(pContainer,container)
+ % persistency requested and the same container is reused, so reuse the hierarchy information
+ [handles,levels,parentIdx,positions] = deal(pHandles, pLevels, pParentIdx, pPositions);
+ else
+ % Pre-allocate space of complex data containers for improved performance
+ handles = repmat(handles,1,1000);
+ positions = zeros(1000,2);
+
+ % Check whether to skip menu processing
+ nomenu = paramSupplied(varargin,'nomenu');
+
+ % Traverse the container hierarchy and extract the elements within
+ traverseContainer(container,0,1);
+
+ % Remove unnecessary pre-allocated elements
+ dataLen = length(levels);
+ handles (dataLen+1:end) = [];
+ positions(dataLen+1:end,:) = [];
+ end
+
+ % Process persistency check before any filtering is done
+ if paramSupplied(varargin,'persist')
+ [pContainer, pHandles, pLevels, pParentIdx, pPositions] = deal(container,handles,levels,parentIdx,positions);
+ end
+
+ % Save data for possible future use in presentObjectTree() below
+ allHandles = handles;
+ allLevels = levels;
+ allParents = parentIdx;
+ selectedIdx = 1:length(handles);
+ %[positions(:,1)-container.getX, container.getHeight - positions(:,2)]
+
+ % Debug-list all found compponents and their positions
+ if paramSupplied(varargin,'debug')
+ for origHandleIdx = 1 : length(allHandles)
+ thisObj = handles(origHandleIdx);
+ pos = sprintf('%d,%d %dx%d',[positions(origHandleIdx,:) getWidth(thisObj) getHeight(thisObj)]);
+ disp([repmat(' ',1,levels(origHandleIdx)) '[' pos '] ' char(toString(thisObj))]);
+ end
+ end
+
+ % Process optional args
+ % Note: positions is NOT returned since it's based on java coord system (origin = top-left): will confuse Matlab users
+ processArgs(varargin{:});
+
+ % De-cell and trim listing, if only one element was found (no use for indented listing in this case)
+ if iscell(listing) && length(listing)==1
+ listing = strtrim(listing{1});
+ end
+
+ % If no output args and no listing requested, present the FINDJOBJ interactive GUI
+ if nargout == 0 && isempty(listing)
+
+ % Get all label positions
+ hg_labels = [];
+ labelPositions = getLabelsJavaPos(container);
+
+ % Present the GUI (object tree)
+ if ~isempty(container)
+ presentObjectTree();
+ else
+ warnInvisible(varargin{:});
+ end
+
+ % Display the listing, if this was specifically requested yet no relevant output arg was specified
+ elseif nargout < 4 && ~isempty(listing)
+ if ~iscell(listing)
+ disp(listing);
+ else
+ for listingIdx = 1 : length(listing)
+ disp(listing{listingIdx});
+ end
+ end
+ end
+
+ % If the number of output handles does not match the number of inputs, try to match via tooltips
+ if nargout && numel(handles) ~= numel(origContainer)
+ newHandles = handle([]);
+ switchHandles = false;
+ handlesToCheck = handles;
+ if isempty(handles)
+ handlesToCheck = allHandles;
+ end
+ for origHandleIdx = 1 : numel(origContainer)
+ try
+ thisContainer = origContainer(origHandleIdx);
+ if isa(thisContainer,'figure') || isa(thisContainer,'matlab.ui.Figure')
+ break;
+ end
+ try
+ newHandles(origHandleIdx) = handlesToCheck(origHandleIdx); %#ok
+ catch
+ % maybe no corresponding handle in [handles]
+ end
+
+ % Assign a new random tooltip to the original (Matlab) handle
+ oldTooltip = get(thisContainer,'Tooltip');
+ newTooltip = num2str(rand,99);
+ try
+ set(thisContainer,'TooltipString',newTooltip);
+ catch
+ set(thisContainer,'Tooltip',newTooltip);
+ end
+ drawnow; % force the Java handle to sync with the Matlab prop-change
+ try
+ % Search for a Java handle that has the newly-generated tooltip
+ for newHandleIdx = 1 : numel(handlesToCheck)
+ testTooltip = '';
+ thisHandle = handlesToCheck(newHandleIdx);
+ try
+ testTooltip = char(thisHandle.getToolTipText);
+ catch
+ try testTooltip = char(thisHandle.getTooltipText); catch, end
+ end
+ if isempty(testTooltip)
+ % One more attempt - assume it's enclosed by a scroll-pane
+ try testTooltip = char(thisHandle.getViewport.getView.getToolTipText); catch, end
+ end
+ if strcmp(testTooltip, newTooltip)
+ newHandles(origHandleIdx) = thisHandle;
+ switchHandles = true;
+ break;
+ end
+ end
+ catch
+ % never mind - skip to the next handle
+ end
+ set(thisContainer,'Tooltip',oldTooltip);
+ catch
+ % never mind - skip to the next handle (maybe handle doesn't have a tooltip prop)
+ end
+ end
+ if switchHandles
+ handles = newHandles;
+ end
+ end
+
+ % Display a warning if the requested handle was not found because it's invisible
+ if nargout && isempty(handles)
+ warnInvisible(varargin{:});
+ end
+
+ return; %debug point
+
+ catch
+ % 'Cleaner' error handling - strip the stack info etc.
+ err = lasterror; %#ok
+ err.message = regexprep(err.message,'Error using ==> [^\n]+\n','');
+ if isempty(findstr(mfilename,err.message))
+ % Indicate error origin, if not already stated within the error message
+ err.message = [mfilename ': ' err.message];
+ end
+ rethrow(err);
+ end
+
+ %% Display a warning if the requested handle was not found because it's invisible
+ function warnInvisible(varargin)
+ try
+ if strcmpi(get(hFig,'Visible'),'off')
+ pos = get(hFig,'Position');
+ set(hFig, 'Position',pos-[5000,5000,0,0], 'Visible','on');
+ drawnow; pause(0.01);
+ [handles,levels,parentIdx,listing] = findjobj(origContainer,varargin{:});
+ set(hFig, 'Position',pos, 'Visible','off');
+ end
+ catch
+ % ignore - move on...
+ end
+ try
+ stk = dbstack;
+ stkNames = {stk.name};
+ OutputFcnIdx = find(~cellfun(@isempty,regexp(stkNames,'_OutputFcn')));
+ if ~isempty(OutputFcnIdx)
+ OutputFcnName = stkNames{OutputFcnIdx};
+ warning('YMA:FindJObj:OutputFcn',['No Java reference was found for the requested handle, because the figure is still invisible in ' OutputFcnName '()']);
+ elseif ishandle(origContainer) && isprop(origContainer,'Visible') && strcmpi(get(origContainer,'Visible'),'off')
+ warning('YMA:FindJObj:invisibleHandle','No Java reference was found for the requested handle, probably because it is still invisible');
+ end
+ catch
+ % Never mind...
+ end
+ end
+
+ %% Check existence of a (case-insensitive) optional parameter in the params list
+ function [flag,idx] = paramSupplied(paramsList,paramName)
+ %idx = find(~cellfun('isempty',regexpi(paramsList(cellfun(@ischar,paramsList)),['^-?' paramName])));
+ idx = find(~cellfun('isempty',regexpi(paramsList(cellfun('isclass',paramsList,'char')),['^-?' paramName]))); % 30/9/2009 fix for ML 7.0 suggested by Oliver W
+ flag = any(idx);
+ end
+
+ %% Get current figure (even if its 'HandleVisibility' property is 'off')
+ function curFig = getCurrentFigure
+ oldShowHidden = get(0,'ShowHiddenHandles');
+ set(0,'ShowHiddenHandles','on'); % minor fix per Johnny Smith
+ curFig = gcf;
+ set(0,'ShowHiddenHandles',oldShowHidden);
+ end
+
+ %% Get Java reference to top-level (root) panel - actually, a reference to the java figure
+ function [jRootPane,contentSize] = getRootPanel(hFig)
+ try
+ contentSize = [0,0]; % initialize
+ jRootPane = hFig;
+ figName = get(hFig,'name');
+ if strcmpi(get(hFig,'number'),'on')
+ figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $','');
+ end
+ mde = com.mathworks.mde.desk.MLDesktop.getInstance;
+ jFigPanel = mde.getClient(figName);
+ jRootPane = jFigPanel;
+ jRootPane = jFigPanel.getRootPane;
+ catch
+ try
+ warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ jFrame = get(hFig,'JavaFrame');
+ jFigPanel = get(jFrame,'FigurePanelContainer');
+ jRootPane = jFigPanel;
+ jRootPane = jFigPanel.getComponent(0).getRootPane;
+ catch
+ % Never mind
+ end
+ end
+ try
+ % If invalid RootPane - try another method...
+ warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ jFrame = get(hFig,'JavaFrame');
+ jAxisComponent = get(jFrame,'AxisComponent');
+ jRootPane = jAxisComponent.getParent.getParent.getRootPane;
+ catch
+ % Never mind
+ end
+ try
+ % If invalid RootPane, retry up to N times
+ tries = 10;
+ while isempty(jRootPane) && tries>0 % might happen if figure is still undergoing rendering...
+ drawnow; pause(0.001);
+ tries = tries - 1;
+ jRootPane = jFigPanel.getComponent(0).getRootPane;
+ end
+
+ % If still invalid, use FigurePanelContainer which is good enough in 99% of cases... (menu/tool bars won't be accessible, though)
+ if isempty(jRootPane)
+ jRootPane = jFigPanel;
+ end
+ contentSize = [jRootPane.getWidth, jRootPane.getHeight];
+
+ % Try to get the ancestor FigureFrame
+ jRootPane = jRootPane.getTopLevelAncestor;
+ catch
+ % Never mind - FigurePanelContainer is good enough in 99% of cases... (menu/tool bars won't be accessible, though)
+ end
+ end
+
+ %% Traverse the container hierarchy and extract the elements within
+ function traverseContainer(jcontainer,level,parent)
+ persistent figureComponentFound menuRootFound
+
+ % Record the data for this node
+ %disp([repmat(' ',1,level) '<= ' char(jcontainer.toString)])
+ thisIdx = length(levels) + 1;
+ levels(thisIdx) = level;
+ parentIdx(thisIdx) = parent;
+ try newHandle = handle(jcontainer,'callbackproperties'); catch, newHandle = handle(jcontainer); end
+ try handles(thisIdx) = newHandle; catch, handles = newHandle; end
+ try
+ positions(thisIdx,:) = getXY(jcontainer);
+ %sizes(thisIdx,:) = [jcontainer.getWidth, jcontainer.getHeight];
+ catch
+ positions(thisIdx,:) = [0,0];
+ %sizes(thisIdx,:) = [0,0];
+ end
+ if level>0
+ positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:);
+ if ~figureComponentFound && ...
+ strcmp(jcontainer.getName,'fComponentContainer') && ...
+ isa(jcontainer,'com.mathworks.hg.peer.FigureComponentContainer') % there are 2 FigureComponentContainers - only process one...
+
+ % restart coordinate system, to exclude menu & toolbar areas
+ positions(thisIdx,:) = positions(thisIdx,:) - [jcontainer.getRootPane.getX, jcontainer.getRootPane.getY];
+ figureComponentFound = true;
+ end
+ elseif level==1
+ positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:);
+ else
+ % level 0 - initialize flags used later
+ figureComponentFound = false;
+ menuRootFound = false;
+ end
+ parentId = length(parentIdx);
+
+ % Traverse Menu items, unless the 'nomenu' option was requested
+ if ~nomenu
+ try
+ for child = 1 : getNumMenuComponents(jcontainer)
+ traverseContainer(jcontainer.getMenuComponent(child-1),level+1,parentId);
+ end
+ catch
+ % Probably not a Menu container, but maybe a top-level JMenu, so discard duplicates
+ %if isa(handles(end).java,'javax.swing.JMenuBar')
+ if ~menuRootFound && strcmp(class(java(handles(end))),'javax.swing.JMenuBar') %faster...
+ if removeDuplicateNode(thisIdx)
+ menuRootFound = true;
+ return;
+ end
+ end
+ end
+ end
+
+ % Now recursively process all this node's children (if any), except menu items if so requested
+ %if isa(jcontainer,'java.awt.Container')
+ try % try-catch is faster than checking isa(jcontainer,'java.awt.Container')...
+ %if jcontainer.getComponentCount, jcontainer.getComponents, end
+ if ~nomenu || menuBarFoundFlag || isempty(strfind(class(jcontainer),'FigureMenuBar'))
+ lastChildComponent = java.lang.Object;
+ child = 0;
+ while (child < jcontainer.getComponentCount)
+ childComponent = jcontainer.getComponent(child);
+ % Looping over menus sometimes causes jcontainer to get mixed up (probably a JITC bug), so identify & fix
+ if isequal(childComponent,lastChildComponent)
+ child = child + 1;
+ childComponent = jcontainer.getComponent(child);
+ end
+ lastChildComponent = childComponent;
+ %disp([repmat(' ',1,level) '=> ' num2str(child) ': ' char(class(childComponent))])
+ traverseContainer(childComponent,level+1,parentId);
+ child = child + 1;
+ end
+ else
+ menuBarFoundFlag = true; % use this flag to skip further testing for FigureMenuBar
+ end
+ catch
+ % do nothing - probably not a container
+ %dispError
+ end
+
+ % ...and yet another type of child traversal...
+ try
+ if ~isdeployed % prevent 'File is empty' messages in compiled apps
+ jc = jcontainer.java;
+ else
+ jc = jcontainer;
+ end
+ for child = 1 : jc.getChildCount
+ traverseContainer(jc.getChildAt(child-1),level+1,parentId);
+ end
+ catch
+ % do nothing - probably not a container
+ %dispError
+ end
+
+ % TODO: Add axis (plot) component handles
+ end
+
+ %% Get the XY location of a Java component
+ function xy = getXY(jcontainer)
+ % Note: getX/getY are better than get(..,'X') (mem leaks),
+ % ^^^^ but sometimes they fail and revert to getx.m ...
+ % Note2: try awtinvoke() catch is faster than checking ismethod()...
+ % Note3: using AWTUtilities.invokeAndWait() directly is even faster than awtinvoke()...
+ try %if ismethod(jcontainer,'getX')
+ %positions(thisIdx,:) = [jcontainer.getX, jcontainer.getY];
+ cls = getClass(jcontainer);
+ location = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getLocation',[]),[]);
+ x = location.getX;
+ y = location.getY;
+ catch %else
+ try
+ x = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getX',[]),[]);
+ y = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getY',[]),[]);
+ catch
+ try
+ x = awtinvoke(jcontainer,'getX()');
+ y = awtinvoke(jcontainer,'getY()');
+ catch
+ x = get(jcontainer,'X');
+ y = get(jcontainer,'Y');
+ end
+ end
+ end
+ %positions(thisIdx,:) = [x, y];
+ xy = [x,y];
+ end
+
+ %% Get the number of menu sub-elements
+ function numMenuComponents = getNumMenuComponents(jcontainer)
+
+ % The following line will raise an Exception for anything except menus
+ numMenuComponents = jcontainer.getMenuComponentCount;
+
+ % No error so far, so this must be a menu container...
+ % Note: Menu subitems are not visible until the top-level (root) menu gets initial focus...
+ % Try several alternatives, until we get a non-empty menu (or not...)
+ % TODO: Improve performance - this takes WAY too long...
+ if jcontainer.isTopLevelMenu && (numMenuComponents==0)
+ jcontainer.requestFocus;
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ drawnow; pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ jcontainer.setSelected(true);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ drawnow; pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ jcontainer.doClick; % needed in order to populate the sub-menu components
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ drawnow; %pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ jcontainer.doClick; % close menu by re-clicking...
+ if (numMenuComponents == 0)
+ drawnow; %pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ end
+ else
+ % ok - found sub-items
+ % Note: no need to close menu since this will be done when focus moves to the FindJObj window
+ %jcontainer.doClick; % close menu by re-clicking...
+ end
+ end
+ end
+ jcontainer.setSelected(false); % de-select the menu
+ end
+ end
+ end
+ end
+
+ %% Remove a specific tree node's data
+ function nodeRemovedFlag = removeDuplicateNode(thisIdx)
+ nodeRemovedFlag = false;
+ for idx = 1 : thisIdx-1
+ if isequal(handles(idx),handles(thisIdx))
+ levels(thisIdx) = [];
+ parentIdx(thisIdx) = [];
+ handles(thisIdx) = [];
+ positions(thisIdx,:) = [];
+ %sizes(thisIdx,:) = [];
+ nodeRemovedFlag = true;
+ return;
+ end
+ end
+ end
+
+ %% Process optional args
+ function processArgs(varargin)
+
+ % Initialize
+ invertFlag = false;
+ listing = '';
+
+ % Loop over all optional args
+ while ~isempty(varargin) && ~isempty(handles)
+
+ % Process the arg (and all its params)
+ foundIdx = 1 : length(handles);
+ if iscell(varargin{1}), varargin{1} = varargin{1}{1}; end
+ if ~isempty(varargin{1}) && varargin{1}(1)=='-'
+ varargin{1}(1) = [];
+ end
+ switch lower(varargin{1})
+ case 'not'
+ invertFlag = true;
+ case 'position'
+ [varargin,foundIdx] = processPositionArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'size'
+ [varargin,foundIdx] = processSizeArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'class'
+ [varargin,foundIdx] = processClassArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'property'
+ [varargin,foundIdx] = processPropertyArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'depth'
+ [varargin,foundIdx] = processDepthArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'flat'
+ varargin = {'depth',0, varargin{min(2:end):end}};
+ [varargin,foundIdx] = processDepthArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case {'print','list'}
+ [varargin,listing] = processPrintArgs(varargin{:});
+ case {'persist','nomenu','debug'}
+ % ignore - already handled in main function above
+ otherwise
+ error('YMA:findjobj:IllegalOption',['Option ' num2str(varargin{1}) ' is not a valid option. Type ''help ' mfilename ''' for the full options list.']);
+ end
+
+ % If only parent-child pairs found
+ foundIdx = find(foundIdx);
+ if ~isempty(foundIdx) && isequal(parentIdx(foundIdx(2:2:end)),foundIdx(1:2:end))
+ % Return just the children (the parent panels are uninteresting)
+ foundIdx(1:2:end) = [];
+ end
+
+ % If several possible handles were found and the first is the container of the second
+ if length(foundIdx) == 2 && isequal(handles(foundIdx(1)).java, handles(foundIdx(2)).getParent)
+ % Discard the uninteresting component container
+ foundIdx(1) = [];
+ end
+
+ % Filter the results
+ selectedIdx = selectedIdx(foundIdx);
+ handles = handles(foundIdx);
+ levels = levels(foundIdx);
+ parentIdx = parentIdx(foundIdx);
+ positions = positions(foundIdx,:);
+
+ % Remove this arg and proceed to the next one
+ varargin(1) = [];
+
+ end % Loop over all args
+ end
+
+ %% Process 'print' option
+ function [varargin,listing] = processPrintArgs(varargin)
+ if length(varargin)<2 || ischar(varargin{2})
+ % No second arg given, so use the first available element
+ listingContainer = handles(1); %#ok - used in evalc below
+ else
+ % Get the element to print from the specified second arg
+ if isnumeric(varargin{2}) && (varargin{2} == fix(varargin{2})) % isinteger doesn't work on doubles...
+ if (varargin{2} > 0) && (varargin{2} <= length(handles))
+ listingContainer = handles(varargin{2}); %#ok - used in evalc below
+ elseif varargin{2} > 0
+ error('YMA:findjobj:IllegalPrintFilter','Print filter index %g > number of available elements (%d)',varargin{2},length(handles));
+ else
+ error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or positive numeric index into handles');
+ end
+ elseif ismethod(varargin{2},'list')
+ listingContainer = varargin{2}; %#ok - used in evalc below
+ else
+ error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or numeric index into handles');
+ end
+ varargin(2) = [];
+ end
+
+ % use evalc() to capture output into a Matlab variable
+ %listing = evalc('listingContainer.list');
+
+ % Better solution: loop over all handles and process them one by one
+ listing = cell(length(handles),1);
+ for componentIdx = 1 : length(handles)
+ listing{componentIdx} = [repmat(' ',1,levels(componentIdx)) char(handles(componentIdx).toString)];
+ end
+ end
+
+ %% Process 'position' option
+ function [varargin,foundIdx] = processPositionArgs(varargin)
+ if length(varargin)>1
+ positionFilter = varargin{2};
+ %if (isjava(positionFilter) || iscom(positionFilter)) && ismethod(positionFilter,'getLocation')
+ try % try-catch is faster...
+ % Java/COM object passed - get its position
+ positionFilter = positionFilter.getLocation;
+ filterXY = [positionFilter.getX, positionFilter.getY];
+ catch
+ if ~isscalar(positionFilter)
+ % position vector passed
+ if (length(positionFilter)>=2) && isnumeric(positionFilter)
+ % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left...
+ %positionFilter = java.awt.Point(positionFilter(1), container.getHeight - positionFilter(2));
+ filterXY = [container.getX + positionFilter(1), container.getY + contentSize(2) - positionFilter(2)];
+
+ % Check for full Matlab position vector (x,y,w,h)
+ %if (length(positionFilter)==4)
+ % varargin{end+1} = 'size';
+ % varargin{end+1} = fix(positionFilter(3:4));
+ %end
+ else
+ error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair');
+ end
+ elseif length(varargin)>2
+ % x,y passed as separate arg values
+ if isnumeric(positionFilter) && isnumeric(varargin{3})
+ % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left...
+ %positionFilter = java.awt.Point(positionFilter, container.getHeight - varargin{3});
+ filterXY = [container.getX + positionFilter, container.getY + contentSize(2) - varargin{3}];
+ varargin(3) = [];
+ else
+ error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair');
+ end
+ else
+ error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair');
+ end
+ end
+
+ % Compute the required element positions in order to be eligible for a more detailed examination
+ % Note: based on the following constraints: 0 <= abs(elementX-filterX) + abs(elementY+elementH-filterY) < 7
+ baseDeltas = [positions(:,1)-filterXY(1), positions(:,2)-filterXY(2)]; % faster than repmat()...
+ %baseHeight = - baseDeltas(:,2);% -abs(baseDeltas(:,1));
+ %minHeight = baseHeight - 7;
+ %maxHeight = baseHeight + 7;
+ %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',positionFilter)),handles); % ARGH! - disallowed by Matlab!
+ %foundIdx = repmat(false,1,length(handles));
+ %foundIdx(length(handles)) = false; % faster than repmat()...
+ foundIdx = (abs(baseDeltas(:,1)) < 7) & (abs(baseDeltas(:,2)) < 7); % & (minHeight >= 0);
+ %fi = find(foundIdx);
+ %for componentIdx = 1 : length(fi)
+ %foundIdx(componentIdx) = handles(componentIdx).getBounds.contains(positionFilter);
+
+ % Search for a point no farther than 7 pixels away (prevents rounding errors)
+ %foundIdx(componentIdx) = handles(componentIdx).getLocationOnScreen.distanceSq(positionFilter) < 50; % fails for invisible components...
+
+ %p = java.awt.Point(positions(componentIdx,1), positions(componentIdx,2) + handles(componentIdx).getHeight);
+ %foundIdx(componentIdx) = p.distanceSq(positionFilter) < 50;
+
+ %foundIdx(componentIdx) = sum(([baseDeltas(componentIdx,1),baseDeltas(componentIdx,2)+handles(componentIdx).getHeight]).^2) < 50;
+
+ % Following is the fastest method found to date: only eligible elements are checked in detailed
+ % elementHeight = handles(fi(componentIdx)).getHeight;
+ % foundIdx(fi(componentIdx)) = elementHeight > minHeight(fi(componentIdx)) && ...
+ % elementHeight < maxHeight(fi(componentIdx));
+ %disp([componentIdx,elementHeight,minHeight(fi(componentIdx)),maxHeight(fi(componentIdx)),foundIdx(fi(componentIdx))])
+ %end
+
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'size' option
+ function [varargin,foundIdx] = processSizeArgs(varargin)
+ if length(varargin)>1
+ sizeFilter = lower(varargin{2});
+ %if (isjava(sizeFilter) || iscom(sizeFilter)) && ismethod(sizeFilter,'getSize')
+ try % try-catch is faster...
+ % Java/COM object passed - get its size
+ sizeFilter = sizeFilter.getSize;
+ filterWidth = sizeFilter.getWidth;
+ filterHeight = sizeFilter.getHeight;
+ catch
+ if ~isscalar(sizeFilter)
+ % size vector passed
+ if (length(sizeFilter)>=2) && isnumeric(sizeFilter)
+ %sizeFilter = java.awt.Dimension(sizeFilter(1),sizeFilter(2));
+ filterWidth = sizeFilter(1);
+ filterHeight = sizeFilter(2);
+ else
+ error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair');
+ end
+ elseif length(varargin)>2
+ % w,h passed as separate arg values
+ if isnumeric(sizeFilter) && isnumeric(varargin{3})
+ %sizeFilter = java.awt.Dimension(sizeFilter,varargin{3});
+ filterWidth = sizeFilter;
+ filterHeight = varargin{3};
+ varargin(3) = [];
+ else
+ error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair');
+ end
+ else
+ error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair');
+ end
+ end
+ %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',sizeFilter)),handles); % ARGH! - disallowed by Matlab!
+ foundIdx(length(handles)) = false; % faster than repmat()...
+ for componentIdx = 1 : length(handles)
+ %foundIdx(componentIdx) = handles(componentIdx).getSize.equals(sizeFilter);
+ % Allow a 2-pixel tollerance to account for non-integer pixel sizes
+ foundIdx(componentIdx) = abs(handles(componentIdx).getWidth - filterWidth) <= 3 && ... % faster than getSize.equals()
+ abs(handles(componentIdx).getHeight - filterHeight) <= 3;
+ end
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'class' option
+ function [varargin,foundIdx] = processClassArgs(varargin)
+ if length(varargin)>1
+ classFilter = varargin{2};
+ %if ismethod(classFilter,'getClass')
+ try % try-catch is faster...
+ classFilter = char(classFilter.getClass);
+ catch
+ if ~ischar(classFilter)
+ error('YMA:findjobj:IllegalClassFilter','Class filter must be a java object, class or string');
+ end
+ end
+
+ % Now convert all java classes to java.lang.Strings and compare to the requested filter string
+ try
+ foundIdx(length(handles)) = false; % faster than repmat()...
+ jClassFilter = java.lang.String(classFilter).toLowerCase;
+ for componentIdx = 1 : length(handles)
+ % Note: JVM 1.5's String.contains() appears slightly slower and is available only since Matlab 7.2
+ foundIdx(componentIdx) = handles(componentIdx).getClass.toString.toLowerCase.indexOf(jClassFilter) >= 0;
+ end
+ catch
+ % Simple processing: slower since it does extra processing within opaque.char()
+ for componentIdx = 1 : length(handles)
+ % Note: using @toChar is faster but returns java String, not a Matlab char
+ foundIdx(componentIdx) = ~isempty(regexpi(char(handles(componentIdx).getClass),classFilter));
+ end
+ end
+
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'property' option
+ function [varargin,foundIdx] = processPropertyArgs(varargin)
+ if length(varargin)>1
+ propertyName = varargin{2};
+ if iscell(propertyName)
+ if length(propertyName) == 2
+ propertyVal = propertyName{2};
+ propertyName = propertyName{1};
+ elseif length(propertyName) == 1
+ propertyName = propertyName{1};
+ else
+ error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}');
+ end
+ end
+ if ~ischar(propertyName)
+ error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}');
+ end
+ propertyName = lower(propertyName);
+ %foundIdx = arrayfun(@(h)isprop(h,propertyName),handles); % ARGH! - disallowed by Matlab!
+ foundIdx(length(handles)) = false; % faster than repmat()...
+
+ % Split processing depending on whether a specific property value was requested (ugly but faster...)
+ if exist('propertyVal','var')
+ for componentIdx = 1 : length(handles)
+ try
+ % Find out whether this element has the specified property
+ % Note: findprop() and its return value schema.prop are undocumented and unsupported!
+ prop = findprop(handles(componentIdx),propertyName); % faster than isprop() & enables partial property names
+
+ % If found, compare it to the actual element's property value
+ foundIdx(componentIdx) = ~isempty(prop) && isequal(get(handles(componentIdx),prop.Name),propertyVal);
+ catch
+ % Some Java classes have a write-only property (like LabelPeer with 'Text'), so we end up here
+ % In these cases, simply assume that the property value doesn't match and continue
+ foundIdx(componentIdx) = false;
+ end
+ end
+ else
+ for componentIdx = 1 : length(handles)
+ try
+ % Find out whether this element has the specified property
+ % Note: findprop() and its return value schema.prop are undocumented and unsupported!
+ foundIdx(componentIdx) = ~isempty(findprop(handles(componentIdx),propertyName));
+ catch
+ foundIdx(componentIdx) = false;
+ end
+ end
+ end
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'depth' option
+ function [varargin,foundIdx] = processDepthArgs(varargin)
+ if length(varargin)>1
+ level = varargin{2};
+ if ~isnumeric(level)
+ error('YMA:findjobj:IllegalDepthFilter','Depth filter must be a number (=maximal element depth)');
+ end
+ foundIdx = (levels <= level);
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Convert property data into a string
+ function data = charizeData(data)
+ if isa(data,'com.mathworks.hg.types.HGCallback')
+ data = get(data,'Callback');
+ end
+ if ~ischar(data) && ~isa(data,'java.lang.String')
+ newData = strtrim(evalc('disp(data)'));
+ try
+ newData = regexprep(newData,' +',' ');
+ newData = regexprep(newData,'Columns \d+ through \d+\s','');
+ newData = regexprep(newData,'Column \d+\s','');
+ catch
+ %never mind...
+ end
+ if iscell(data)
+ newData = ['{ ' newData ' }'];
+ elseif isempty(data)
+ newData = '';
+ elseif isnumeric(data) || islogical(data) || any(ishandle(data)) || numel(data) > 1 %&& ~isscalar(data)
+ newData = ['[' newData ']'];
+ end
+ data = newData;
+ elseif ~isempty(data)
+ data = ['''' data ''''];
+ end
+ end % charizeData
+
+ %% Prepare a hierarchical callbacks table data
+ function setProp(list,name,value,category)
+ prop = eval('com.jidesoft.grid.DefaultProperty();'); % prevent JIDE alert by run-time (not load-time) evaluation
+ prop.setName(name);
+ prop.setType(java.lang.String('').getClass);
+ prop.setValue(value);
+ prop.setEditable(true);
+ prop.setExpert(true);
+ %prop.setCategory(['' category ' callbacks']);
+ prop.setCategory([category ' callbacks']);
+ list.add(prop);
+ end % getTreeData
+
+ %% Prepare a hierarchical callbacks table data
+ function list = getTreeData(data)
+ list = java.util.ArrayList();
+ names = regexprep(data,'([A-Z][a-z]+).*','$1');
+ %hash = java.util.Hashtable;
+ others = {};
+ for propIdx = 1 : size(data,1)
+ if (propIdx < size(data,1) && strcmp(names{propIdx},names{propIdx+1})) || ...
+ (propIdx > 1 && strcmp(names{propIdx},names{propIdx-1}))
+ % Child callback property
+ setProp(list,data{propIdx,1},data{propIdx,2},names{propIdx});
+ else
+ % Singular callback property => Add to 'Other' category at bottom of the list
+ others(end+1,:) = data(propIdx,:); %#ok
+ end
+ end
+ for propIdx = 1 : size(others,1)
+ setProp(list,others{propIdx,1},others{propIdx,2},'Other');
+ end
+ end % getTreeData
+
+ %% Get callbacks table data
+ function [cbData, cbHeaders, cbTableEnabled] = getCbsData(obj, stripStdCbsFlag)
+ % Initialize
+ cbData = {'(no callbacks)'};
+ cbHeaders = {'Callback name'};
+ cbTableEnabled = false;
+ cbNames = {};
+
+ try
+ try
+ classHdl = classhandle(handle(obj));
+ cbNames = get(classHdl.Events,'Name');
+ if ~isempty(cbNames) && ~iscom(obj) %only java-based please...
+ cbNames = strcat(cbNames,'Callback');
+ end
+ propNames = get(classHdl.Properties,'Name');
+ catch
+ % Try to interpret as an MCOS class object
+ try
+ oldWarn = warning('off','MATLAB:structOnObject');
+ dataFields = struct(obj);
+ warning(oldWarn);
+ catch
+ dataFields = get(obj);
+ end
+ propNames = fieldnames(dataFields);
+ end
+ propCbIdx = [];
+ if ischar(propNames), propNames={propNames}; end % handle case of a single callback
+ if ~isempty(propNames)
+ propCbIdx = find(~cellfun(@isempty,regexp(propNames,'(Fcn|Callback)$')));
+ cbNames = unique([cbNames; propNames(propCbIdx)]); %#ok logical is faster but less debuggable...
+ end
+ if ~isempty(cbNames)
+ if stripStdCbsFlag
+ cbNames = stripStdCbs(cbNames);
+ end
+ if iscell(cbNames)
+ cbNames = sort(cbNames);
+ if size(cbNames,1) < size(cbNames,2)
+ cbNames = cbNames';
+ end
+ end
+ hgHandleFlag = 0; try hgHandleFlag = ishghandle(obj); catch, end %#ok
+ try
+ obj = handle(obj,'CallbackProperties');
+ catch
+ hgHandleFlag = 1;
+ end
+ if hgHandleFlag
+ % HG handles don't allow CallbackProperties - search only for *Fcn
+ %cbNames = propNames(propCbIdx);
+ end
+ if iscom(obj)
+ cbs = obj.eventlisteners;
+ if ~isempty(cbs)
+ cbNamesRegistered = cbs(:,1);
+ cbData = setdiff(cbNames,cbNamesRegistered);
+ %cbData = charizeData(cbData);
+ if size(cbData,2) > size(cbData(1))
+ cbData = cbData';
+ end
+ cbData = [cbData, cellstr(repmat(' ',length(cbData),1))];
+ cbData = [cbData; cbs];
+ [sortedNames, sortedIdx] = sort(cbData(:,1));
+ sortedCbs = cellfun(@charizeData,cbData(sortedIdx,2),'un',0);
+ cbData = [sortedNames, sortedCbs];
+ else
+ cbData = [cbNames, cellstr(repmat(' ',length(cbNames),1))];
+ end
+ elseif iscell(cbNames)
+ cbNames = sort(cbNames);
+ %cbData = [cbNames, get(obj,cbNames)'];
+ cbData = cbNames;
+ oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty');
+ warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty');
+ for idx = 1 : length(cbNames)
+ try
+ cbData{idx,2} = charizeData(get(obj,cbNames{idx}));
+ catch
+ cbData{idx,2} = '(callback value inaccessible)';
+ end
+ end
+ warning(oldWarn);
+ else % only one event callback
+ %cbData = {cbNames, get(obj,cbNames)'};
+ %cbData{1,2} = charizeData(cbData{1,2});
+ try
+ cbData = {cbNames, charizeData(get(obj,cbNames))};
+ catch
+ cbData = {cbNames, '(callback value inaccessible)'};
+ end
+ end
+ cbHeaders = {'Callback name','Callback value'};
+ cbTableEnabled = true;
+ end
+ catch
+ % never mind - use default (empty) data
+ end
+ end % getCbsData
+
+ %% Get relative (0.0-1.0) divider location
+ function divLocation = getRalativeDivlocation(jDiv)
+ divLocation = jDiv.getDividerLocation;
+ if divLocation > 1 % i.e. [pixels]
+ visibleRect = jDiv.getVisibleRect;
+ if jDiv.getOrientation == 0 % vertical
+ start = visibleRect.getY;
+ extent = visibleRect.getHeight - start;
+ else
+ start = visibleRect.getX;
+ extent = visibleRect.getWidth - start;
+ end
+ divLocation = (divLocation - start) / extent;
+ end
+ end % getRalativeDivlocation
+
+ %% Try to set a treenode icon based on a container's icon
+ function setTreeNodeIcon(treenode,container)
+ try
+ iconImage = [];
+ iconImage = container.getIcon;
+ if ~isempty(findprop(handle(iconImage),'Image')) % get(iconImage,'Image') is easier but leaks memory...
+ iconImage = iconImage.getImage;
+ else
+ a=b; %#ok cause an error
+ end
+ catch
+ try
+ iconImage = container.getIconImage;
+ catch
+ try
+ if ~isempty(iconImage)
+ ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment;
+ gd = ge.getDefaultScreenDevice;
+ gc = gd.getDefaultConfiguration;
+ image = gc.createCompatibleImage(iconImage.getIconWidth, iconImage.getIconHeight); % a BufferedImage object
+ g = image.createGraphics;
+ iconImage.paintIcon([], g, 0, 0);
+ g.dispose;
+ iconImage = image;
+ end
+ catch
+ % never mind...
+ end
+ end
+ end
+ if ~isempty(iconImage)
+ iconImage = setIconSize(iconImage);
+ treenode.setIcon(iconImage);
+ end
+ end % setTreeNodeIcon
+
+ %% Present the object hierarchy tree
+ function presentObjectTree()
+ persistent lastVersionCheck
+ if isempty(lastVersionCheck), lastVersionCheck = now-1; end
+
+ import java.awt.*
+ import javax.swing.*
+ hTreeFig = findall(0,'tag','findjobjFig');
+ iconpath = [matlabroot, '/toolbox/matlab/icons/'];
+ cbHideStd = 0; % Initial state of the cbHideStdCbs checkbox
+ if isempty(hTreeFig)
+ % Prepare the figure
+ hTreeFig = figure('tag','findjobjFig','menuBar','none','toolBar','none','Name','FindJObj','NumberTitle','off','handleVisibility','off','IntegerHandle','off');
+ figIcon = ImageIcon([iconpath 'tool_legend.gif']);
+ drawnow;
+ try
+ mde = com.mathworks.mde.desk.MLDesktop.getInstance;
+ jTreeFig = mde.getClient('FindJObj').getTopLevelAncestor;
+ jTreeFig.setIcon(figIcon);
+ catch
+ warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ jTreeFig = get(hTreeFig,'JavaFrame');
+ jTreeFig.setFigureIcon(figIcon);
+ end
+ vsplitPaneLocation = 0.8;
+ hsplitPaneLocation = 0.5;
+ else
+ % Remember cbHideStdCbs checkbox & dividers state for later
+ userdata = get(hTreeFig, 'userdata');
+ try cbHideStd = userdata.cbHideStdCbs.isSelected; catch, end %#ok
+ try
+ vsplitPaneLocation = getRalativeDivlocation(userdata.vsplitPane);
+ hsplitPaneLocation = getRalativeDivlocation(userdata.hsplitPane);
+ catch
+ vsplitPaneLocation = 0.8;
+ hsplitPaneLocation = 0.5;
+ end
+
+ % Clear the figure and redraw
+ clf(hTreeFig);
+ figure(hTreeFig); % bring to front
+ end
+
+ % Traverse all HG children, if root container was a HG handle
+ if ishghandle(origContainer) %&& ~isequal(origContainer,container)
+ traverseHGContainer(origContainer,0,0);
+ end
+
+ % Prepare the tree pane
+ warning('off','MATLAB:uitreenode:MigratingFunction'); % R2008b compatibility
+ warning('off','MATLAB:uitreenode:DeprecatedFunction'); % R2008a compatibility
+ tree_h = com.mathworks.hg.peer.UITreePeer;
+ try tree_h = javaObjectEDT(tree_h); catch, end
+ tree_hh = handle(tree_h,'CallbackProperties');
+ hasChildren = sum(allParents==1) > 1;
+ icon = [iconpath 'upfolder.gif'];
+ [rootName, rootTitle] = getNodeName(container);
+ try
+ root = uitreenode('v0', handle(container), rootName, icon, ~hasChildren);
+ catch % old matlab version don't have the 'v0' option
+ root = uitreenode(handle(container), rootName, icon, ~hasChildren);
+ end
+ setTreeNodeIcon(root,container); % constructor must accept a char icon unfortunately, so need to do this afterwards...
+ if ~isempty(rootTitle)
+ set(hTreeFig, 'Name',['FindJObj - ' char(rootTitle)]);
+ end
+ nodedata.idx = 1;
+ nodedata.obj = container;
+ set(root,'userdata',nodedata);
+ root.setUserObject(container);
+ setappdata(root,'childHandle',container);
+ tree_h.setRoot(root);
+ treePane = tree_h.getScrollPane;
+ treePane.setMinimumSize(Dimension(50,50));
+ jTreeObj = treePane.getViewport.getComponent(0);
+ jTreeObj.setShowsRootHandles(true)
+ jTreeObj.getSelectionModel.setSelectionMode(javax.swing.tree.TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
+ %jTreeObj.setVisible(0);
+ %jTreeObj.getCellRenderer.setLeafIcon([]);
+ %jTreeObj.getCellRenderer.setOpenIcon(figIcon);
+ %jTreeObj.getCellRenderer.setClosedIcon([]);
+ treePanel = JPanel(BorderLayout);
+ treePanel.add(treePane, BorderLayout.CENTER);
+ progressBar = JProgressBar(0);
+ progressBar.setMaximum(length(allHandles) + length(hg_handles)); % = # of all nodes
+ treePanel.add(progressBar, BorderLayout.SOUTH);
+
+ % Prepare the image pane
+%disable for now, until we get it working...
+%{
+ try
+ hFig = ancestor(origContainer,'figure');
+ [cdata, cm] = getframe(hFig); %#ok cm unused
+ tempfname = [tempname '.png'];
+ imwrite(cdata,tempfname); % don't know how to pass directly to BufferedImage, so use disk...
+ jImg = javax.imageio.ImageIO.read(java.io.File(tempfname));
+ try delete(tempfname); catch end
+ imgPanel = JPanel();
+ leftPanel = JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, imgPanel);
+ leftPanel.setOneTouchExpandable(true);
+ leftPanel.setContinuousLayout(true);
+ leftPanel.setResizeWeight(0.8);
+ catch
+ leftPanel = treePanel;
+ end
+%}
+ leftPanel = treePanel;
+
+ % Prepare the inspector pane
+ classNameLabel = JLabel([' ' char(class(container))]);
+ classNameLabel.setForeground(Color.blue);
+ updateNodeTooltip(container, classNameLabel);
+ inspectorPanel = JPanel(BorderLayout);
+ inspectorPanel.add(classNameLabel, BorderLayout.NORTH);
+ % TODO: Maybe uncomment the following when we add the HG tree - in the meantime it's unused (java properties are un-groupable)
+ %objReg = com.mathworks.services.ObjectRegistry.getLayoutRegistry;
+ %toolBar = awtinvoke('com.mathworks.mlwidgets.inspector.PropertyView$ToolBarStyle','valueOf(Ljava.lang.String;)','GROUPTOOLBAR');
+ %inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView(objReg, toolBar);
+ inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView;
+ identifiers = disableDbstopError; %#ok "dbstop if error" causes inspect.m to croak due to a bug - so workaround
+ inspectorPane.setObject(container);
+ inspectorPane.setAutoUpdate(true);
+ % TODO: Add property listeners
+ % TODO: Display additional props
+ inspectorTable = inspectorPane;
+ try
+ while ~isa(inspectorTable,'javax.swing.JTable')
+ inspectorTable = inspectorTable.getComponent(0);
+ end
+ catch
+ % R2010a
+ inspectorTable = inspectorPane.getComponent(0).getScrollPane.getViewport.getComponent(0);
+ end
+ toolTipText = 'hover mouse over the red classname above to see the full list of properties';
+ inspectorTable.setToolTipText(toolTipText);
+ jideTableUtils = [];
+ try
+ % Try JIDE features - see http://www.jidesoft.com/products/JIDE_Grids_Developer_Guide.pdf
+ com.mathworks.mwswing.MJUtilities.initJIDE;
+ jideTableUtils = eval('com.jidesoft.grid.TableUtils;'); % prevent JIDE alert by run-time (not load-time) evaluation
+ jideTableUtils.autoResizeAllColumns(inspectorTable);
+ inspectorTable.setRowAutoResizes(true);
+ inspectorTable.getModel.setShowExpert(1);
+ catch
+ % JIDE is probably unavailable - never mind...
+ end
+ inspectorPanel.add(inspectorPane, BorderLayout.CENTER);
+ % TODO: Add data update listeners
+
+ % Prepare the callbacks pane
+ callbacksPanel = JPanel(BorderLayout);
+ stripStdCbsFlag = true; % initial value
+ [cbData, cbHeaders, cbTableEnabled] = getCbsData(container, stripStdCbsFlag);
+ %{
+ %classHdl = classhandle(handle(container));
+ %eventNames = get(classHdl.Events,'Name');
+ %if ~isempty(eventNames)
+ % cbNames = sort(strcat(eventNames,'Callback'));
+ % try
+ % cbData = [cbNames, get(container,cbNames)'];
+ % catch
+ % % R2010a
+ % cbData = cbNames;
+ % if isempty(cbData)
+ % cbData = {};
+ % elseif ~iscell(cbData)
+ % cbData = {cbData};
+ % end
+ % for idx = 1 : length(cbNames)
+ % cbData{idx,2} = get(container,cbNames{idx});
+ % end
+ % end
+ % cbTableEnabled = true;
+ %else
+ % cbData = {'(no callbacks)',''};
+ % cbTableEnabled = false;
+ %end
+ %cbHeaders = {'Callback name','Callback value'};
+ %}
+ try
+ % Use JideTable if available on this system
+ %callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); %#ok
+ %callbacksTable = eval('com.jidesoft.grid.PropertyTable(callbacksTableModel);'); % prevent JIDE alert by run-time (not load-time) evaluation
+ try
+ list = getTreeData(cbData); %#ok
+ model = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ % Auto-expand if only one category
+ if model.getRowCount==1 % length(model.getCategories)==1 fails for some unknown reason...
+ model.expandFirstLevel;
+ end
+
+ %callbacksTable = eval('com.jidesoft.grid.TreeTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+ callbacksTable = eval('com.jidesoft.grid.PropertyTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ %callbacksTable.expandFirstLevel;
+ callbacksTable.setShowsRootHandles(true);
+ callbacksTable.setShowTreeLines(false);
+ %callbacksTable.setShowNonEditable(0); %=SHOW_NONEDITABLE_NEITHER
+ callbacksPane = eval('com.jidesoft.grid.PropertyPane(callbacksTable);'); % prevent JIDE alert by run-time (not load-time) evaluation
+ callbacksPane.setShowDescription(false);
+ catch
+ callbacksTable = eval('com.jidesoft.grid.TreeTable(cbData,cbHeaders);'); % prevent JIDE alert by run-time (not load-time) evaluation
+ end
+ callbacksTable.setRowAutoResizes(true);
+ callbacksTable.setColumnAutoResizable(true);
+ callbacksTable.setColumnResizable(true);
+ jideTableUtils.autoResizeAllColumns(callbacksTable);
+ callbacksTable.setTableHeader([]); % hide the column headers since now we can resize columns with the gridline
+ callbacksLabel = JLabel(' Callbacks:'); % The column headers are replaced with a header label
+ callbacksLabel.setForeground(Color.blue);
+ %callbacksPanel.add(callbacksLabel, BorderLayout.NORTH);
+
+ % Add checkbox to show/hide standard callbacks
+ callbacksTopPanel = JPanel;
+ callbacksTopPanel.setLayout(BoxLayout(callbacksTopPanel, BoxLayout.LINE_AXIS));
+ callbacksTopPanel.add(callbacksLabel);
+ callbacksTopPanel.add(Box.createHorizontalGlue);
+ jcb = JCheckBox('Hide standard callbacks', cbHideStd);
+ set(handle(jcb,'CallbackProperties'), 'ActionPerformedCallback',{@cbHideStdCbs_Callback,callbacksTable});
+ try
+ set(jcb, 'userdata',callbacksTable, 'tooltip','Hide standard Swing callbacks - only component-specific callbacks will be displayed');
+ catch
+ jcb.setToolTipText('Hide standard Swing callbacks - only component-specific callbacks will be displayed');
+ %setappdata(jcb,'userdata',callbacksTable);
+ end
+ callbacksTopPanel.add(jcb);
+ callbacksPanel.add(callbacksTopPanel, BorderLayout.NORTH);
+ catch
+ % Otherwise, use a standard Swing JTable (keep the headers to enable resizing)
+ callbacksTable = JTable(cbData,cbHeaders);
+ end
+ cbToolTipText = 'Callbacks may be ''strings'', @funcHandle or {@funcHandle,arg1,...}';
+ callbacksTable.setToolTipText(cbToolTipText);
+ callbacksTable.setGridColor(inspectorTable.getGridColor);
+ cbNameTextField = JTextField;
+ cbNameTextField.setEditable(false); % ensure that the callback names are not modified...
+ cbNameCellEditor = DefaultCellEditor(cbNameTextField);
+ cbNameCellEditor.setClickCountToStart(intmax); % i.e, never enter edit mode...
+ callbacksTable.getColumnModel.getColumn(0).setCellEditor(cbNameCellEditor);
+ if ~cbTableEnabled
+ try callbacksTable.getColumnModel.getColumn(1).setCellEditor(cbNameCellEditor); catch, end
+ end
+ hModel = callbacksTable.getModel;
+ set(handle(hModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,container,callbacksTable});
+ %set(hModel, 'UserData',container);
+ try
+ cbScrollPane = callbacksPane; %JScrollPane(callbacksPane);
+ %cbScrollPane.setHorizontalScrollBarPolicy(cbScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ catch
+ cbScrollPane = JScrollPane(callbacksTable);
+ cbScrollPane.setVerticalScrollBarPolicy(cbScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ end
+ callbacksPanel.add(cbScrollPane, BorderLayout.CENTER);
+ callbacksPanel.setToolTipText(cbToolTipText);
+
+ % Prepare the top-bottom JSplitPanes
+ vsplitPane = JSplitPane(JSplitPane.VERTICAL_SPLIT, inspectorPanel, callbacksPanel);
+ vsplitPane.setOneTouchExpandable(true);
+ vsplitPane.setContinuousLayout(true);
+ vsplitPane.setResizeWeight(0.8);
+
+ % Prepare the left-right JSplitPane
+ hsplitPane = JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, vsplitPane);
+ hsplitPane.setOneTouchExpandable(true);
+ hsplitPane.setContinuousLayout(true);
+ hsplitPane.setResizeWeight(0.6);
+ pos = getpixelposition(hTreeFig);
+
+ % Prepare the bottom pane with all buttons
+ lowerPanel = JPanel(FlowLayout);
+ blogUrlLabel = 'Undocumented Matlab.com ';
+ jWebsite = createJButton(blogUrlLabel, @btWebsite_Callback, 'Visit the UndocumentedMatlab.com blog');
+ jWebsite.setContentAreaFilled(0);
+ lowerPanel.add(jWebsite);
+ lowerPanel.add(createJButton('Refresh tree', {@btRefresh_Callback, origContainer, hTreeFig}, 'Rescan the component tree, from the root down'));
+ lowerPanel.add(createJButton('Export to workspace', {@btExport_Callback, jTreeObj, classNameLabel}, 'Export the selected component handles to workspace variable findjobj_hdls'));
+ lowerPanel.add(createJButton('Request focus', {@btFocus_Callback, jTreeObj, root}, 'Set the focus on the first selected component'));
+ lowerPanel.add(createJButton('Inspect object', {@btInspect_Callback, jTreeObj, root}, 'View the signature of all methods supported by the first selected component'));
+ lowerPanel.add(createJButton('Check for updates', {@btCheckFex_Callback}, 'Check the MathWorks FileExchange for the latest version of FindJObj'));
+
+ % Display everything on-screen
+ globalPanel = JPanel(BorderLayout);
+ globalPanel.add(hsplitPane, BorderLayout.CENTER);
+ globalPanel.add(lowerPanel, BorderLayout.SOUTH);
+ [obj, hcontainer] = javacomponent(globalPanel, [0,0,pos(3:4)], hTreeFig);
+ set(hcontainer,'units','normalized');
+ drawnow;
+ hsplitPane.setDividerLocation(hsplitPaneLocation); % this only works after the JSplitPane is displayed...
+ vsplitPane.setDividerLocation(vsplitPaneLocation); % this only works after the JSplitPane is displayed...
+ %restoreDbstopError(identifiers);
+
+ % Refresh & resize the screenshot thumbnail
+%disable for now, until we get it working...
+%{
+ try
+ hAx = axes('Parent',hTreeFig, 'units','pixels', 'position',[10,10,250,150], 'visible','off');
+ axis(hAx,'image');
+ image(cdata,'Parent',hAx);
+ axis(hAx,'off');
+ set(hAx,'UserData',cdata);
+ set(imgPanel, 'ComponentResizedCallback',{@resizeImg, hAx}, 'UserData',lowerPanel);
+ imgPanel.getGraphics.drawImage(jImg, 0, 0, []);
+ catch
+ % Never mind...
+ end
+%}
+ % If all handles were selected (i.e., none were filtered) then only select the first
+ if (length(selectedIdx) == length(allHandles)) && ~isempty(selectedIdx)
+ selectedIdx = 1;
+ end
+
+ % Store handles for callback use
+ userdata.handles = allHandles;
+ userdata.levels = allLevels;
+ userdata.parents = allParents;
+ userdata.hg_handles = hg_handles;
+ userdata.hg_levels = hg_levels;
+ userdata.hg_parents = hg_parentIdx;
+ userdata.initialIdx = selectedIdx;
+ userdata.userSelected = false; % Indicates the user has modified the initial selections
+ userdata.inInit = true;
+ userdata.jTree = jTreeObj;
+ userdata.jTreePeer = tree_h;
+ userdata.vsplitPane = vsplitPane;
+ userdata.hsplitPane = hsplitPane;
+ userdata.classNameLabel = classNameLabel;
+ userdata.inspectorPane = inspectorPane;
+ userdata.callbacksTable = callbacksTable;
+ userdata.jideTableUtils = jideTableUtils;
+ try
+ userdata.cbHideStdCbs = jcb;
+ catch
+ userdata.cbHideStdCbs = [];
+ end
+
+ % Update userdata for use in callbacks
+ try
+ set(tree_h,'userdata',userdata);
+ catch
+ setappdata(handle(tree_h),'userdata',userdata);
+ end
+ try
+ set(callbacksTable,'userdata',userdata);
+ catch
+ setappdata(callbacksTable,'userdata',userdata);
+ end
+ set(hTreeFig,'userdata',userdata);
+
+ % Select the root node if requested
+ % Note: we must do so here since all other nodes except the root are processed by expandNode
+ if any(selectedIdx==1)
+ tree_h.setSelectedNode(root);
+ end
+
+ % Set the initial cbHideStdCbs state
+ try
+ if jcb.isSelected
+ drawnow;
+ evd.getSource.isSelected = jcb.isSelected;
+ cbHideStdCbs_Callback(jcb,evd,callbacksTable);
+ end
+ catch
+ % never mind...
+ end
+
+ % Set the callback functions
+ set(tree_hh, 'NodeExpandedCallback', {@nodeExpanded, tree_h});
+ set(tree_hh, 'NodeSelectedCallback', {@nodeSelected, tree_h});
+
+ % Set the tree mouse-click callback
+ % Note: default actions (expand/collapse) will still be performed?
+ % Note: MousePressedCallback is better than MouseClickedCallback
+ % since it fires immediately when mouse button is pressed,
+ % without waiting for its release, as MouseClickedCallback does
+ handleTree = tree_h.getScrollPane;
+ jTreeObj = handleTree.getViewport.getComponent(0);
+ jTreeObjh = handle(jTreeObj,'CallbackProperties');
+ set(jTreeObjh, 'MousePressedCallback', {@treeMousePressedCallback,tree_h}); % context (right-click) menu
+ set(jTreeObjh, 'MouseMovedCallback', @treeMouseMovedCallback); % mouse hover tooltips
+
+ % Update userdata
+ userdata.inInit = false;
+ try
+ set(tree_h,'userdata',userdata);
+ catch
+ setappdata(handle(tree_h),'userdata',userdata);
+ end
+ set(hTreeFig,'userdata',userdata);
+
+ % Pre-expand all rows
+ %treePane.setVisible(false);
+ expandNode(progressBar, jTreeObj, tree_h, root, 0);
+ %treePane.setVisible(true);
+ %jTreeObj.setVisible(1);
+
+ % Hide the progressbar now that we've finished expanding all rows
+ try
+ hsplitPane.getLeftComponent.setTopComponent(treePane);
+ catch
+ % Probably not a vSplitPane on the left...
+ hsplitPane.setLeftComponent(treePane);
+ end
+ hsplitPane.setDividerLocation(hsplitPaneLocation); % need to do it again...
+
+ % Set keyboard focus on the tree
+ jTreeObj.requestFocus;
+ drawnow;
+
+ % Check for a newer version (only in non-deployed mode, and only twice a day)
+ if ~isdeployed && now-lastVersionCheck > 0.5
+ checkVersion();
+ lastVersionCheck = now;
+ end
+
+ % Reset the last error
+ lasterr(''); %#ok
+ end
+
+ %% Rresize image pane
+ function resizeImg(varargin) %#ok - unused (TODO: waiting for img placement fix...)
+ try
+ hPanel = varargin{1};
+ hAx = varargin{3};
+ lowerPanel = get(hPanel,'UserData');
+ newJPos = cell2mat(get(hPanel,{'X','Y','Width','Height'}));
+ newMPos = [1,get(lowerPanel,'Height'),newJPos(3:4)];
+ set(hAx, 'units','pixels', 'position',newMPos, 'Visible','on');
+ uistack(hAx,'top'); % no good...
+ set(hPanel,'Opaque','off'); % also no good...
+ catch
+ % Never mind...
+ dispError
+ end
+ return;
+ end
+
+ %% "dbstop if error" causes inspect.m to croak due to a bug - so workaround by temporarily disabling this dbstop
+ function identifiers = disableDbstopError
+ dbStat = dbstatus;
+ idx = find(strcmp({dbStat.cond},'error'));
+ identifiers = [dbStat(idx).identifier];
+ if ~isempty(idx)
+ dbclear if error;
+ msgbox('''dbstop if error'' had to be disabled due to a Matlab bug that would have caused Matlab to crash.', 'FindJObj', 'warn');
+ end
+ end
+
+ %% Restore any previous "dbstop if error"
+ function restoreDbstopError(identifiers) %#ok
+ for itemIdx = 1 : length(identifiers)
+ eval(['dbstop if error ' identifiers{itemIdx}]);
+ end
+ end
+
+ %% Recursively expand all nodes (except toolbar/menubar) in startup
+ function expandNode(progressBar, tree, tree_h, parentNode, parentRow)
+ try
+ if nargin < 5
+ parentPath = javax.swing.tree.TreePath(parentNode.getPath);
+ parentRow = tree.getRowForPath(parentPath);
+ end
+ tree.expandRow(parentRow);
+ progressBar.setValue(progressBar.getValue+1);
+ numChildren = parentNode.getChildCount;
+ if (numChildren == 0)
+ pause(0.0002); % as short as possible...
+ drawnow;
+ end
+ nodesToUnExpand = {'FigureMenuBar','MLMenuBar','MJToolBar','Box','uimenu','uitoolbar','ScrollBar'};
+ numChildren = parentNode.getChildCount;
+ for childIdx = 0 : numChildren-1
+ childNode = parentNode.getChildAt(childIdx);
+
+ % Pre-select the node based upon the user's FINDJOBJ filters
+ try
+ nodedata = get(childNode, 'userdata');
+ try
+ userdata = get(tree_h, 'userdata');
+ catch
+ userdata = getappdata(handle(tree_h), 'userdata');
+ end
+ %fprintf('%d - %s\n',nodedata.idx,char(nodedata.obj))
+ if ~ishghandle(nodedata.obj) && ~userdata.userSelected && any(userdata.initialIdx == nodedata.idx)
+ pause(0.0002); % as short as possible...
+ drawnow;
+ if isempty(tree_h.getSelectedNodes)
+ tree_h.setSelectedNode(childNode);
+ else
+ newSelectedNodes = [tree_h.getSelectedNodes, childNode];
+ tree_h.setSelectedNodes(newSelectedNodes);
+ end
+ end
+ catch
+ % never mind...
+ dispError
+ end
+
+ % Expand child node if not leaf & not toolbar/menubar
+ if childNode.isLeafNode
+
+ % This is a leaf node, so simply update the progress-bar
+ progressBar.setValue(progressBar.getValue+1);
+
+ else
+ % Expand all non-leaves
+ expandNode(progressBar, tree, tree_h, childNode);
+
+ % Re-collapse toolbar/menubar etc., and also invisible containers
+ % Note: if we simply did nothing, progressbar would not have been updated...
+ try
+ childHandle = getappdata(childNode,'childHandle'); %=childNode.getUserObject
+ visible = childHandle.isVisible;
+ catch
+ visible = 1;
+ end
+ visible = visible && isempty(findstr(get(childNode,'Name'),'color="gray"'));
+ %if any(strcmp(childNode.getName,nodesToUnExpand))
+ %name = char(childNode.getName);
+ if any(cellfun(@(s)~isempty(strmatch(s,char(childNode.getName))),nodesToUnExpand)) || ~visible
+ childPath = javax.swing.tree.TreePath(childNode.getPath);
+ childRow = tree.getRowForPath(childPath);
+ tree.collapseRow(childRow);
+ end
+ end
+ end
+ catch
+ % never mind...
+ dispError
+ end
+ end
+
+ %% Create utility buttons
+ function hButton = createJButton(nameStr, handler, toolTipText)
+ try
+ jButton = javax.swing.JButton([' ' nameStr]);
+ jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
+ jButton.setToolTipText(toolTipText);
+ try
+ minSize = jButton.getMinimumSize;
+ catch
+ minSize = jButton.getMinimumSize; % for HG2 - strange indeed that this is needed!
+ end
+ jButton.setMinimumSize(java.awt.Dimension(minSize.getWidth,35));
+ hButton = handle(jButton,'CallbackProperties');
+ set(hButton,'ActionPerformedCallback',handler);
+ catch
+ % Never mind...
+ a= 1;
+ end
+ end
+
+ %% Flash a component off/on for the specified duration
+ % note: starts with 'on'; if numTimes is odd then ends with 'on', otherwise with 'off'
+ function flashComponent(jComps,delaySecs,numTimes)
+ persistent redBorder redBorderPanels
+ try
+ % Handle callback data from right-click (context-menu)
+ if iscell(numTimes)
+ [jComps,delaySecs,numTimes] = deal(numTimes{:});
+ end
+
+ if isempty(redBorder) % reuse if possible
+ redBorder = javax.swing.border.LineBorder(java.awt.Color.red,2,0);
+ end
+ for compIdx = 1 : length(jComps)
+ try
+ oldBorder{compIdx} = jComps(compIdx).getBorder; %#ok grow
+ catch
+ oldBorder{compIdx} = []; %#ok grow
+ end
+ isSettable(compIdx) = ismethod(jComps(compIdx),'setBorder'); %#ok grow
+ if isSettable(compIdx)
+ try
+ % some components prevent border modification:
+ oldBorderFlag = jComps(compIdx).isBorderPainted;
+ if ~oldBorderFlag
+ jComps(compIdx).setBorderPainted(1);
+ isSettable(compIdx) = jComps(compIdx).isBorderPainted; %#ok grow
+ jComps(compIdx).setBorderPainted(oldBorderFlag);
+ end
+ catch
+ % do nothing...
+ end
+ end
+ if compIdx > length(redBorderPanels)
+ redBorderPanels{compIdx} = javax.swing.JPanel;
+ redBorderPanels{compIdx}.setBorder(redBorder);
+ redBorderPanels{compIdx}.setOpaque(0); % transparent interior, red border
+ end
+ try
+ redBorderPanels{compIdx}.setBounds(jComps(compIdx).getBounds);
+ catch
+ % never mind - might be an HG handle
+ end
+ end
+ for idx = 1 : 2*numTimes
+ if idx>1, pause(delaySecs); end % don't pause at start
+ visible = mod(idx,2);
+ for compIdx = 1 : length(jComps)
+ try
+ jComp = jComps(compIdx);
+
+ % Prevent Matlab crash (java buffer overflow...)
+ if isa(jComp,'com.mathworks.mwswing.desk.DTSplitPane') || ...
+ isa(jComp,'com.mathworks.mwswing.MJSplitPane')
+ continue;
+
+ % HG handles are highlighted by setting their 'Selected' property
+ elseif isa(jComp,'uimenu') || isa(jComp,'matlab.ui.container.Menu')
+ if visible
+ oldColor = get(jComp,'ForegroundColor');
+ setappdata(jComp,'findjobj_oldColor',oldColor);
+ set(jComp,'ForegroundColor','red');
+ else
+ oldColor = getappdata(jComp,'findjobj_oldColor');
+ set(jComp,'ForegroundColor',oldColor);
+ rmappdata(jComp,'ForegroundColor');
+ end
+
+ elseif ishghandle(jComp)
+ if visible
+ set(jComp,'Selected','on');
+ else
+ set(jComp,'Selected','off');
+ end
+
+ else %if isjava(jComp)
+
+ jParent = jComps(compIdx).getParent;
+
+ % Most Java components allow modifying their borders
+ if isSettable(compIdx)
+ if visible
+ jComp.setBorder(redBorder);
+ try jComp.setBorderPainted(1); catch, end %#ok
+ else %if ~isempty(oldBorder{compIdx})
+ jComp.setBorder(oldBorder{compIdx});
+ end
+ jComp.repaint;
+
+ % The other Java components are highlighted by a transparent red-border
+ % panel that is placed on top of them in their parent's space
+ elseif ~isempty(jParent)
+ if visible
+ jParent.add(redBorderPanels{compIdx});
+ jParent.setComponentZOrder(redBorderPanels{compIdx},0);
+ else
+ jParent.remove(redBorderPanels{compIdx});
+ end
+ jParent.repaint
+ end
+ end
+ catch
+ % never mind - try the next component (if any)
+ end
+ end
+ drawnow;
+ end
+ catch
+ % never mind...
+ dispError;
+ end
+ return; % debug point
+ end % flashComponent
+
+ %% Select tree node
+ function nodeSelected(src, evd, tree) %#ok
+ try
+ if iscell(tree)
+ [src,node] = deal(tree{:});
+ else
+ node = evd.getCurrentNode;
+ end
+ %nodeHandle = node.getUserObject;
+ nodedata = get(node,'userdata');
+ nodeHandle = nodedata.obj;
+ try
+ userdata = get(src,'userdata');
+ catch
+ try
+ userdata = getappdata(java(src),'userdata');
+ catch
+ userdata = getappdata(src,'userdata');
+ end
+ if isempty(userdata)
+ try userdata = get(java(src),'userdata'); catch, end
+ end
+ end
+ if ~isempty(nodeHandle) && ~isempty(userdata)
+ numSelections = userdata.jTree.getSelectionCount;
+ selectionPaths = userdata.jTree.getSelectionPaths;
+ if (numSelections == 1)
+ % Indicate that the user has modified the initial selection (except if this was an initial auto-selected node)
+ if ~userdata.inInit
+ userdata.userSelected = true;
+ try
+ set(src,'userdata',userdata);
+ catch
+ try
+ setappdata(java(src),'userdata',userdata);
+ catch
+ setappdata(src,'userdata',userdata);
+ end
+ end
+ end
+
+ % Update the fully-qualified class name label
+ numInitialIdx = length(userdata.initialIdx);
+ thisHandle = nodeHandle;
+ try
+ if ~ishghandle(thisHandle)
+ thisHandle = java(nodeHandle);
+ end
+ catch
+ % never mind...
+ end
+ if ~userdata.inInit || (numInitialIdx == 1)
+ userdata.classNameLabel.setText([' ' char(class(thisHandle))]);
+ else
+ userdata.classNameLabel.setText([' ' num2str(numInitialIdx) 'x handles (some handles hidden by unexpanded tree nodes)']);
+ end
+ if ishghandle(thisHandle)
+ userdata.classNameLabel.setText(userdata.classNameLabel.getText.concat(' (HG handle)'));
+ end
+ userdata.inspectorPane.dispose; % remove props listeners - doesn't work...
+ updateNodeTooltip(nodeHandle, userdata.classNameLabel);
+
+ % Update the data properties inspector pane
+ % Note: we can't simply use the evd nodeHandle, because this node might have been DE-selected with only one other node left selected...
+ %nodeHandle = selectionPaths(1).getLastPathComponent.getUserObject;
+ nodedata = get(selectionPaths(1).getLastPathComponent,'userdata');
+ nodeHandle = nodedata.obj;
+ %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround
+ userdata.inspectorPane.setObject(thisHandle);
+
+ % Update the callbacks table
+ try
+ stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs');
+ [cbData, cbHeaders, cbTableEnabled] = getCbsData(nodeHandle, stripStdCbsFlag); %#ok cbTableEnabled unused
+ try
+ % Use JideTable if available on this system
+ list = getTreeData(cbData); %#ok
+ callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ % Expand if only one category
+ if length(callbacksTableModel.getCategories)==1
+ callbacksTableModel.expandFirstLevel;
+ end
+ catch
+ callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders);
+ end
+ set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,nodeHandle,userdata.callbacksTable});
+ %set(callbacksTableModel, 'UserData',nodeHandle);
+ userdata.callbacksTable.setModel(callbacksTableModel)
+ userdata.callbacksTable.setRowAutoResizes(true);
+ userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable);
+ catch
+ % never mind...
+ %dispError
+ end
+ pause(0.005);
+ drawnow;
+ %restoreDbstopError(identifiers);
+
+ % Highlight the selected object (if visible)
+ flashComponent(nodeHandle,0.2,3);
+
+ elseif (numSelections > 1) % Multiple selections
+
+ % Get the list of all selected nodes
+ jArray = javaArray('java.lang.Object', numSelections);
+ toolTipStr = '';
+ sameClassFlag = true;
+ for idx = 1 : numSelections
+ %jArray(idx) = selectionPaths(idx).getLastPathComponent.getUserObject;
+ nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata');
+ try
+ if ishghandle(nodedata.obj)
+ if idx==1
+ jArray = nodedata.obj;
+ else
+ jArray(idx) = nodedata.obj;
+ end
+ else
+ jArray(idx) = java(nodedata.obj);
+ end
+ catch
+ jArray(idx) = nodedata.obj;
+ end
+ toolTipStr = [toolTipStr ' ' class(jArray(idx)) ' ']; %#ok grow
+ if (idx < numSelections), toolTipStr = [toolTipStr ' ']; end %#ok grow
+ try
+ if (idx > 1) && sameClassFlag && ~isequal(jArray(idx).getClass,jArray(1).getClass)
+ sameClassFlag = false;
+ end
+ catch
+ if (idx > 1) && sameClassFlag && ~isequal(class(jArray(idx)),class(jArray(1)))
+ sameClassFlag = false;
+ end
+ end
+ end
+ toolTipStr = [toolTipStr ''];
+
+ % Update the fully-qualified class name label
+ if sameClassFlag
+ classNameStr = class(jArray(1));
+ else
+ classNameStr = 'handle';
+ end
+ if all(ishghandle(jArray))
+ if strcmp(classNameStr,'handle')
+ classNameStr = 'HG handles';
+ else
+ classNameStr = [classNameStr ' (HG handles)'];
+ end
+ end
+ classNameStr = [' ' num2str(numSelections) 'x ' classNameStr];
+ userdata.classNameLabel.setText(classNameStr);
+ userdata.classNameLabel.setToolTipText(toolTipStr);
+
+ % Update the data properties inspector pane
+ %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround
+ if isjava(jArray)
+ jjArray = jArray;
+ else
+ jjArray = javaArray('java.lang.Object', numSelections);
+ for idx = 1 : numSelections
+ jjArray(idx) = java(jArray(idx));
+ end
+ end
+ userdata.inspectorPane.getRegistry.setSelected(jjArray, true);
+
+ % Update the callbacks table
+ try
+ % Get intersecting callback names & values
+ stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs');
+ [cbData, cbHeaders, cbTableEnabled] = getCbsData(jArray(1), stripStdCbsFlag); %#ok cbHeaders & cbTableEnabled unused
+ if ~isempty(cbData)
+ cbNames = cbData(:,1);
+ for idx = 2 : length(jArray)
+ [cbData2, cbHeaders2] = getCbsData(jArray(idx), stripStdCbsFlag); %#ok cbHeaders2 unused
+ if ~isempty(cbData2)
+ newCbNames = cbData2(:,1);
+ [cbNames, cbIdx, cb2Idx] = intersect(cbNames,newCbNames); %#ok cb2Idx unused
+ cbData = cbData(cbIdx,:);
+ for cbIdx = 1 : length(cbNames)
+ newIdx = find(strcmp(cbNames{cbIdx},newCbNames));
+ if ~isequal(cbData2,cbData) && ~isequal(cbData2{newIdx,2}, cbData{cbIdx,2})
+ cbData{cbIdx,2} = '';
+ end
+ end
+ else
+ cbData = cbData([],:); %=empty cell array
+ end
+ if isempty(cbData)
+ break;
+ end
+ end
+ end
+ cbHeaders = {'Callback name','Callback value'};
+ try
+ % Use JideTable if available on this system
+ list = getTreeData(cbData); %#ok
+ callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ % Expand if only one category
+ if length(callbacksTableModel.getCategories)==1
+ callbacksTableModel.expandFirstLevel;
+ end
+ catch
+ callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders);
+ end
+ set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,jArray,userdata.callbacksTable});
+ %set(callbacksTableModel, 'UserData',jArray);
+ userdata.callbacksTable.setModel(callbacksTableModel)
+ userdata.callbacksTable.setRowAutoResizes(true);
+ userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable);
+ catch
+ % never mind...
+ dispError
+ end
+
+ pause(0.005);
+ drawnow;
+ %restoreDbstopError(identifiers);
+
+ % Highlight the selected objects (if visible)
+ flashComponent(jArray,0.2,3);
+ end
+
+ % TODO: Auto-highlight selected object (?)
+ %nodeHandle.requestFocus;
+ end
+ catch
+ dispError
+ end
+ end
+
+ %% IFF utility function for annonymous cellfun funcs
+ function result = iff(test,trueVal,falseVal) %#ok
+ try
+ if test
+ result = trueVal;
+ else
+ result = falseVal;
+ end
+ catch
+ result = false;
+ end
+ end
+
+ %% Get an HTML representation of the object's properties
+ function dataFieldsStr = getPropsHtml(nodeHandle, dataFields)
+ try
+ % Get a text representation of the fieldnames & values
+ undefinedStr = '';
+ hiddenStr = '';
+ dataFieldsStr = ''; % just in case the following croaks...
+ if isempty(dataFields)
+ return;
+ end
+ dataFieldsStr = evalc('disp(dataFields)');
+ if dataFieldsStr(end)==char(10), dataFieldsStr=dataFieldsStr(1:end-1); end
+
+ % Strip out callbacks
+ dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*Callback(Data)?:[^\n]*$','','lineanchors');
+
+ % Strip out internal HG2 mirror properties
+ dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*_I:[^\n]*$','','lineanchors');
+ dataFieldsStr = regexprep(dataFieldsStr,'\n\n+','\n');
+
+ % Sort the fieldnames
+ %fieldNames = fieldnames(dataFields);
+ try
+ [a,b,c,d] = regexp(dataFieldsStr,'(\w*): ');
+ fieldNames = strrep(d,': ','');
+ catch
+ fieldNames = fieldnames(dataFields);
+ end
+ try
+ [fieldNames, sortedIdx] = sort(fieldNames);
+ s = strsplit(dataFieldsStr, sprintf('\n'))';
+ dataFieldsStr = strjoin(s(sortedIdx), sprintf('\n'));
+ catch
+ % never mind... - ignore, leave unsorted
+ end
+
+ % Convert into a Matlab handle()
+ %nodeHandle = handle(nodeHandle);
+ try
+ % ensure this is a Matlab handle, not a java object
+ nodeHandle = handle(nodeHandle, 'CallbackProperties');
+ catch
+ try
+ % HG handles don't allow CallbackProperties...
+ nodeHandle = handle(nodeHandle);
+ catch
+ % Some Matlab class objects simply cannot be converted into a handle()
+ end
+ end
+
+ % HTMLize tooltip data
+ % First, set the fields' font based on its read-write status
+ for fieldIdx = 1 : length(fieldNames)
+ thisFieldName = fieldNames{fieldIdx};
+ %accessFlags = get(findprop(nodeHandle,thisFieldName),'AccessFlags');
+ try
+ hProp = findprop(nodeHandle,thisFieldName);
+ accessFlags = get(hProp,'AccessFlags');
+ visible = get(hProp,'Visible');
+ catch
+ accessFlags = [];
+ visible = 'on';
+ try if hProp.Hidden, visible='off'; end, catch, end
+ end
+ %if isfield(accessFlags,'PublicSet') && strcmp(accessFlags.PublicSet,'on')
+ if (~isempty(hProp) && isprop(hProp,'SetAccess') && isequal(hProp.SetAccess,'public')) || ... % isequal(...'public') and not strcmpi(...) because might be a cell array of classes
+ (~isempty(accessFlags) && isfield(accessFlags,'PublicSet') && strcmpi(accessFlags.PublicSet,'on'))
+ % Bolden read/write fields
+ thisFieldFormat = ['' thisFieldName ' :$2'];
+ %elseif ~isfield(accessFlags,'PublicSet')
+ elseif (isempty(hProp) || ~isprop(hProp,'SetAccess')) && ...
+ (isempty(accessFlags) || ~isfield(accessFlags,'PublicSet'))
+ % Undefined - probably a Matlab-defined field of com.mathworks.hg.peer.FigureFrameProxy...
+ thisFieldFormat = ['' thisFieldName ' :$2'];
+ undefinedStr = ', undefined ';
+ else % PublicSet=='off'
+ % Gray-out & italicize any read-only fields
+ thisFieldFormat = ['' thisFieldName ' :$2 '];
+ end
+ if strcmpi(visible,'off')
+ %thisFieldFormat = ['' thisFieldFormat ' ']; %#ok
+ thisFieldFormat = regexprep(thisFieldFormat, {'(.*):(.*)','<.?b>'}, {'$1:$2',''}); %'(.*):(.*)', '$1:$2');
+ hiddenStr = ', hidden ';
+ end
+ dataFieldsStr = regexprep(dataFieldsStr, ['([\s\n])' thisFieldName ':([^\n]*)'], ['$1' thisFieldFormat]);
+ end
+ catch
+ % never mind... - probably an ambiguous property name
+ %dispError
+ end
+
+ % Method 1: simple list
+ %dataFieldsStr = strrep(dataFieldsStr,char(10),' ');
+
+ % Method 2: 2-column
+ dataFieldsStr = regexprep(dataFieldsStr, '^\s*([^:]+:)([^\n]*)\n^\s*([^:]+:)([^\n]*)$', ' $1 $2 $3 $4 ', 'lineanchors');
+ dataFieldsStr = regexprep(dataFieldsStr, '^[^<]\s*([^:]+:)([^\n]*)$', ' $1 $2 ', 'lineanchors');
+ dataFieldsStr = ['(documented ' undefinedStr hiddenStr ' & read-only fields)
'];
+ end
+
+ %% Update tooltip string with a node's data
+ function updateNodeTooltip(nodeHandle, uiObject)
+ try
+ toolTipStr = class(nodeHandle);
+ dataFieldsStr = '';
+
+ % Add HG annotation if relevant
+ if ishghandle(nodeHandle)
+ hgStr = ' HG Handle';
+ else
+ hgStr = '';
+ end
+
+ % Prevent HG-Java warnings
+ oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty');
+ warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty');
+ warning('off','MATLAB:hg:Root');
+
+ % Note: don't bulk-get because (1) not all properties are returned & (2) some properties cause a Java exception
+ % Note2: the classhandle approach does not enable access to user-defined schema.props
+ ch = classhandle(handle(nodeHandle));
+ dataFields = [];
+ [sortedNames, sortedIdx] = sort(get(ch.Properties,'Name'));
+ for idx = 1 : length(sortedIdx)
+ sp = ch.Properties(sortedIdx(idx));
+ % TODO: some fields (see EOL comment below) generate a Java Exception from: com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run
+ if strcmp(sp.AccessFlags.PublicGet,'on') % && ~any(strcmp(sp.Name,{'FixedColors','ListboxTop','Extent'}))
+ try
+ dataFields.(sp.Name) = get(nodeHandle, sp.Name);
+ catch
+ dataFields.(sp.Name) = 'Error! ';
+ end
+ else
+ dataFields.(sp.Name) = '(no public getter method)';
+ end
+ end
+ dataFieldsStr = getPropsHtml(nodeHandle, dataFields);
+ catch
+ % Probably a non-HG java object
+ try
+ % Note: the bulk-get approach enables access to user-defined schema-props, but not to some original classhandle Properties...
+ try
+ oldWarn3 = warning('off','MATLAB:structOnObject');
+ dataFields = struct(nodeHandle);
+ warning(oldWarn3);
+ catch
+ dataFields = get(nodeHandle);
+ end
+ dataFieldsStr = getPropsHtml(nodeHandle, dataFields);
+ catch
+ % Probably a missing property getter implementation
+ try
+ % Inform the user - bail out on error
+ err = lasterror; %#ok
+ dataFieldsStr = ['' strrep(err.message, char(10), ' ')];
+ catch
+ % forget it...
+ end
+ end
+ end
+
+ % Restore warnings
+ try warning(oldWarn); catch, end
+
+ % Set the object tooltip
+ if ~isempty(dataFieldsStr)
+ toolTipStr = [' ' char(toolTipStr) ' ' hgStr ': ' dataFieldsStr ''];
+ end
+ uiObject.setToolTipText(toolTipStr);
+ end
+
+ %% Expand tree node
+ function nodeExpanded(src, evd, tree) %#ok
+ % tree = handle(src);
+ % evdsrc = evd.getSource;
+ evdnode = evd.getCurrentNode;
+
+ if ~tree.isLoaded(evdnode)
+
+ % Get the list of children TreeNodes
+ childnodes = getChildrenNodes(tree, evdnode);
+
+ % Add the HG sub-tree (unless already included in the first tree)
+ childHandle = getappdata(evdnode.handle,'childHandle'); %=evdnode.getUserObject
+ if evdnode.isRoot && ~isempty(hg_handles) && ~isequal(hg_handles(1).java, childHandle)
+ childnodes = [childnodes, getChildrenNodes(tree, evdnode, true)];
+ end
+
+ % If we have a single child handle, wrap it within a javaArray for tree.add() to "swallow"
+ if (length(childnodes) == 1)
+ chnodes = childnodes;
+ childnodes = javaArray('com.mathworks.hg.peer.UITreeNode', 1);
+ childnodes(1) = java(chnodes);
+ end
+
+ % Add child nodes to the current node
+ tree.add(evdnode, childnodes);
+ tree.setLoaded(evdnode, true);
+ end
+ end
+
+ %% Get an icon image no larger than 16x16 pixels
+ function iconImage = setIconSize(iconImage)
+ try
+ iconWidth = iconImage.getWidth;
+ iconHeight = iconImage.getHeight;
+ if iconWidth > 16
+ newHeight = fix(iconHeight * 16 / iconWidth);
+ iconImage = iconImage.getScaledInstance(16,newHeight,iconImage.SCALE_SMOOTH);
+ elseif iconHeight > 16
+ newWidth = fix(iconWidth * 16 / iconHeight);
+ iconImage = iconImage.getScaledInstance(newWidth,16,iconImage.SCALE_SMOOTH);
+ end
+ catch
+ % never mind... - return original icon
+ end
+ end % setIconSize
+
+ %% Get list of children nodes
+ function nodes = getChildrenNodes(tree, parentNode, isRootHGNode)
+ try
+ iconpath = [matlabroot, '/toolbox/matlab/icons/'];
+ nodes = handle([]);
+ try
+ userdata = get(tree,'userdata');
+ catch
+ userdata = getappdata(handle(tree),'userdata');
+ end
+ hdls = userdata.handles;
+ nodedata = get(parentNode,'userdata');
+ if nargin < 3
+ %isJavaNode = ~ishghandle(parentNode.getUserObject);
+ isJavaNode = ~ishghandle(nodedata.obj);
+ isRootHGNode = false;
+ else
+ isJavaNode = ~isRootHGNode;
+ end
+
+ % Search for this parent node in the list of all nodes
+ parents = userdata.parents;
+ nodeIdx = nodedata.idx;
+
+ if isJavaNode && isempty(nodeIdx) % Failback, in case userdata doesn't work for some reason...
+ for hIdx = 1 : length(hdls)
+ %if isequal(handle(parentNode.getUserObject), hdls(hIdx))
+ if isequal(handle(nodedata.obj), hdls(hIdx))
+ nodeIdx = hIdx;
+ break;
+ end
+ end
+ end
+ if ~isJavaNode
+ if isRootHGNode % =root HG node
+ thisChildHandle = userdata.hg_handles(1);
+ childName = getNodeName(thisChildHandle);
+ hasGrandChildren = any(parents==1);
+ icon = [];
+ if hasGrandChildren && length(hg_handles)>1
+ childName = childName.concat(' - HG root container');
+ icon = [iconpath 'figureicon.gif'];
+ end
+ try
+ nodes = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch % old matlab version don't have the 'v0' option
+ try
+ nodes = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch
+ % probably an invalid handle - ignore...
+ end
+ end
+
+ % Add the handler to the node's internal data
+ % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes
+ % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata
+ %nodes.setUserObject(thisChildHandle);
+ setappdata(nodes,'childHandle',thisChildHandle);
+ nodedata.idx = 1;
+ nodedata.obj = thisChildHandle;
+ set(nodes,'userdata',nodedata);
+ return;
+ else % non-root HG node
+ parents = userdata.hg_parents;
+ hdls = userdata.hg_handles;
+ end % if isRootHGNode
+ end % if ~isJavaNode
+
+ % If this node was found, get the list of its children
+ if ~isempty(nodeIdx)
+ %childIdx = setdiff(find(parents==nodeIdx),nodeIdx);
+ childIdx = find(parents==nodeIdx);
+ childIdx(childIdx==nodeIdx) = []; % faster...
+ numChildren = length(childIdx);
+ for cIdx = 1 : numChildren
+ thisChildIdx = childIdx(cIdx);
+ try thisChildHandle = hdls(thisChildIdx); catch, continue, end
+ childName = getNodeName(thisChildHandle);
+ try
+ visible = thisChildHandle.Visible;
+ if visible
+ try visible = thisChildHandle.Width > 0; catch, end %#ok
+ end
+ if ~visible
+ childName = ['' char(childName) ' ']; %#ok grow
+ end
+ catch
+ % never mind...
+ end
+ hasGrandChildren = any(parents==thisChildIdx);
+ try
+ isaLabel = isa(thisChildHandle.java,'javax.swing.JLabel');
+ catch
+ isaLabel = 0;
+ end
+ if hasGrandChildren && ~any(strcmp(class(thisChildHandle),{'axes'}))
+ icon = [iconpath 'foldericon.gif'];
+ elseif isaLabel
+ icon = [iconpath 'tool_text.gif'];
+ else
+ icon = [];
+ end
+ try
+ nodes(cIdx) = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch % old matlab version don't have the 'v0' option
+ try
+ nodes(cIdx) = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch
+ % probably an invalid handle - ignore...
+ end
+ end
+
+ % Use existing object icon, if available
+ try
+ setTreeNodeIcon(nodes(cIdx),thisChildHandle);
+ catch
+ % probably an invalid handle - ignore...
+ end
+
+ % Pre-select the node based upon the user's FINDJOBJ filters
+ try
+ if isJavaNode && ~userdata.userSelected && any(userdata.initialIdx == thisChildIdx)
+ pause(0.0002); % as short as possible...
+ drawnow;
+ if isempty(tree.getSelectedNodes)
+ tree.setSelectedNode(nodes(cIdx));
+ else
+ newSelectedNodes = [tree.getSelectedNodes, nodes(cIdx).java];
+ tree.setSelectedNodes(newSelectedNodes);
+ end
+ end
+ catch
+ % never mind...
+ end
+
+ % Add the handler to the node's internal data
+ % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes
+ % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata
+ % Note3: the following will error if invalid handle - ignore
+ try
+ if isJavaNode
+ thisChildHandle = thisChildHandle.java;
+ end
+ %nodes(cIdx).setUserObject(thisChildHandle);
+ setappdata(nodes(cIdx),'childHandle',thisChildHandle);
+ nodedata.idx = thisChildIdx;
+ nodedata.obj = thisChildHandle;
+ set(nodes(cIdx),'userdata',nodedata);
+ catch
+ % never mind (probably an invalid handle) - leave unchanged (like a leaf)
+ end
+ end
+ end
+ catch
+ % Never mind - leave unchanged (like a leaf)
+ %error('YMA:findjobj:UnknownNodeType', 'Error expanding component tree node');
+ dispError
+ end
+ end
+
+ %% Get a node's name
+ function [nodeName, nodeTitle] = getNodeName(hndl,charsLimit)
+ try
+ % Initialize (just in case one of the succeding lines croaks)
+ nodeName = '';
+ nodeTitle = '';
+ if ~ismethod(hndl,'getClass')
+ try
+ nodeName = class(hndl);
+ catch
+ nodeName = hndl.type; % last-ditch try...
+ end
+ else
+ nodeName = hndl.getClass.getSimpleName;
+ end
+
+ % Strip away the package name, leaving only the regular classname
+ if ~isempty(nodeName) && ischar(nodeName)
+ nodeName = java.lang.String(nodeName);
+ nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1);
+ end
+ if (nodeName.length == 0)
+ % fix case of anonymous internal classes, that do not have SimpleNames
+ try
+ nodeName = hndl.getClass.getName;
+ nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1);
+ catch
+ % never mind - leave unchanged...
+ end
+ end
+
+ % Get any unique identifying string (if available in one of several fields)
+ labelsToCheck = {'label','title','text','string','displayname','toolTipText','TooltipString','actionCommand','name','Tag','style'}; %,'UIClassID'};
+ nodeTitle = '';
+ strField = ''; %#ok - used for debugging
+ while ((~isa(nodeTitle,'java.lang.String') && ~ischar(nodeTitle)) || isempty(nodeTitle)) && ~isempty(labelsToCheck)
+ try
+ nodeTitle = get(hndl,labelsToCheck{1});
+ strField = labelsToCheck{1}; %#ok - used for debugging
+ catch
+ % never mind - probably missing prop, so skip to next one
+ end
+ labelsToCheck(1) = [];
+ end
+ if length(nodeTitle) ~= numel(nodeTitle)
+ % Multi-line - convert to a long single line
+ nodeTitle = nodeTitle';
+ nodeTitle = nodeTitle(:)';
+ end
+ if isempty(char(nodeTitle))
+ % No title - check whether this is an HG label whose text is gettable
+ try
+ location = hndl.getLocationOnScreen;
+ pos = [location.getX, location.getY, hndl.getWidth, hndl.getHeight];
+ %dist = sum((labelPositions-repmat(pos,size(labelPositions,1),[1,1,1,1])).^2, 2);
+ dist = sum((labelPositions-repmat(pos,[size(labelPositions,1),1])).^2, 2);
+ [minVal,minIdx] = min(dist);
+ % Allow max distance of 8 = 2^2+2^2 (i.e. X&Y off by up to 2 pixels, W&H exact)
+ if minVal <= 8 % 8=2^2+2^2
+ nodeTitle = get(hg_labels(minIdx),'string');
+ % Preserve the label handles & position for the tooltip & context-menu
+ %hg_labels(minIdx) = [];
+ %labelPositions(minIdx,:) = [];
+ end
+ catch
+ % never mind...
+ end
+ end
+ if nargin<2, charsLimit = 25; end
+ extraStr = regexprep(nodeTitle,{sprintf('(.{%d,%d}).*',charsLimit,min(charsLimit,length(nodeTitle)-1)),' +'},{'$1...',' '},'once');
+ if ~isempty(extraStr)
+ if ischar(extraStr)
+ nodeName = nodeName.concat(' (''').concat(extraStr).concat(''')');
+ else
+ nodeName = nodeName.concat(' (').concat(num2str(extraStr)).concat(')');
+ end
+ %nodeName = nodeName.concat(strField);
+ end
+ catch
+ % Never mind - use whatever we have so far
+ %dispError
+ end
+ end
+
+ %% Strip standard Swing callbacks from a list of events
+ function evNames = stripStdCbs(evNames)
+ try
+ stdEvents = {'AncestorAdded', 'AncestorMoved', 'AncestorRemoved', 'AncestorResized', ...
+ 'ComponentAdded', 'ComponentRemoved', 'ComponentHidden', ...
+ 'ComponentMoved', 'ComponentResized', 'ComponentShown', ...
+ 'FocusGained', 'FocusLost', 'HierarchyChanged', ...
+ 'KeyPressed', 'KeyReleased', 'KeyTyped', ...
+ 'MouseClicked', 'MouseDragged', 'MouseEntered', 'MouseExited', ...
+ 'MouseMoved', 'MousePressed', 'MouseReleased', 'MouseWheelMoved', ...
+ 'PropertyChange', 'VetoableChange', ...
+ 'CaretPositionChanged', 'InputMethodTextChanged', ...
+ 'ButtonDown', 'Create', 'Delete'};
+ stdEvents = [stdEvents, strcat(stdEvents,'Callback'), strcat(stdEvents,'Fcn')];
+ evNames = setdiff(evNames,stdEvents)';
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for checkbox
+ function cbHideStdCbs_Callback(src, evd, callbacksTable, varargin) %#ok
+ try
+ % Store the current checkbox value for later use
+ if nargin < 3
+ try
+ callbacksTable = get(src,'userdata');
+ catch
+ callbacksTable = getappdata(src,'userdata');
+ end
+ end
+ if evd.getSource.isSelected
+ setappdata(callbacksTable,'hideStdCbs',1);
+ else
+ setappdata(callbacksTable,'hideStdCbs',[]);
+ end
+
+ % Rescan the current node
+ try
+ userdata = get(callbacksTable,'userdata');
+ catch
+ userdata = getappdata(callbacksTable,'userdata');
+ end
+ nodepath = userdata.jTree.getSelectionModel.getSelectionPath;
+ try
+ ed.getCurrentNode = nodepath.getLastPathComponent;
+ nodeSelected(handle(userdata.jTreePeer),ed,[]);
+ catch
+ % ignore - probably no node selected
+ end
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btWebsite_Callback(src, evd, varargin) %#ok
+ try
+ web('http://UndocumentedMatlab.com','-browser');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btRefresh_Callback(src, evd, varargin) %#ok
+ try
+ % Set cursor shape to hourglass until we're done
+ hTreeFig = varargin{2};
+ set(hTreeFig,'Pointer','watch');
+ drawnow;
+ object = varargin{1};
+
+ % Re-invoke this utility to re-scan the container for all children
+ findjobj(object);
+ catch
+ % Never mind...
+ end
+
+ % Restore default cursor shape
+ set(hTreeFig,'Pointer','arrow');
+ end
+
+ %% Callback function for button
+ function btExport_Callback(src, evd, varargin) %#ok
+ try
+ % Get the list of all selected nodes
+ if length(varargin) > 1
+ jTree = varargin{1};
+ numSelections = jTree.getSelectionCount;
+ selectionPaths = jTree.getSelectionPaths;
+ hdls = handle([]);
+ for idx = 1 : numSelections
+ %hdls(idx) = handle(selectionPaths(idx).getLastPathComponent.getUserObject);
+ nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata');
+ try
+ hdls(idx) = handle(nodedata.obj,'CallbackProperties');
+ catch
+ if idx==1 % probably due to HG2: can't convert object to handle([])
+ hdls = nodedata.obj;
+ else
+ hdls(idx) = nodedata.obj;
+ end
+ end
+ end
+
+ % Assign the handles in the base workspace & inform user
+ assignin('base','findjobj_hdls',hdls);
+ classNameLabel = varargin{2};
+ msg = ['Exported ' char(classNameLabel.getText.trim) ' to base workspace variable findjobj_hdls'];
+ else
+ % Right-click (context-menu) callback
+ data = varargin{1};
+ obj = data{1};
+ varName = data{2};
+ if isempty(varName)
+ varName = inputdlg('Enter workspace variable name','FindJObj');
+ if isempty(varName), return; end % bail out on
+ varName = varName{1};
+ if isempty(varName) || ~ischar(varName), return; end % bail out on empty/null
+ varName = genvarname(varName);
+ end
+ assignin('base',varName,handle(obj,'CallbackProperties'));
+ msg = ['Exported object to base workspace variable ' varName];
+ end
+ msgbox(msg,'FindJObj','help');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btFocus_Callback(src, evd, varargin) %#ok
+ try
+ % Request focus for the specified object
+ object = getTopSelectedObject(varargin{:});
+ object.requestFocus;
+ catch
+ try
+ object = object.java.getPeer.requestFocus;
+ object.requestFocus;
+ catch
+ % Never mind...
+ %dispError
+ end
+ end
+ end
+
+ %% Callback function for button
+ function btInspect_Callback(src, evd, varargin) %#ok
+ try
+ % Inspect the specified object
+ if length(varargin) == 1
+ object = varargin{1};
+ else
+ object = getTopSelectedObject(varargin{:});
+ end
+ if isempty(which('uiinspect'))
+
+ % If the user has not indicated NOT to be informed about UIInspect
+ if ~ispref('FindJObj','dontCheckUIInspect')
+
+ % Ask the user whether to download UIINSPECT (YES, no, no & don't ask again)
+ answer = questdlg({'The object inspector requires UIINSPECT from the MathWorks File Exchange. UIINSPECT was created by Yair Altman, like this FindJObj utility.','','Download & install UIINSPECT?'},'UIInspect','Yes','No','No & never ask again','Yes');
+ switch answer
+ case 'Yes' % => Yes: download & install
+ try
+ % Download UIINSPECT
+ baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/17935';
+ fileUrl = [baseUrl '?controller=file_infos&download=true'];
+ %file = urlread(fileUrl);
+ %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL
+
+ % Install...
+ %newPath = fullfile(fileparts(which(mfilename)),'uiinspect.m');
+ %fid = fopen(newPath,'wt');
+ %fprintf(fid,'%s',file);
+ %fclose(fid);
+ [fpath,fname,fext] = fileparts(which(mfilename));
+ zipFileName = fullfile(fpath,'uiinspect.zip');
+ urlwrite(fileUrl,zipFileName);
+ unzip(zipFileName,fpath);
+ rehash;
+ catch
+ % Error downloading: inform the user
+ msgbox(['Error in downloading: ' lasterr], 'UIInspect', 'warn'); %#ok
+ web(baseUrl);
+ end
+
+ % ...and now run it...
+ %pause(0.1);
+ drawnow;
+ dummy = which('uiinspect'); %#ok used only to load into memory
+ uiinspect(object);
+ return;
+
+ case 'No & never ask again' % => No & don't ask again
+ setpref('FindJObj','dontCheckUIInspect',1);
+
+ otherwise
+ % forget it...
+ end
+ end
+ drawnow;
+
+ % No UIINSPECT available - run the good-ol' METHODSVIEW()...
+ methodsview(object);
+ else
+ uiinspect(object);
+ end
+ catch
+ try
+ if isjava(object)
+ methodsview(object)
+ else
+ methodsview(object.java);
+ end
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+ end
+
+ %% Callback function for button
+ function btCheckFex_Callback(src, evd, varargin) %#ok
+ try
+ % Check the FileExchange for the latest version
+ web('http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Check for existence of a newer version
+ function checkVersion()
+ try
+ % If the user has not indicated NOT to be informed
+ if ~ispref('FindJObj','dontCheckNewerVersion')
+
+ % Get the latest version date from the File Exchange webpage
+ baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/';
+ webUrl = [baseUrl '14317']; % 'loadFile.do?objectId=14317'];
+ webPage = urlread(webUrl);
+ modIdx = strfind(webPage,'>Updates<');
+ if ~isempty(modIdx)
+ webPage = webPage(modIdx:end);
+ % Note: regexp hangs if substr not found, so use strfind instead...
+ %latestWebVersion = regexprep(webPage,'.*?>(20[\d-]+).*','$1');
+ dateIdx = strfind(webPage,'class="date">');
+ if ~isempty(dateIdx)
+ latestDate = webPage(dateIdx(end)+13 : dateIdx(end)+23);
+ try
+ startIdx = dateIdx(end)+27;
+ descStartIdx = startIdx + strfind(webPage(startIdx:startIdx+999),'');
+ descEndIdx = startIdx + strfind(webPage(startIdx:startIdx+999),' ');
+ descStr = webPage(descStartIdx(1)+3 : descEndIdx(1)-2);
+ descStr = regexprep(descStr,'?[pP]>','');
+ catch
+ descStr = '';
+ end
+
+ % Get this file's latest date
+ thisFileName = which(mfilename); %#ok
+ try
+ thisFileData = dir(thisFileName);
+ try
+ thisFileDatenum = thisFileData.datenum;
+ catch % old ML versions...
+ thisFileDatenum = datenum(thisFileData.date);
+ end
+ catch
+ thisFileText = evalc('type(thisFileName)');
+ thisFileLatestDate = regexprep(thisFileText,'.*Change log:[\s%]+([\d-]+).*','$1');
+ thisFileDatenum = datenum(thisFileLatestDate,'yyyy-mm-dd');
+ end
+
+ % If there's a newer version on the File Exchange webpage (allow 2 days grace period)
+ if (thisFileDatenum < datenum(latestDate,'dd mmm yyyy')-2)
+
+ % Ask the user whether to download the newer version (YES, no, no & don't ask again)
+ msg = {['A newer version (' latestDate ') of FindJObj is available on the MathWorks File Exchange:'], '', ...
+ ['\color{blue}' descStr '\color{black}'], '', ...
+ 'Download & install the new version?'};
+ createStruct.Interpreter = 'tex';
+ createStruct.Default = 'Yes';
+ answer = questdlg(msg,'FindJObj','Yes','No','No & never ask again',createStruct);
+ switch answer
+ case 'Yes' % => Yes: download & install newer file
+ try
+ %fileUrl = [baseUrl '/download.do?objectId=14317&fn=findjobj&fe=.m'];
+ fileUrl = [baseUrl '/14317?controller=file_infos&download=true'];
+ %file = urlread(fileUrl);
+ %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL
+ %fid = fopen(thisFileName,'wt');
+ %fprintf(fid,'%s',file);
+ %fclose(fid);
+ [fpath,fname,fext] = fileparts(thisFileName);
+ zipFileName = fullfile(fpath,[fname '.zip']);
+ urlwrite(fileUrl,zipFileName);
+ unzip(zipFileName,fpath);
+ rehash;
+ catch
+ % Error downloading: inform the user
+ msgbox(['Error in downloading: ' lasterr], 'FindJObj', 'warn'); %#ok
+ web(webUrl);
+ end
+ case 'No & never ask again' % => No & don't ask again
+ setpref('FindJObj','dontCheckNewerVersion',1);
+ otherwise
+ % forget it...
+ end
+ end
+ end
+ else
+ % Maybe webpage not fully loaded or changed format - bail out...
+ end
+ end
+ catch
+ % Never mind...
+ end
+ end
+
+ %% Get the first selected object (might not be the top one - depends on selection order)
+ function object = getTopSelectedObject(jTree, root)
+ try
+ object = [];
+ numSelections = jTree.getSelectionCount;
+ if numSelections > 0
+ % Get the first object specified
+ %object = jTree.getSelectionPath.getLastPathComponent.getUserObject;
+ nodedata = get(jTree.getSelectionPath.getLastPathComponent,'userdata');
+ else
+ % Get the root object (container)
+ %object = root.getUserObject;
+ nodedata = get(root,'userdata');
+ end
+ object = nodedata.obj;
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Update component callback upon callbacksTable data change
+ function tbCallbacksChanged(src, evd, object, table)
+ persistent hash
+ try
+ % exit if invalid handle or already in Callback
+ %if ~ishandle(src) || ~isempty(getappdata(src,'inCallback')) % || length(dbstack)>1 %exit also if not called from user action
+ if isempty(hash), hash = java.util.Hashtable; end
+ if ~ishandle(src) || ~isempty(hash.get(src)) % || length(dbstack)>1 %exit also if not called from user action
+ return;
+ end
+ %setappdata(src,'inCallback',1); % used to prevent endless recursion % can't use getappdata(src,...) because it fails on R2010b!!!
+ hash.put(src,1);
+
+ % Update the object's callback with the modified value
+ modifiedColIdx = evd.getColumn;
+ modifiedRowIdx = evd.getFirstRow;
+ if modifiedRowIdx>=0 %&& modifiedColIdx==1 %sanity check - should always be true
+ %table = evd.getSource;
+ %object = get(src,'userdata');
+ modifiedRowIdx = table.getSelectedRow; % overcome issues with hierarchical table
+ cbName = strtrim(table.getValueAt(modifiedRowIdx,0));
+ try
+ cbValue = strtrim(char(table.getValueAt(modifiedRowIdx,1)));
+ if ~isempty(cbValue) && ismember(cbValue(1),'{[@''')
+ cbValue = eval(cbValue);
+ end
+ if (~ischar(cbValue) && ~isa(cbValue, 'function_handle') && (~iscell(cbValue) || iscom(object(1))))
+ revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, '');
+ else
+ for objIdx = 1 : length(object)
+ obj = object(objIdx);
+ if ~iscom(obj)
+ try
+ try
+ if isjava(obj)
+ obj = handle(obj,'CallbackProperties');
+ end
+ catch
+ % never mind...
+ end
+ set(obj, cbName, cbValue);
+ catch
+ try
+ set(handle(obj,'CallbackProperties'), cbName, cbValue);
+ catch
+ % never mind - probably a callback-group header
+ end
+ end
+ else
+ cbs = obj.eventlisteners;
+ if ~isempty(cbs)
+ cbs = cbs(strcmpi(cbs(:,1),cbName),:);
+ obj.unregisterevent(cbs);
+ end
+ if ~isempty(cbValue) && ~strcmp(cbName,'-')
+ obj.registerevent({cbName, cbValue});
+ end
+ end
+ end
+ end
+ catch
+ revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, lasterr) %#ok
+ end
+ end
+ catch
+ % never mind...
+ end
+ %setappdata(src,'inCallback',[]); % used to prevent endless recursion % can't use setappdata(src,...) because it fails on R2010b!!!
+ hash.remove(src);
+ end
+
+ %% Revert Callback table modification
+ function revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, errMsg) %#ok
+ try
+ % Display a notification MsgBox
+ msg = 'Callbacks must be a ''string'', or a @function handle';
+ if ~iscom(object(1)), msg = [msg ' or a {@func,args...} construct']; end
+ if ~isempty(errMsg), msg = {errMsg, '', msg}; end
+ msgbox(msg, ['Error setting ' cbName ' value'], 'warn');
+
+ % Revert to the current value
+ curValue = '';
+ try
+ if ~iscom(object(1))
+ curValue = charizeData(get(object(1),cbName));
+ else
+ cbs = object(1).eventlisteners;
+ if ~isempty(cbs)
+ cbs = cbs(strcmpi(cbs(:,1),cbName),:);
+ curValue = charizeData(cbs(1,2));
+ end
+ end
+ catch
+ % never mind... - clear the current value
+ end
+ table.setValueAt(curValue, modifiedRowIdx, modifiedColIdx);
+ catch
+ % never mind...
+ end
+ end % revertCbTableModification
+
+ %% Get the Java positions of all HG text labels
+ function labelPositions = getLabelsJavaPos(container)
+ try
+ labelPositions = [];
+
+ % Ensure we have a figure handle
+ try
+ h = hFig; %#ok unused
+ catch
+ hFig = getCurrentFigure;
+ end
+
+ % Get the figure's margins from the Matlab properties
+ hg_labels = findall(hFig, 'Style','text');
+ units = get(hFig,'units');
+ set(hFig,'units','pixels');
+ outerPos = get(hFig,'OuterPosition');
+ innerPos = get(hFig,'Position');
+ set(hFig,'units',units);
+ margins = abs(innerPos-outerPos);
+
+ figX = container.getX; % =outerPos(1)
+ figY = container.getY; % =outerPos(2)
+ %figW = container.getWidth; % =outerPos(3)
+ figH = container.getHeight; % =outerPos(4)
+
+ % Get the relevant screen pixel size
+ %monitorPositions = get(0,'MonitorPositions');
+ %for monitorIdx = size(monitorPositions,1) : -1 : 1
+ % screenSize = monitorPositions(monitorIdx,:);
+ % if (outerPos(1) >= screenSize(1)) % && (outerPos(1)+outerPos(3) <= screenSize(3))
+ % break;
+ % end
+ %end
+ %monitorBaseY = screenSize(4) - monitorPositions(1,4);
+
+ % Compute the labels' screen pixel position in Java units ([0,0] = top left)
+ for idx = 1 : length(hg_labels)
+ matlabPos = getpixelposition(hg_labels(idx),1);
+ javaX = figX + matlabPos(1) + margins(1);
+ javaY = figY + figH - matlabPos(2) - matlabPos(4) - margins(2);
+ labelPositions(idx,:) = [javaX, javaY, matlabPos(3:4)]; %#ok grow
+ end
+ catch
+ % never mind...
+ err = lasterror; %#ok debug point
+ end
+ end
+
+ %% Traverse an HG container hierarchy and extract the HG elements within
+ function traverseHGContainer(hcontainer,level,parent)
+ try
+ % Record the data for this node
+ thisIdx = length(hg_levels) + 1;
+ hg_levels(thisIdx) = level;
+ hg_parentIdx(thisIdx) = parent;
+ try
+ hg_handles(thisIdx) = handle(hcontainer);
+ catch
+ hg_handles = handle(hcontainer);
+ end
+ parentId = length(hg_parentIdx);
+
+ % Now recursively process all this node's children (if any)
+ %if ishghandle(hcontainer)
+ try % try-catch is faster than checking ishghandle(hcontainer)...
+ allChildren = allchild(handle(hcontainer));
+ for childIdx = 1 : length(allChildren)
+ traverseHGContainer(allChildren(childIdx),level+1,parentId);
+ end
+ catch
+ % do nothing - probably not a container
+ %dispError
+ end
+
+ % TODO: Add axis (plot) component handles
+ catch
+ % forget it...
+ end
+ end
+
+ %% Debuggable "quiet" error-handling
+ function dispError
+ err = lasterror; %#ok
+ msg = err.message;
+ for idx = 1 : length(err.stack)
+ filename = err.stack(idx).file;
+ if ~isempty(regexpi(filename,mfilename))
+ funcname = err.stack(idx).name;
+ line = num2str(err.stack(idx).line);
+ msg = [msg ' at ' funcname ' line #' line ' ']; %#ok grow
+ break;
+ end
+ end
+ disp(msg);
+ return; % debug point
+ end
+
+ %% ML 7.0 - compatible ischar() function
+ function flag = ischar(data)
+ try
+ flag = builtin('ischar',data);
+ catch
+ flag = isa(data,'char');
+ end
+ end
+
+ %% Set up the uitree context (right-click) menu
+ function jmenu = setTreeContextMenu(obj,node,tree_h)
+ % Prepare the context menu (note the use of HTML labels)
+ import javax.swing.*
+ titleStr = getNodeTitleStr(obj,node);
+ titleStr = regexprep(titleStr,' .*','');
+ menuItem0 = JMenuItem(titleStr);
+ menuItem0.setEnabled(false);
+ menuItem0.setArmed(false);
+ %menuItem1 = JMenuItem('Export handle to findjobj_hdls');
+ if isjava(obj), prefix = 'j'; else, prefix = 'h'; end %#ok
+ varname = strrep([prefix strtok(char(node.getName))], '$','_');
+ varname = genvarname(varname);
+ varname(2) = upper(varname(2)); % ensure lowerCamelCase
+ menuItem1 = JMenuItem(['Export handle to ' varname]);
+ menuItem2 = JMenuItem('Export handle to...');
+ menuItem3 = JMenuItem('Request focus (bring to front)');
+ menuItem4 = JMenuItem('Flash component borders');
+ menuItem5 = JMenuItem('Display properties & callbacks');
+ menuItem6 = JMenuItem('Inspect object');
+
+ % Set the menu items' callbacks
+ set(handle(menuItem1,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,varname}});
+ set(handle(menuItem2,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,[]}});
+ set(handle(menuItem3,'CallbackProperties'), 'ActionPerformedCallback', {@requestFocus,obj});
+ set(handle(menuItem4,'CallbackProperties'), 'ActionPerformedCallback', {@flashComponent,{obj,0.2,3}});
+ set(handle(menuItem5,'CallbackProperties'), 'ActionPerformedCallback', {@nodeSelected,{tree_h,node}});
+ set(handle(menuItem6,'CallbackProperties'), 'ActionPerformedCallback', {@btInspect_Callback,obj});
+
+ % Add all menu items to the context menu (with internal separator)
+ jmenu = JPopupMenu;
+ jmenu.add(menuItem0);
+ jmenu.addSeparator;
+ handleValue=[]; try handleValue = double(obj); catch, end; %#ok
+ if ~isempty(handleValue)
+ % For valid HG handles only
+ menuItem0a = JMenuItem('Copy handle value to clipboard');
+ set(handle(menuItem0a,'CallbackProperties'), 'ActionPerformedCallback', sprintf('clipboard(''copy'',%.99g)',handleValue));
+ jmenu.add(menuItem0a);
+ end
+ jmenu.add(menuItem1);
+ jmenu.add(menuItem2);
+ jmenu.addSeparator;
+ jmenu.add(menuItem3);
+ jmenu.add(menuItem4);
+ jmenu.add(menuItem5);
+ jmenu.add(menuItem6);
+ end % setTreeContextMenu
+
+ %% Set the mouse-press callback
+ function treeMousePressedCallback(hTree, eventData, tree_h) %#ok hTree is unused
+ if eventData.isMetaDown % right-click is like a Meta-button
+ % Get the clicked node
+ clickX = eventData.getX;
+ clickY = eventData.getY;
+ jtree = eventData.getSource;
+ treePath = jtree.getPathForLocation(clickX, clickY);
+ try
+ % Modify the context menu based on the clicked node
+ node = treePath.getLastPathComponent;
+ userdata = get(node,'userdata');
+ obj = userdata.obj;
+ jmenu = setTreeContextMenu(obj,node,tree_h);
+
+ % TODO: remember to call jmenu.remove(item) in item callback
+ % or use the timer hack shown here to remove the item:
+ % timerFcn = {@menuRemoveItem,jmenu,item};
+ % start(timer('TimerFcn',timerFcn,'StartDelay',0.2));
+
+ % Display the (possibly-modified) context menu
+ jmenu.show(jtree, clickX, clickY);
+ jmenu.repaint;
+
+ % This is for debugging:
+ userdata.tree = jtree;
+ setappdata(gcf,'findjobj_hgtree',userdata)
+ catch
+ % clicked location is NOT on top of any node
+ % Note: can also be tested by isempty(treePath)
+ end
+ end
+ end % treeMousePressedCallback
+
+ %% Remove the extra context menu item after display
+ function menuRemoveItem(hObj,eventData,jmenu,item) %#ok unused
+ jmenu.remove(item);
+ end % menuRemoveItem
+
+ %% Get the title for the tooltip and context (right-click) menu
+ function nodeTitleStr = getNodeTitleStr(obj,node)
+ try
+ % Display the full classname and object name in the tooltip
+ %nodeName = char(node.getName);
+ %nodeName = strrep(nodeName, '','');
+ %nodeName = strrep(nodeName, ' ','');
+ nodeName = char(getNodeName(obj,99));
+ [objClass,objName] = strtok(nodeName);
+ objName = objName(3:end-1); % strip leading ( and trailing )
+ if isempty(objName), objName = '(none found)'; end
+ nodeName = char(node.getName);
+ objClass = char(obj.getClass.getName);
+ nodeTitleStr = sprintf('Class name: %s Text/title: %s',objClass,objName);
+
+ % If the component is invisible, state this in the tooltip
+ if ~isempty(strfind(nodeName,'color="gray"'))
+ nodeTitleStr = [nodeTitleStr '*** Invisible *** '];
+ end
+ nodeTitleStr = [nodeTitleStr ' Right-click for context-menu'];
+ catch
+ % Possible not a Java object - try treating as an HG handle
+ try
+ handleValueStr = sprintf('#: %.99g ',double(obj));
+ try
+ type = '';
+ type = get(obj,'type');
+ type(1) = upper(type(1));
+ catch
+ if ~ishandle(obj)
+ type = ['Invalid ' char(node.getName) ' '];
+ handleValueStr = '!!! Perhaps this handle was deleted after this UIInspect tree was already drawn. Try to refresh by selecting any valid node handle';
+ end
+ end
+ nodeTitleStr = sprintf('%s handle %s',type,handleValueStr);
+ try
+ % If the component is invisible, state this in the tooltip
+ if strcmp(get(obj,'Visible'),'off')
+ nodeTitleStr = [nodeTitleStr 'Invisible '];
+ end
+ catch
+ % never mind...
+ end
+ catch
+ % never mind... - ignore
+ end
+ end
+ end % getNodeTitleStr
+
+ %% Handle tree mouse movement callback - used to set the tooltip & context-menu
+ function treeMouseMovedCallback(hTree, eventData)
+ try
+ x = eventData.getX;
+ y = eventData.getY;
+ jtree = eventData.getSource;
+ treePath = jtree.getPathForLocation(x, y);
+ try
+ % Set the tooltip string based on the hovered node
+ node = treePath.getLastPathComponent;
+ userdata = get(node,'userdata');
+ obj = userdata.obj;
+ tooltipStr = getNodeTitleStr(obj,node);
+ set(hTree,'ToolTipText',tooltipStr)
+ catch
+ % clicked location is NOT on top of any node
+ % Note: can also be tested by isempty(treePath)
+ end
+ catch
+ dispError;
+ end
+ return; % denug breakpoint
+ end % treeMouseMovedCallback
+
+ %% Request focus for a specific object handle
+ function requestFocus(hTree, eventData, obj) %#ok hTree & eventData are unused
+ % Ensure the object handle is valid
+ if isjava(obj)
+ obj.requestFocus;
+ return;
+ elseif ~ishandle(obj)
+ msgbox('The selected object does not appear to be a valid handle as defined by the ishandle() function. Perhaps this object was deleted after this hierarchy tree was already drawn. Refresh this tree by selecting a valid node handle and then retry.','FindJObj','warn');
+ beep;
+ return;
+ end
+
+ try
+ foundFlag = 0;
+ while ~foundFlag
+ if isempty(obj), return; end % sanity check
+ type = get(obj,'type');
+ obj = double(obj);
+ foundFlag = any(strcmp(type,{'figure','axes','uicontrol'}));
+ if ~foundFlag
+ obj = get(obj,'Parent');
+ end
+ end
+ feval(type,obj);
+ catch
+ % never mind...
+ dispError;
+ end
+ end % requestFocus
+
+end % FINDJOBJ
+
+% Fast implementation
+function jControl = findjobj_fast(hControl, jContainer)
+ try jControl = hControl.getTable; return, catch, end % fast bail-out for old uitables
+ try jControl = hControl.JavaFrame.getGUIDEView; return, catch, end % bail-out for HG2 matlab.ui.container.Panel
+ oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame');
+ if nargin < 2 || isempty(jContainer)
+ % Use a HG2 matlab.ui.container.Panel jContainer if the control's parent is a uipanel
+ try
+ hParent = get(hControl,'Parent');
+ catch
+ % Probably indicates an invalid/deleted/empty handle
+ jControl = [];
+ return
+ end
+ try jContainer = hParent.JavaFrame.getGUIDEView; catch, jContainer = []; end
+ end
+ if isempty(jContainer)
+ hFig = ancestor(hControl,'figure');
+ jf = get(hFig, 'JavaFrame');
+ jContainer = jf.getFigurePanelContainer.getComponent(0);
+ end
+ warning(oldWarn);
+ jControl = [];
+ counter = 20; % 2018-09-21 speedup (100 x 0.001 => 20 x 0.005) - Martin Lehmann suggestion on FEX 2016-06-07
+ specialTooltipStr = '!@#$%^&*';
+ try % Fix for R2018b suggested by Eddie (FEX comment 2018-09-19)
+ tooltipPropName = 'TooltipString';
+ oldTooltip = get(hControl,tooltipPropName);
+ set(hControl,tooltipPropName,specialTooltipStr);
+ catch
+ tooltipPropName = 'Tooltip';
+ oldTooltip = get(hControl,tooltipPropName);
+ set(hControl,tooltipPropName,specialTooltipStr);
+ end
+ while isempty(jControl) && counter>0
+ counter = counter - 1;
+ pause(0.005);
+ jControl = findTooltipIn(jContainer, specialTooltipStr);
+ end
+ set(hControl,tooltipPropName,oldTooltip);
+ try jControl.setToolTipText(oldTooltip); catch, end
+ try jControl = jControl.getParent.getView.getParent.getParent; catch, end % return JScrollPane if exists
+end
+function jControl = findTooltipIn(jContainer, specialTooltipStr)
+ try
+ jControl = []; % Fix suggested by H. Koch 11/4/2017
+ tooltipStr = jContainer.getToolTipText;
+ %if strcmp(char(tooltipStr),specialTooltipStr)
+ if ~isempty(tooltipStr) && tooltipStr.startsWith(specialTooltipStr) % a bit faster
+ jControl = jContainer;
+ else
+ for idx = 1 : jContainer.getComponentCount
+ jControl = findTooltipIn(jContainer.getComponent(idx-1), specialTooltipStr);
+ if ~isempty(jControl), return; end
+ end
+ end
+ catch
+ % ignore
+ end
+end
+
+%% TODO TODO TODO
+%{
+- Enh: Improve interactive-GUI performance - esp. expandNode()
+- Enh: Add property listeners - same problem in MathWork's inspect.m
+- Enh: Display additional properties - same problem in MathWork's inspect.m
+- Enh: Add axis (plot, Graphics) component handles
+- Enh: Add figure thumbnail image below the java tree (& indicate corresponding jObject when selected)
+- Enh: scroll initially-selected node into view (problem because treenode has no pixel location)
+- Fix: java exceptions when getting some fields (com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run)
+- Fix: use EDT if available (especially in flashComponent)
+%}
+
+
diff --git a/FindJavaObjects/findjobj.m b/FindJavaObjects/findjobj.m
new file mode 100644
index 0000000000000000000000000000000000000000..09f38e1633ffbd6a01fbd677ab7cbde07ba5a81a
--- /dev/null
+++ b/FindJavaObjects/findjobj.m
@@ -0,0 +1,3459 @@
+function [handles,levels,parentIdx,listing] = findjobj(container)%,varargin)
+%#ok<*CTCH,*ASGLU,*MSNU,*NASGU>
+%findjobj Find java objects contained within a specified java container or Matlab GUI handle
+%
+% Syntax:
+% [handles, levels, parentIds, listing] = findjobj(container, 'PropName',PropValue(s), ...)
+%
+% Input parameters:
+% container - optional handle to java container uipanel or figure. If unsupplied then current figure will be used
+% 'PropName',PropValue - optional list of property pairs (case insensitive). PropName may also be named -PropName
+% 'position' - filter results based on those elements that contain the specified X,Y position or a java element
+% Note: specify a Matlab position (X,Y = pixels from bottom left corner), not a java one
+% 'size' - filter results based on those elements that have the specified W,H (in pixels)
+% 'class' - filter results based on those elements that contain the substring (or java class) PropValue
+% Note1: filtering is case insensitive and relies on regexp, so you can pass wildcards etc.
+% Note2: '-class' is an undocumented findobj PropName, but only works on Matlab (not java) classes
+% 'property' - filter results based on those elements that possess the specified case-insensitive property string
+% Note1: passing a property value is possible if the argument following 'property' is a cell in the
+% format of {'propName','propValue'}. Example: FINDJOBJ(...,'property',{'Text','click me'})
+% Note2: partial property names (e.g. 'Tex') are accepted, as long as they're not ambiguous
+% 'depth' - filter results based on specified depth. 0=top-level, Inf=all levels (default=Inf)
+% 'flat' - same as specifying: 'depth',0
+% 'not' - negates the following filter: 'not','class','c' returns all elements EXCEPT those with class 'c'
+% 'persist' - persist figure components information, allowing much faster results for subsequent invocations
+% 'nomenu' - skip menu processing, for "lean" list of handles & much faster processing;
+% This option is the default for HG containers but not for figure, Java or no container
+% 'print' - display all java elements in a hierarchical list, indented appropriately
+% Note1: optional PropValue of element index or handle to java container
+% Note2: normally this option would be placed last, after all filtering is complete. Placing this
+% option before some filters enables debug print-outs of interim filtering results.
+% Note3: output is to the Matlab command window unless the 'listing' (4th) output arg is requested
+% 'list' - same as 'print'
+% 'debug' - list found component positions in the Command Window
+%
+% Output parameters:
+% handles - list of handles to java elements
+% levels - list of corresponding hierarchy level of the java elements (top=0)
+% parentIds - list of indexes (in unfiltered handles) of the parent container of the corresponding java element
+% listing - results of 'print'/'list' options (empty if these options were not specified)
+%
+% Note: If no output parameter is specified, then an interactive window will be displayed with a
+% ^^^^ tree view of all container components, their properties and callbacks.
+%
+% Examples:
+% findjobj; % display list of all javaelements of currrent figure in an interactive GUI
+% handles = findjobj; % get list of all java elements of current figure (inc. menus, toolbars etc.)
+% findjobj('print'); % list all java elements in current figure
+% findjobj('print',6); % list all java elements in current figure, contained within its 6th element
+% handles = findjobj(hButton); % hButton is a matlab button
+% handles = findjobj(gcf,'position',getpixelposition(hButton,1)); % same as above but also return hButton's panel
+% handles = findjobj(hButton,'persist'); % same as above, persist info for future reuse
+% handles = findjobj('class','pushbutton'); % get all pushbuttons in current figure
+% handles = findjobj('class','pushbutton','position',123,456); % get all pushbuttons at the specified position
+% handles = findjobj(gcf,'class','pushbutton','size',23,15); % get all pushbuttons with the specified size
+% handles = findjobj('property','Text','not','class','button'); % get all non-button elements with 'text' property
+% handles = findjobj('-property',{'Text','click me'}); % get all elements with 'text' property = 'click me'
+%
+% Sample usage:
+% hButton = uicontrol('string','click me');
+% jButton = findjobj(hButton,'nomenu');
+% % or: jButton = findjobj('property',{'Text','click me'});
+% jButton.setFlyOverAppearance(1);
+% jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
+% set(jButton,'FocusGainedCallback',@myMatlabFunction); % some 30 callback points available...
+% jButton.get; % list all changeable properties...
+%
+% hEditbox = uicontrol('style','edit');
+% jEditbox = findjobj(hEditbox,'nomenu');
+% jEditbox.setCaretColor(java.awt.Color.red);
+% jEditbox.KeyTypedCallback = @myCallbackFunc; % many more callbacks where this came from...
+% jEdit.requestFocus;
+%
+% Technical explanation & details:
+% http://undocumentedmatlab.com/blog/findjobj/
+% http://undocumentedmatlab.com/blog/findjobj-gui-display-container-hierarchy/
+%
+% Known issues/limitations:
+% - Cannot currently process multiple container objects - just one at a time
+% - Initial processing is a bit slow when the figure is laden with many UI components (so better use 'persist')
+% - Passing a simple container Matlab handle is currently filtered by its position+size: should find a better way to do this
+% - Matlab uipanels are not implemented as simple java panels, and so they can't be found using this utility
+% - Labels have a write-only text property in java, so they can't be found using the 'property',{'Text','string'} notation
+%
+% Warning:
+% This code heavily relies on undocumented and unsupported Matlab functionality.
+% It works on Matlab 7+, but use at your own risk!
+%
+% Bugs and suggestions:
+% Please send to Yair Altman (altmany at gmail dot com)
+%
+% Change log:
+% 2019-07-03: Additional fix for R2018b; added separate findjobj_fast utility
+% 2018-09-21: Fix for R2018b suggested by Eddie (FEX); speedup suggested by Martin Lehmann (FEX); alert if trying to use with uifigure
+% 2017-04-13: Fixed two edge-cases (one suggested by H. Koch)
+% 2016-04-19: Fixed edge-cases in old Matlab release; slightly improved performance even further
+% 2016-04-14: Improved performance for the most common use-case (single input/output): improved code + allow inspecting groot
+% 2016-04-11: Improved performance for the most common use-case (single input/output)
+% 2015-01-12: Differentiate between overlapping controls (for example in different tabs); fixed case of docked figure
+% 2014-10-20: Additional fixes for R2014a, R2014b
+% 2014-10-13: Fixes for R2014b
+% 2014-01-04: Minor fix for R2014a; check for newer FEX version up to twice a day only
+% 2013-12-29: Only check for newer FEX version in non-deployed mode; handled case of invisible figure container
+% 2013-10-08: Fixed minor edge case (retrieving multiple scroll-panes)
+% 2013-06-30: Additional fixes for the upcoming HG2
+% 2013-05-15: Fix for the upcoming HG2
+% 2013-02-21: Fixed HG-Java warnings
+% 2013-01-23: Fixed callbacks table grouping & editing bugs; added hidden properties to the properties tooltip; updated help section
+% 2013-01-13: Improved callbacks table; fixed tree refresh failure; fixed: tree node-selection didn't update the props pane nor flash the selected component
+% 2012-07-25: Fixes for R2012a as well as some older Matlab releases
+% 2011-12-07: Fixed 'File is empty' messages in compiled apps
+% 2011-11-22: Fix suggested by Ward
+% 2011-02-01: Fixes for R2011a
+% 2010-06-13: Fixes for R2010b; fixed download (m-file => zip-file)
+% 2010-04-21: Minor fix to support combo-boxes (aka drop-down, popup-menu) on Windows
+% 2010-03-17: Important release: Fixes for R2010a, debug listing, objects not found, component containers that should be ignored etc.
+% 2010-02-04: Forced an EDT redraw before processing; warned if requested handle is invisible
+% 2010-01-18: Found a way to display label text next to the relevant node name
+% 2009-10-28: Fixed uitreenode warning
+% 2009-10-27: Fixed auto-collapse of invisible container nodes; added dynamic tree tooltips & context-menu; minor fix to version-check display
+% 2009-09-30: Fix for Matlab 7.0 as suggested by Oliver W; minor GUI fix (classname font)
+% 2009-08-07: Fixed edge-case of missing JIDE tables
+% 2009-05-24: Added support for future Matlab versions that will not support JavaFrame
+% 2009-05-15: Added sanity checks for axes items
+% 2009-04-28: Added 'debug' input arg; increased size tolerance 1px => 2px
+% 2009-04-23: Fixed location of popupmenus (always 20px high despite what's reported by Matlab...); fixed uiinspect processing issues; added blog link; narrower action buttons
+% 2009-04-09: Automatic 'nomenu' for uicontrol inputs; significant performance improvement
+% 2009-03-31: Fixed position of some Java components; fixed properties tooltip; fixed node visibility indication
+% 2009-02-26: Indicated components visibility (& auto-collapse non-visible containers); auto-highlight selected component; fixes in node icons, figure title & tree refresh; improved error handling; display FindJObj version update description if available
+% 2009-02-24: Fixed update check; added dedicated labels icon
+% 2009-02-18: Fixed compatibility with old Matlab versions
+% 2009-02-08: Callbacks table fixes; use uiinspect if available; fix update check according to new FEX website
+% 2008-12-17: R2008b compatibility
+% 2008-09-10: Fixed minor bug as per Johnny Smith
+% 2007-11-14: Fixed edge case problem with class properties tooltip; used existing object icon if available; added checkbox option to hide standard callbacks
+% 2007-08-15: Fixed object naming relative property priorities; added sanity check for illegal container arg; enabled desktop (0) container; cleaned up warnings about special class objects
+% 2007-08-03: Fixed minor tagging problems with a few Java sub-classes; displayed UIClassID if text/name/tag is unavailable
+% 2007-06-15: Fixed problems finding HG components found by J. Wagberg
+% 2007-05-22: Added 'nomenu' option for improved performance; fixed 'export handles' bug; fixed handle-finding/display bugs; "cleaner" error handling
+% 2007-04-23: HTMLized classname tooltip; returned top-level figure Frame handle for figure container; fixed callbacks table; auto-checked newer version; fixed Matlab 7.2 compatibility issue; added HG objects tree
+% 2007-04-19: Fixed edge case of missing figure; displayed tree hierarchy in interactive GUI if no output args; workaround for figure sub-menus invisible unless clicked
+% 2007-04-04: Improved performance; returned full listing results in 4th output arg; enabled partial property names & property values; automatically filtered out container panels if children also returned; fixed finding sub-menu items
+% 2007-03-20: First version posted on the MathWorks file exchange: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317
+%
+% See also:
+% java, handle, findobj, findall, javaGetHandles, uiinspect (on the File Exchange)
+
+% License to use and modify this code is granted freely to all interested, as long as the original author is
+% referenced and attributed as such. The original author maintains the right to be solely associated with this work.
+
+% Programmed and Copyright by Yair M. Altman: altmany(at)gmail.com
+% $Revision: 1.52 $ $Date: 2019/07/03 19:09:23 $
+
+ % Ensure Java AWT is enabled
+ error(javachk('awt'));
+
+ persistent pContainer pHandles pLevels pParentIdx pPositions
+
+ try
+ % Initialize
+ handles = handle([]);
+ levels = [];
+ parentIdx = [];
+ positions = []; % Java positions start at the top-left corner
+ %sizes = [];
+ listing = '';
+ hg_levels = [];
+ hg_handles = handle([]); % HG handles are double
+ hg_parentIdx = [];
+ nomenu = false;
+ menuBarFoundFlag = false;
+ hFig = [];
+
+ % Force an EDT redraw before processing, to ensure all uicontrols etc. are rendered
+ drawnow; pause(0.02);
+
+ % Default container is the current figure's root panel
+ if nargin
+ if isempty(container) % empty container - bail out
+ return;
+ elseif ischar(container) % container skipped - this is part of the args list...
+ varargin = [{container}, varargin];
+ origContainer = getCurrentFigure;
+ [container,contentSize] = getRootPanel(origContainer);
+ elseif isequal(container,0) % root
+ origContainer = handle(container);
+ container = com.mathworks.mde.desk.MLDesktop.getInstance.getMainFrame;
+ contentSize = [container.getWidth, container.getHeight];
+ elseif ishghandle(container) % && ~isa(container,'java.awt.Container')
+ container = container(1); % another current limitation...
+ hFig = ancestor(container,'figure');
+ oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ try hJavaFrame = get(hFig,'JavaFrame'); catch, hJavaFrame = []; end
+ warning(oldWarn);
+ if isempty(hJavaFrame) % alert if trying to use with web-based (not Java-based) uifigure
+ error('YMA:findjobj:NonJavaFigure', 'Findjobj only works with Java-based figures, not web-based (App Designer) uifigures');
+ end
+ origContainer = handle(container);
+ if isa(origContainer,'uimenu') || isa(origContainer,'matlab.ui.container.Menu')
+ % getpixelposition doesn't work for menus... - damn!
+ varargin = {'class','MenuPeer', 'property',{'Label',strrep(get(container,'Label'),'&','')}, varargin{:}};
+ elseif ~isa(origContainer, 'figure') && ~isempty(hFig) && ~isa(origContainer, 'matlab.ui.Figure')
+ % For a single input & output, try using the fast variant
+ if nargin==1 && nargout==1
+ try
+ handles = findjobj_fast(container);
+ if ~isempty(handles)
+ try handles = handle(handles,'callbackproperties'); catch, end
+ return
+ end
+ catch
+ % never mind - proceed normally using the slower variant below...
+ end
+ end
+
+ % See limitations section above: should find a better way to directly refer to the element's java container
+ try
+ % Note: 'PixelBounds' is undocumented and unsupported, but much faster than getpixelposition!
+ % ^^^^ unfortunately, its Y position is inaccurate in some cases - damn!
+ %size = get(container,'PixelBounds');
+ pos = fix(getpixelposition(container,1));
+ %varargin = {'position',pos(1:2), 'size',pos(3:4), 'not','class','java.awt.Panel', varargin{:}};
+ catch
+ try
+ figName = get(hFig,'name');
+ if strcmpi(get(hFig,'number'),'on')
+ figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $','');
+ end
+ mde = com.mathworks.mde.desk.MLDesktop.getInstance;
+ jFig = mde.getClient(figName);
+ if isempty(jFig), error('dummy'); end
+ catch
+ jFig = get(hJavaFrame,'FigurePanelContainer');
+ end
+ pos = [];
+ try
+ pxsize = get(container,'PixelBounds');
+ pos = [pxsize(1)+5, jFig.getHeight - (pxsize(4)-5)];
+ catch
+ % never mind...
+ end
+ end
+ if size(pos,2) == 2
+ pos(:,3:4) = 0;
+ end
+ if ~isempty(pos)
+ if isa(handle(container),'uicontrol') && strcmp(get(container,'style'),'popupmenu')
+ % popupmenus (combo-box dropdowns) are always 20px high
+ pos(2) = pos(2) + pos(4) - 20;
+ pos(4) = 20;
+ end
+ %varargin = {'position',pos(1:2), 'size',size(3:4)-size(1:2)-10, 'not','class','java.awt.Panel', varargin{:}};
+ varargin = {'position',pos(1:2)+[0,pos(4)], 'size',pos(3:4), 'not','class','java.awt.Panel', 'nomenu', varargin{:}};
+ end
+ elseif isempty(hFig)
+ hFig = handle(container);
+ end
+ [container,contentSize] = getRootPanel(hFig);
+ elseif isjava(container)
+ % Maybe a java container obj (will crash otherwise)
+ origContainer = container;
+ contentSize = [container.getWidth, container.getHeight];
+ else
+ error('YMA:findjobj:IllegalContainer','Input arg does not appear to be a valid GUI object');
+ end
+ else
+ % Default container = current figure
+ origContainer = getCurrentFigure;
+ [container,contentSize] = getRootPanel(origContainer);
+ end
+
+ % Check persistency
+ if isequal(pContainer,container)
+ % persistency requested and the same container is reused, so reuse the hierarchy information
+ [handles,levels,parentIdx,positions] = deal(pHandles, pLevels, pParentIdx, pPositions);
+ else
+ % Pre-allocate space of complex data containers for improved performance
+ handles = repmat(handles,1,1000);
+ positions = zeros(1000,2);
+
+ % Check whether to skip menu processing
+ nomenu = paramSupplied(varargin,'nomenu');
+
+ % Traverse the container hierarchy and extract the elements within
+ traverseContainer(container,0,1);
+
+ % Remove unnecessary pre-allocated elements
+ dataLen = length(levels);
+ handles (dataLen+1:end) = [];
+ positions(dataLen+1:end,:) = [];
+ end
+
+ % Process persistency check before any filtering is done
+ if paramSupplied(varargin,'persist')
+ [pContainer, pHandles, pLevels, pParentIdx, pPositions] = deal(container,handles,levels,parentIdx,positions);
+ end
+
+ % Save data for possible future use in presentObjectTree() below
+ allHandles = handles;
+ allLevels = levels;
+ allParents = parentIdx;
+ selectedIdx = 1:length(handles);
+ %[positions(:,1)-container.getX, container.getHeight - positions(:,2)]
+
+ % Debug-list all found compponents and their positions
+ if paramSupplied(varargin,'debug')
+ for origHandleIdx = 1 : length(allHandles)
+ thisObj = handles(origHandleIdx);
+ pos = sprintf('%d,%d %dx%d',[positions(origHandleIdx,:) getWidth(thisObj) getHeight(thisObj)]);
+ disp([repmat(' ',1,levels(origHandleIdx)) '[' pos '] ' char(toString(thisObj))]);
+ end
+ end
+
+ % Process optional args
+ % Note: positions is NOT returned since it's based on java coord system (origin = top-left): will confuse Matlab users
+ processArgs(varargin{:});
+
+ % De-cell and trim listing, if only one element was found (no use for indented listing in this case)
+ if iscell(listing) && length(listing)==1
+ listing = strtrim(listing{1});
+ end
+
+ % If no output args and no listing requested, present the FINDJOBJ interactive GUI
+ if nargout == 0 && isempty(listing)
+
+ % Get all label positions
+ hg_labels = [];
+ labelPositions = getLabelsJavaPos(container);
+
+ % Present the GUI (object tree)
+ if ~isempty(container)
+ presentObjectTree();
+ else
+ warnInvisible(varargin{:});
+ end
+
+ % Display the listing, if this was specifically requested yet no relevant output arg was specified
+ elseif nargout < 4 && ~isempty(listing)
+ if ~iscell(listing)
+ disp(listing);
+ else
+ for listingIdx = 1 : length(listing)
+ disp(listing{listingIdx});
+ end
+ end
+ end
+
+ % If the number of output handles does not match the number of inputs, try to match via tooltips
+ if nargout && numel(handles) ~= numel(origContainer)
+ newHandles = handle([]);
+ switchHandles = false;
+ handlesToCheck = handles;
+ if isempty(handles)
+ handlesToCheck = allHandles;
+ end
+ for origHandleIdx = 1 : numel(origContainer)
+ try
+ thisContainer = origContainer(origHandleIdx);
+ if isa(thisContainer,'figure') || isa(thisContainer,'matlab.ui.Figure')
+ break;
+ end
+ try
+ newHandles(origHandleIdx) = handlesToCheck(origHandleIdx); %#ok
+ catch
+ % maybe no corresponding handle in [handles]
+ end
+
+ % Assign a new random tooltip to the original (Matlab) handle
+ oldTooltip = get(thisContainer,'Tooltip');
+ newTooltip = num2str(rand,99);
+ try
+ set(thisContainer,'TooltipString',newTooltip);
+ catch
+ set(thisContainer,'Tooltip',newTooltip);
+ end
+ drawnow; % force the Java handle to sync with the Matlab prop-change
+ try
+ % Search for a Java handle that has the newly-generated tooltip
+ for newHandleIdx = 1 : numel(handlesToCheck)
+ testTooltip = '';
+ thisHandle = handlesToCheck(newHandleIdx);
+ try
+ testTooltip = char(thisHandle.getToolTipText);
+ catch
+ try testTooltip = char(thisHandle.getTooltipText); catch, end
+ end
+ if isempty(testTooltip)
+ % One more attempt - assume it's enclosed by a scroll-pane
+ try testTooltip = char(thisHandle.getViewport.getView.getToolTipText); catch, end
+ end
+ if strcmp(testTooltip, newTooltip)
+ newHandles(origHandleIdx) = thisHandle;
+ switchHandles = true;
+ break;
+ end
+ end
+ catch
+ % never mind - skip to the next handle
+ end
+ set(thisContainer,'Tooltip',oldTooltip);
+ catch
+ % never mind - skip to the next handle (maybe handle doesn't have a tooltip prop)
+ end
+ end
+ if switchHandles
+ handles = newHandles;
+ end
+ end
+
+ % Display a warning if the requested handle was not found because it's invisible
+ if nargout && isempty(handles)
+ warnInvisible(varargin{:});
+ end
+
+ return; %debug point
+
+ catch
+ % 'Cleaner' error handling - strip the stack info etc.
+ err = lasterror; %#ok
+ err.message = regexprep(err.message,'Error using ==> [^\n]+\n','');
+ if isempty(findstr(mfilename,err.message))
+ % Indicate error origin, if not already stated within the error message
+ err.message = [mfilename ': ' err.message];
+ end
+ rethrow(err);
+ end
+
+ %% Display a warning if the requested handle was not found because it's invisible
+ function warnInvisible(varargin)
+ try
+ if strcmpi(get(hFig,'Visible'),'off')
+ pos = get(hFig,'Position');
+ set(hFig, 'Position',pos-[5000,5000,0,0], 'Visible','on');
+ drawnow; pause(0.01);
+ [handles,levels,parentIdx,listing] = findjobj(origContainer,varargin{:});
+ set(hFig, 'Position',pos, 'Visible','off');
+ end
+ catch
+ % ignore - move on...
+ end
+ try
+ stk = dbstack;
+ stkNames = {stk.name};
+ OutputFcnIdx = find(~cellfun(@isempty,regexp(stkNames,'_OutputFcn')));
+ if ~isempty(OutputFcnIdx)
+ OutputFcnName = stkNames{OutputFcnIdx};
+ warning('YMA:FindJObj:OutputFcn',['No Java reference was found for the requested handle, because the figure is still invisible in ' OutputFcnName '()']);
+ elseif ishandle(origContainer) && isprop(origContainer,'Visible') && strcmpi(get(origContainer,'Visible'),'off')
+ warning('YMA:FindJObj:invisibleHandle','No Java reference was found for the requested handle, probably because it is still invisible');
+ end
+ catch
+ % Never mind...
+ end
+ end
+
+ %% Check existence of a (case-insensitive) optional parameter in the params list
+ function [flag,idx] = paramSupplied(paramsList,paramName)
+ %idx = find(~cellfun('isempty',regexpi(paramsList(cellfun(@ischar,paramsList)),['^-?' paramName])));
+ idx = find(~cellfun('isempty',regexpi(paramsList(cellfun('isclass',paramsList,'char')),['^-?' paramName]))); % 30/9/2009 fix for ML 7.0 suggested by Oliver W
+ flag = any(idx);
+ end
+
+ %% Get current figure (even if its 'HandleVisibility' property is 'off')
+ function curFig = getCurrentFigure
+ oldShowHidden = get(0,'ShowHiddenHandles');
+ set(0,'ShowHiddenHandles','on'); % minor fix per Johnny Smith
+ curFig = gcf;
+ set(0,'ShowHiddenHandles',oldShowHidden);
+ end
+
+ %% Get Java reference to top-level (root) panel - actually, a reference to the java figure
+ function [jRootPane,contentSize] = getRootPanel(hFig)
+ try
+ contentSize = [0,0]; % initialize
+ jRootPane = hFig;
+ figName = get(hFig,'name');
+ if strcmpi(get(hFig,'number'),'on')
+ figName = regexprep(['Figure ' num2str(hFig) ': ' figName],': $','');
+ end
+ mde = com.mathworks.mde.desk.MLDesktop.getInstance;
+ jFigPanel = mde.getClient(figName);
+ jRootPane = jFigPanel;
+ jRootPane = jFigPanel.getRootPane;
+ catch
+ try
+ warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ jFrame = get(hFig,'JavaFrame');
+ jFigPanel = get(jFrame,'FigurePanelContainer');
+ jRootPane = jFigPanel;
+ jRootPane = jFigPanel.getComponent(0).getRootPane;
+ catch
+ % Never mind
+ end
+ end
+ try
+ % If invalid RootPane - try another method...
+ warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ jFrame = get(hFig,'JavaFrame');
+ jAxisComponent = get(jFrame,'AxisComponent');
+ jRootPane = jAxisComponent.getParent.getParent.getRootPane;
+ catch
+ % Never mind
+ end
+ try
+ % If invalid RootPane, retry up to N times
+ tries = 10;
+ while isempty(jRootPane) && tries>0 % might happen if figure is still undergoing rendering...
+ drawnow; pause(0.001);
+ tries = tries - 1;
+ jRootPane = jFigPanel.getComponent(0).getRootPane;
+ end
+
+ % If still invalid, use FigurePanelContainer which is good enough in 99% of cases... (menu/tool bars won't be accessible, though)
+ if isempty(jRootPane)
+ jRootPane = jFigPanel;
+ end
+ contentSize = [jRootPane.getWidth, jRootPane.getHeight];
+
+ % Try to get the ancestor FigureFrame
+ jRootPane = jRootPane.getTopLevelAncestor;
+ catch
+ % Never mind - FigurePanelContainer is good enough in 99% of cases... (menu/tool bars won't be accessible, though)
+ end
+ end
+
+ %% Traverse the container hierarchy and extract the elements within
+ function traverseContainer(jcontainer,level,parent)
+ persistent figureComponentFound menuRootFound
+
+ % Record the data for this node
+ %disp([repmat(' ',1,level) '<= ' char(jcontainer.toString)])
+ thisIdx = length(levels) + 1;
+ levels(thisIdx) = level;
+ parentIdx(thisIdx) = parent;
+ try newHandle = handle(jcontainer,'callbackproperties'); catch, newHandle = handle(jcontainer); end
+ try handles(thisIdx) = newHandle; catch, handles = newHandle; end
+ try
+ positions(thisIdx,:) = getXY(jcontainer);
+ %sizes(thisIdx,:) = [jcontainer.getWidth, jcontainer.getHeight];
+ catch
+ positions(thisIdx,:) = [0,0];
+ %sizes(thisIdx,:) = [0,0];
+ end
+ if level>0
+ positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:);
+ if ~figureComponentFound && ...
+ strcmp(jcontainer.getName,'fComponentContainer') && ...
+ isa(jcontainer,'com.mathworks.hg.peer.FigureComponentContainer') % there are 2 FigureComponentContainers - only process one...
+
+ % restart coordinate system, to exclude menu & toolbar areas
+ positions(thisIdx,:) = positions(thisIdx,:) - [jcontainer.getRootPane.getX, jcontainer.getRootPane.getY];
+ figureComponentFound = true;
+ end
+ elseif level==1
+ positions(thisIdx,:) = positions(thisIdx,:) + positions(parent,:);
+ else
+ % level 0 - initialize flags used later
+ figureComponentFound = false;
+ menuRootFound = false;
+ end
+ parentId = length(parentIdx);
+
+ % Traverse Menu items, unless the 'nomenu' option was requested
+ if ~nomenu
+ try
+ for child = 1 : getNumMenuComponents(jcontainer)
+ traverseContainer(jcontainer.getMenuComponent(child-1),level+1,parentId);
+ end
+ catch
+ % Probably not a Menu container, but maybe a top-level JMenu, so discard duplicates
+ %if isa(handles(end).java,'javax.swing.JMenuBar')
+ if ~menuRootFound && strcmp(class(java(handles(end))),'javax.swing.JMenuBar') %faster...
+ if removeDuplicateNode(thisIdx)
+ menuRootFound = true;
+ return;
+ end
+ end
+ end
+ end
+
+ % Now recursively process all this node's children (if any), except menu items if so requested
+ %if isa(jcontainer,'java.awt.Container')
+ try % try-catch is faster than checking isa(jcontainer,'java.awt.Container')...
+ %if jcontainer.getComponentCount, jcontainer.getComponents, end
+ if ~nomenu || menuBarFoundFlag || isempty(strfind(class(jcontainer),'FigureMenuBar'))
+ lastChildComponent = java.lang.Object;
+ child = 0;
+ while (child < jcontainer.getComponentCount)
+ childComponent = jcontainer.getComponent(child);
+ % Looping over menus sometimes causes jcontainer to get mixed up (probably a JITC bug), so identify & fix
+ if isequal(childComponent,lastChildComponent)
+ child = child + 1;
+ childComponent = jcontainer.getComponent(child);
+ end
+ lastChildComponent = childComponent;
+ %disp([repmat(' ',1,level) '=> ' num2str(child) ': ' char(class(childComponent))])
+ traverseContainer(childComponent,level+1,parentId);
+ child = child + 1;
+ end
+ else
+ menuBarFoundFlag = true; % use this flag to skip further testing for FigureMenuBar
+ end
+ catch
+ % do nothing - probably not a container
+ %dispError
+ end
+
+ % ...and yet another type of child traversal...
+ try
+ if ~isdeployed % prevent 'File is empty' messages in compiled apps
+ jc = jcontainer.java;
+ else
+ jc = jcontainer;
+ end
+ for child = 1 : jc.getChildCount
+ traverseContainer(jc.getChildAt(child-1),level+1,parentId);
+ end
+ catch
+ % do nothing - probably not a container
+ %dispError
+ end
+
+ % TODO: Add axis (plot) component handles
+ end
+
+ %% Get the XY location of a Java component
+ function xy = getXY(jcontainer)
+ % Note: getX/getY are better than get(..,'X') (mem leaks),
+ % ^^^^ but sometimes they fail and revert to getx.m ...
+ % Note2: try awtinvoke() catch is faster than checking ismethod()...
+ % Note3: using AWTUtilities.invokeAndWait() directly is even faster than awtinvoke()...
+ try %if ismethod(jcontainer,'getX')
+ %positions(thisIdx,:) = [jcontainer.getX, jcontainer.getY];
+ cls = getClass(jcontainer);
+ location = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getLocation',[]),[]);
+ x = location.getX;
+ y = location.getY;
+ catch %else
+ try
+ x = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getX',[]),[]);
+ y = com.mathworks.jmi.AWTUtilities.invokeAndWait(jcontainer,getMethod(cls,'getY',[]),[]);
+ catch
+ try
+ x = awtinvoke(jcontainer,'getX()');
+ y = awtinvoke(jcontainer,'getY()');
+ catch
+ x = get(jcontainer,'X');
+ y = get(jcontainer,'Y');
+ end
+ end
+ end
+ %positions(thisIdx,:) = [x, y];
+ xy = [x,y];
+ end
+
+ %% Get the number of menu sub-elements
+ function numMenuComponents = getNumMenuComponents(jcontainer)
+
+ % The following line will raise an Exception for anything except menus
+ numMenuComponents = jcontainer.getMenuComponentCount;
+
+ % No error so far, so this must be a menu container...
+ % Note: Menu subitems are not visible until the top-level (root) menu gets initial focus...
+ % Try several alternatives, until we get a non-empty menu (or not...)
+ % TODO: Improve performance - this takes WAY too long...
+ if jcontainer.isTopLevelMenu && (numMenuComponents==0)
+ jcontainer.requestFocus;
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ drawnow; pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ jcontainer.setSelected(true);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ drawnow; pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ jcontainer.doClick; % needed in order to populate the sub-menu components
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ if (numMenuComponents == 0)
+ drawnow; %pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ jcontainer.doClick; % close menu by re-clicking...
+ if (numMenuComponents == 0)
+ drawnow; %pause(0.001);
+ numMenuComponents = jcontainer.getMenuComponentCount;
+ end
+ else
+ % ok - found sub-items
+ % Note: no need to close menu since this will be done when focus moves to the FindJObj window
+ %jcontainer.doClick; % close menu by re-clicking...
+ end
+ end
+ end
+ jcontainer.setSelected(false); % de-select the menu
+ end
+ end
+ end
+ end
+
+ %% Remove a specific tree node's data
+ function nodeRemovedFlag = removeDuplicateNode(thisIdx)
+ nodeRemovedFlag = false;
+ for idx = 1 : thisIdx-1
+ if isequal(handles(idx),handles(thisIdx))
+ levels(thisIdx) = [];
+ parentIdx(thisIdx) = [];
+ handles(thisIdx) = [];
+ positions(thisIdx,:) = [];
+ %sizes(thisIdx,:) = [];
+ nodeRemovedFlag = true;
+ return;
+ end
+ end
+ end
+
+ %% Process optional args
+ function processArgs(varargin)
+
+ % Initialize
+ invertFlag = false;
+ listing = '';
+
+ % Loop over all optional args
+ while ~isempty(varargin) && ~isempty(handles)
+
+ % Process the arg (and all its params)
+ foundIdx = 1 : length(handles);
+ if iscell(varargin{1}), varargin{1} = varargin{1}{1}; end
+ if ~isempty(varargin{1}) && varargin{1}(1)=='-'
+ varargin{1}(1) = [];
+ end
+ switch lower(varargin{1})
+ case 'not'
+ invertFlag = true;
+ case 'position'
+ [varargin,foundIdx] = processPositionArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'size'
+ [varargin,foundIdx] = processSizeArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'class'
+ [varargin,foundIdx] = processClassArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'property'
+ [varargin,foundIdx] = processPropertyArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'depth'
+ [varargin,foundIdx] = processDepthArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case 'flat'
+ varargin = {'depth',0, varargin{min(2:end):end}};
+ [varargin,foundIdx] = processDepthArgs(varargin{:});
+ if invertFlag, foundIdx = ~foundIdx; invertFlag = false; end
+ case {'print','list'}
+ [varargin,listing] = processPrintArgs(varargin{:});
+ case {'persist','nomenu','debug'}
+ % ignore - already handled in main function above
+ otherwise
+ error('YMA:findjobj:IllegalOption',['Option ' num2str(varargin{1}) ' is not a valid option. Type ''help ' mfilename ''' for the full options list.']);
+ end
+
+ % If only parent-child pairs found
+ foundIdx = find(foundIdx);
+ if ~isempty(foundIdx) && isequal(parentIdx(foundIdx(2:2:end)),foundIdx(1:2:end))
+ % Return just the children (the parent panels are uninteresting)
+ foundIdx(1:2:end) = [];
+ end
+
+ % If several possible handles were found and the first is the container of the second
+ if length(foundIdx) == 2 && isequal(handles(foundIdx(1)).java, handles(foundIdx(2)).getParent)
+ % Discard the uninteresting component container
+ foundIdx(1) = [];
+ end
+
+ % Filter the results
+ selectedIdx = selectedIdx(foundIdx);
+ handles = handles(foundIdx);
+ levels = levels(foundIdx);
+ parentIdx = parentIdx(foundIdx);
+ positions = positions(foundIdx,:);
+
+ % Remove this arg and proceed to the next one
+ varargin(1) = [];
+
+ end % Loop over all args
+ end
+
+ %% Process 'print' option
+ function [varargin,listing] = processPrintArgs(varargin)
+ if length(varargin)<2 || ischar(varargin{2})
+ % No second arg given, so use the first available element
+ listingContainer = handles(1); %#ok - used in evalc below
+ else
+ % Get the element to print from the specified second arg
+ if isnumeric(varargin{2}) && (varargin{2} == fix(varargin{2})) % isinteger doesn't work on doubles...
+ if (varargin{2} > 0) && (varargin{2} <= length(handles))
+ listingContainer = handles(varargin{2}); %#ok - used in evalc below
+ elseif varargin{2} > 0
+ error('YMA:findjobj:IllegalPrintFilter','Print filter index %g > number of available elements (%d)',varargin{2},length(handles));
+ else
+ error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or positive numeric index into handles');
+ end
+ elseif ismethod(varargin{2},'list')
+ listingContainer = varargin{2}; %#ok - used in evalc below
+ else
+ error('YMA:findjobj:IllegalPrintFilter','Print filter must be a java handle or numeric index into handles');
+ end
+ varargin(2) = [];
+ end
+
+ % use evalc() to capture output into a Matlab variable
+ %listing = evalc('listingContainer.list');
+
+ % Better solution: loop over all handles and process them one by one
+ listing = cell(length(handles),1);
+ for componentIdx = 1 : length(handles)
+ listing{componentIdx} = [repmat(' ',1,levels(componentIdx)) char(handles(componentIdx).toString)];
+ end
+ end
+
+ %% Process 'position' option
+ function [varargin,foundIdx] = processPositionArgs(varargin)
+ if length(varargin)>1
+ positionFilter = varargin{2};
+ %if (isjava(positionFilter) || iscom(positionFilter)) && ismethod(positionFilter,'getLocation')
+ try % try-catch is faster...
+ % Java/COM object passed - get its position
+ positionFilter = positionFilter.getLocation;
+ filterXY = [positionFilter.getX, positionFilter.getY];
+ catch
+ if ~isscalar(positionFilter)
+ % position vector passed
+ if (length(positionFilter)>=2) && isnumeric(positionFilter)
+ % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left...
+ %positionFilter = java.awt.Point(positionFilter(1), container.getHeight - positionFilter(2));
+ filterXY = [container.getX + positionFilter(1), container.getY + contentSize(2) - positionFilter(2)];
+
+ % Check for full Matlab position vector (x,y,w,h)
+ %if (length(positionFilter)==4)
+ % varargin{end+1} = 'size';
+ % varargin{end+1} = fix(positionFilter(3:4));
+ %end
+ else
+ error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair');
+ end
+ elseif length(varargin)>2
+ % x,y passed as separate arg values
+ if isnumeric(positionFilter) && isnumeric(varargin{3})
+ % Remember that java coordinates start at top-left corner, Matlab coords start at bottom left...
+ %positionFilter = java.awt.Point(positionFilter, container.getHeight - varargin{3});
+ filterXY = [container.getX + positionFilter, container.getY + contentSize(2) - varargin{3}];
+ varargin(3) = [];
+ else
+ error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair');
+ end
+ else
+ error('YMA:findjobj:IllegalPositionFilter','Position filter must be a java UI component, or X,Y pair');
+ end
+ end
+
+ % Compute the required element positions in order to be eligible for a more detailed examination
+ % Note: based on the following constraints: 0 <= abs(elementX-filterX) + abs(elementY+elementH-filterY) < 7
+ baseDeltas = [positions(:,1)-filterXY(1), positions(:,2)-filterXY(2)]; % faster than repmat()...
+ %baseHeight = - baseDeltas(:,2);% -abs(baseDeltas(:,1));
+ %minHeight = baseHeight - 7;
+ %maxHeight = baseHeight + 7;
+ %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',positionFilter)),handles); % ARGH! - disallowed by Matlab!
+ %foundIdx = repmat(false,1,length(handles));
+ %foundIdx(length(handles)) = false; % faster than repmat()...
+ foundIdx = (abs(baseDeltas(:,1)) < 7) & (abs(baseDeltas(:,2)) < 7); % & (minHeight >= 0);
+ %fi = find(foundIdx);
+ %for componentIdx = 1 : length(fi)
+ %foundIdx(componentIdx) = handles(componentIdx).getBounds.contains(positionFilter);
+
+ % Search for a point no farther than 7 pixels away (prevents rounding errors)
+ %foundIdx(componentIdx) = handles(componentIdx).getLocationOnScreen.distanceSq(positionFilter) < 50; % fails for invisible components...
+
+ %p = java.awt.Point(positions(componentIdx,1), positions(componentIdx,2) + handles(componentIdx).getHeight);
+ %foundIdx(componentIdx) = p.distanceSq(positionFilter) < 50;
+
+ %foundIdx(componentIdx) = sum(([baseDeltas(componentIdx,1),baseDeltas(componentIdx,2)+handles(componentIdx).getHeight]).^2) < 50;
+
+ % Following is the fastest method found to date: only eligible elements are checked in detailed
+ % elementHeight = handles(fi(componentIdx)).getHeight;
+ % foundIdx(fi(componentIdx)) = elementHeight > minHeight(fi(componentIdx)) && ...
+ % elementHeight < maxHeight(fi(componentIdx));
+ %disp([componentIdx,elementHeight,minHeight(fi(componentIdx)),maxHeight(fi(componentIdx)),foundIdx(fi(componentIdx))])
+ %end
+
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'size' option
+ function [varargin,foundIdx] = processSizeArgs(varargin)
+ if length(varargin)>1
+ sizeFilter = lower(varargin{2});
+ %if (isjava(sizeFilter) || iscom(sizeFilter)) && ismethod(sizeFilter,'getSize')
+ try % try-catch is faster...
+ % Java/COM object passed - get its size
+ sizeFilter = sizeFilter.getSize;
+ filterWidth = sizeFilter.getWidth;
+ filterHeight = sizeFilter.getHeight;
+ catch
+ if ~isscalar(sizeFilter)
+ % size vector passed
+ if (length(sizeFilter)>=2) && isnumeric(sizeFilter)
+ %sizeFilter = java.awt.Dimension(sizeFilter(1),sizeFilter(2));
+ filterWidth = sizeFilter(1);
+ filterHeight = sizeFilter(2);
+ else
+ error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair');
+ end
+ elseif length(varargin)>2
+ % w,h passed as separate arg values
+ if isnumeric(sizeFilter) && isnumeric(varargin{3})
+ %sizeFilter = java.awt.Dimension(sizeFilter,varargin{3});
+ filterWidth = sizeFilter;
+ filterHeight = varargin{3};
+ varargin(3) = [];
+ else
+ error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair');
+ end
+ else
+ error('YMA:findjobj:IllegalSizeFilter','Size filter must be a java UI component, or W,H pair');
+ end
+ end
+ %foundIdx = ~arrayfun(@(b)(invoke(b,'contains',sizeFilter)),handles); % ARGH! - disallowed by Matlab!
+ foundIdx(length(handles)) = false; % faster than repmat()...
+ for componentIdx = 1 : length(handles)
+ %foundIdx(componentIdx) = handles(componentIdx).getSize.equals(sizeFilter);
+ % Allow a 2-pixel tollerance to account for non-integer pixel sizes
+ foundIdx(componentIdx) = abs(handles(componentIdx).getWidth - filterWidth) <= 3 && ... % faster than getSize.equals()
+ abs(handles(componentIdx).getHeight - filterHeight) <= 3;
+ end
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'class' option
+ function [varargin,foundIdx] = processClassArgs(varargin)
+ if length(varargin)>1
+ classFilter = varargin{2};
+ %if ismethod(classFilter,'getClass')
+ try % try-catch is faster...
+ classFilter = char(classFilter.getClass);
+ catch
+ if ~ischar(classFilter)
+ error('YMA:findjobj:IllegalClassFilter','Class filter must be a java object, class or string');
+ end
+ end
+
+ % Now convert all java classes to java.lang.Strings and compare to the requested filter string
+ try
+ foundIdx(length(handles)) = false; % faster than repmat()...
+ jClassFilter = java.lang.String(classFilter).toLowerCase;
+ for componentIdx = 1 : length(handles)
+ % Note: JVM 1.5's String.contains() appears slightly slower and is available only since Matlab 7.2
+ foundIdx(componentIdx) = handles(componentIdx).getClass.toString.toLowerCase.indexOf(jClassFilter) >= 0;
+ end
+ catch
+ % Simple processing: slower since it does extra processing within opaque.char()
+ for componentIdx = 1 : length(handles)
+ % Note: using @toChar is faster but returns java String, not a Matlab char
+ foundIdx(componentIdx) = ~isempty(regexpi(char(handles(componentIdx).getClass),classFilter));
+ end
+ end
+
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'property' option
+ function [varargin,foundIdx] = processPropertyArgs(varargin)
+ if length(varargin)>1
+ propertyName = varargin{2};
+ if iscell(propertyName)
+ if length(propertyName) == 2
+ propertyVal = propertyName{2};
+ propertyName = propertyName{1};
+ elseif length(propertyName) == 1
+ propertyName = propertyName{1};
+ else
+ error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}');
+ end
+ end
+ if ~ischar(propertyName)
+ error('YMA:findjobj:IllegalPropertyFilter','Property filter must be a string (case insensitive name of property) or cell array {propName,propValue}');
+ end
+ propertyName = lower(propertyName);
+ %foundIdx = arrayfun(@(h)isprop(h,propertyName),handles); % ARGH! - disallowed by Matlab!
+ foundIdx(length(handles)) = false; % faster than repmat()...
+
+ % Split processing depending on whether a specific property value was requested (ugly but faster...)
+ if exist('propertyVal','var')
+ for componentIdx = 1 : length(handles)
+ try
+ % Find out whether this element has the specified property
+ % Note: findprop() and its return value schema.prop are undocumented and unsupported!
+ prop = findprop(handles(componentIdx),propertyName); % faster than isprop() & enables partial property names
+
+ % If found, compare it to the actual element's property value
+ foundIdx(componentIdx) = ~isempty(prop) && isequal(get(handles(componentIdx),prop.Name),propertyVal);
+ catch
+ % Some Java classes have a write-only property (like LabelPeer with 'Text'), so we end up here
+ % In these cases, simply assume that the property value doesn't match and continue
+ foundIdx(componentIdx) = false;
+ end
+ end
+ else
+ for componentIdx = 1 : length(handles)
+ try
+ % Find out whether this element has the specified property
+ % Note: findprop() and its return value schema.prop are undocumented and unsupported!
+ foundIdx(componentIdx) = ~isempty(findprop(handles(componentIdx),propertyName));
+ catch
+ foundIdx(componentIdx) = false;
+ end
+ end
+ end
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Process 'depth' option
+ function [varargin,foundIdx] = processDepthArgs(varargin)
+ if length(varargin)>1
+ level = varargin{2};
+ if ~isnumeric(level)
+ error('YMA:findjobj:IllegalDepthFilter','Depth filter must be a number (=maximal element depth)');
+ end
+ foundIdx = (levels <= level);
+ varargin(2) = [];
+ else
+ foundIdx = [];
+ end
+ end
+
+ %% Convert property data into a string
+ function data = charizeData(data)
+ if isa(data,'com.mathworks.hg.types.HGCallback')
+ data = get(data,'Callback');
+ end
+ if ~ischar(data) && ~isa(data,'java.lang.String')
+ newData = strtrim(evalc('disp(data)'));
+ try
+ newData = regexprep(newData,' +',' ');
+ newData = regexprep(newData,'Columns \d+ through \d+\s','');
+ newData = regexprep(newData,'Column \d+\s','');
+ catch
+ %never mind...
+ end
+ if iscell(data)
+ newData = ['{ ' newData ' }'];
+ elseif isempty(data)
+ newData = '';
+ elseif isnumeric(data) || islogical(data) || any(ishandle(data)) || numel(data) > 1 %&& ~isscalar(data)
+ newData = ['[' newData ']'];
+ end
+ data = newData;
+ elseif ~isempty(data)
+ data = ['''' data ''''];
+ end
+ end % charizeData
+
+ %% Prepare a hierarchical callbacks table data
+ function setProp(list,name,value,category)
+ prop = eval('com.jidesoft.grid.DefaultProperty();'); % prevent JIDE alert by run-time (not load-time) evaluation
+ prop.setName(name);
+ prop.setType(java.lang.String('').getClass);
+ prop.setValue(value);
+ prop.setEditable(true);
+ prop.setExpert(true);
+ %prop.setCategory(['' category ' callbacks']);
+ prop.setCategory([category ' callbacks']);
+ list.add(prop);
+ end % getTreeData
+
+ %% Prepare a hierarchical callbacks table data
+ function list = getTreeData(data)
+ list = java.util.ArrayList();
+ names = regexprep(data,'([A-Z][a-z]+).*','$1');
+ %hash = java.util.Hashtable;
+ others = {};
+ for propIdx = 1 : size(data,1)
+ if (propIdx < size(data,1) && strcmp(names{propIdx},names{propIdx+1})) || ...
+ (propIdx > 1 && strcmp(names{propIdx},names{propIdx-1}))
+ % Child callback property
+ setProp(list,data{propIdx,1},data{propIdx,2},names{propIdx});
+ else
+ % Singular callback property => Add to 'Other' category at bottom of the list
+ others(end+1,:) = data(propIdx,:); %#ok
+ end
+ end
+ for propIdx = 1 : size(others,1)
+ setProp(list,others{propIdx,1},others{propIdx,2},'Other');
+ end
+ end % getTreeData
+
+ %% Get callbacks table data
+ function [cbData, cbHeaders, cbTableEnabled] = getCbsData(obj, stripStdCbsFlag)
+ % Initialize
+ cbData = {'(no callbacks)'};
+ cbHeaders = {'Callback name'};
+ cbTableEnabled = false;
+ cbNames = {};
+
+ try
+ try
+ classHdl = classhandle(handle(obj));
+ cbNames = get(classHdl.Events,'Name');
+ if ~isempty(cbNames) && ~iscom(obj) %only java-based please...
+ cbNames = strcat(cbNames,'Callback');
+ end
+ propNames = get(classHdl.Properties,'Name');
+ catch
+ % Try to interpret as an MCOS class object
+ try
+ oldWarn = warning('off','MATLAB:structOnObject');
+ dataFields = struct(obj);
+ warning(oldWarn);
+ catch
+ dataFields = get(obj);
+ end
+ propNames = fieldnames(dataFields);
+ end
+ propCbIdx = [];
+ if ischar(propNames), propNames={propNames}; end % handle case of a single callback
+ if ~isempty(propNames)
+ propCbIdx = find(~cellfun(@isempty,regexp(propNames,'(Fcn|Callback)$')));
+ cbNames = unique([cbNames; propNames(propCbIdx)]); %#ok logical is faster but less debuggable...
+ end
+ if ~isempty(cbNames)
+ if stripStdCbsFlag
+ cbNames = stripStdCbs(cbNames);
+ end
+ if iscell(cbNames)
+ cbNames = sort(cbNames);
+ if size(cbNames,1) < size(cbNames,2)
+ cbNames = cbNames';
+ end
+ end
+ hgHandleFlag = 0; try hgHandleFlag = ishghandle(obj); catch, end %#ok
+ try
+ obj = handle(obj,'CallbackProperties');
+ catch
+ hgHandleFlag = 1;
+ end
+ if hgHandleFlag
+ % HG handles don't allow CallbackProperties - search only for *Fcn
+ %cbNames = propNames(propCbIdx);
+ end
+ if iscom(obj)
+ cbs = obj.eventlisteners;
+ if ~isempty(cbs)
+ cbNamesRegistered = cbs(:,1);
+ cbData = setdiff(cbNames,cbNamesRegistered);
+ %cbData = charizeData(cbData);
+ if size(cbData,2) > size(cbData(1))
+ cbData = cbData';
+ end
+ cbData = [cbData, cellstr(repmat(' ',length(cbData),1))];
+ cbData = [cbData; cbs];
+ [sortedNames, sortedIdx] = sort(cbData(:,1));
+ sortedCbs = cellfun(@charizeData,cbData(sortedIdx,2),'un',0);
+ cbData = [sortedNames, sortedCbs];
+ else
+ cbData = [cbNames, cellstr(repmat(' ',length(cbNames),1))];
+ end
+ elseif iscell(cbNames)
+ cbNames = sort(cbNames);
+ %cbData = [cbNames, get(obj,cbNames)'];
+ cbData = cbNames;
+ oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty');
+ warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty');
+ for idx = 1 : length(cbNames)
+ try
+ cbData{idx,2} = charizeData(get(obj,cbNames{idx}));
+ catch
+ cbData{idx,2} = '(callback value inaccessible)';
+ end
+ end
+ warning(oldWarn);
+ else % only one event callback
+ %cbData = {cbNames, get(obj,cbNames)'};
+ %cbData{1,2} = charizeData(cbData{1,2});
+ try
+ cbData = {cbNames, charizeData(get(obj,cbNames))};
+ catch
+ cbData = {cbNames, '(callback value inaccessible)'};
+ end
+ end
+ cbHeaders = {'Callback name','Callback value'};
+ cbTableEnabled = true;
+ end
+ catch
+ % never mind - use default (empty) data
+ end
+ end % getCbsData
+
+ %% Get relative (0.0-1.0) divider location
+ function divLocation = getRalativeDivlocation(jDiv)
+ divLocation = jDiv.getDividerLocation;
+ if divLocation > 1 % i.e. [pixels]
+ visibleRect = jDiv.getVisibleRect;
+ if jDiv.getOrientation == 0 % vertical
+ start = visibleRect.getY;
+ extent = visibleRect.getHeight - start;
+ else
+ start = visibleRect.getX;
+ extent = visibleRect.getWidth - start;
+ end
+ divLocation = (divLocation - start) / extent;
+ end
+ end % getRalativeDivlocation
+
+ %% Try to set a treenode icon based on a container's icon
+ function setTreeNodeIcon(treenode,container)
+ try
+ iconImage = [];
+ iconImage = container.getIcon;
+ if ~isempty(findprop(handle(iconImage),'Image')) % get(iconImage,'Image') is easier but leaks memory...
+ iconImage = iconImage.getImage;
+ else
+ a=b; %#ok cause an error
+ end
+ catch
+ try
+ iconImage = container.getIconImage;
+ catch
+ try
+ if ~isempty(iconImage)
+ ge = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment;
+ gd = ge.getDefaultScreenDevice;
+ gc = gd.getDefaultConfiguration;
+ image = gc.createCompatibleImage(iconImage.getIconWidth, iconImage.getIconHeight); % a BufferedImage object
+ g = image.createGraphics;
+ iconImage.paintIcon([], g, 0, 0);
+ g.dispose;
+ iconImage = image;
+ end
+ catch
+ % never mind...
+ end
+ end
+ end
+ if ~isempty(iconImage)
+ iconImage = setIconSize(iconImage);
+ treenode.setIcon(iconImage);
+ end
+ end % setTreeNodeIcon
+
+ %% Present the object hierarchy tree
+ function presentObjectTree()
+ persistent lastVersionCheck
+ if isempty(lastVersionCheck), lastVersionCheck = now-1; end
+
+ import java.awt.*
+ import javax.swing.*
+ hTreeFig = findall(0,'tag','findjobjFig');
+ iconpath = [matlabroot, '/toolbox/matlab/icons/'];
+ cbHideStd = 0; % Initial state of the cbHideStdCbs checkbox
+ if isempty(hTreeFig)
+ % Prepare the figure
+ hTreeFig = figure('tag','findjobjFig','menuBar','none','toolBar','none','Name','FindJObj','NumberTitle','off','handleVisibility','off','IntegerHandle','off');
+ figIcon = ImageIcon([iconpath 'tool_legend.gif']);
+ drawnow;
+ try
+ mde = com.mathworks.mde.desk.MLDesktop.getInstance;
+ jTreeFig = mde.getClient('FindJObj').getTopLevelAncestor;
+ jTreeFig.setIcon(figIcon);
+ catch
+ warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame'); % R2008b compatibility
+ jTreeFig = get(hTreeFig,'JavaFrame');
+ jTreeFig.setFigureIcon(figIcon);
+ end
+ vsplitPaneLocation = 0.8;
+ hsplitPaneLocation = 0.5;
+ else
+ % Remember cbHideStdCbs checkbox & dividers state for later
+ userdata = get(hTreeFig, 'userdata');
+ try cbHideStd = userdata.cbHideStdCbs.isSelected; catch, end %#ok
+ try
+ vsplitPaneLocation = getRalativeDivlocation(userdata.vsplitPane);
+ hsplitPaneLocation = getRalativeDivlocation(userdata.hsplitPane);
+ catch
+ vsplitPaneLocation = 0.8;
+ hsplitPaneLocation = 0.5;
+ end
+
+ % Clear the figure and redraw
+ clf(hTreeFig);
+ figure(hTreeFig); % bring to front
+ end
+
+ % Traverse all HG children, if root container was a HG handle
+ if ishghandle(origContainer) %&& ~isequal(origContainer,container)
+ traverseHGContainer(origContainer,0,0);
+ end
+
+ % Prepare the tree pane
+ warning('off','MATLAB:uitreenode:MigratingFunction'); % R2008b compatibility
+ warning('off','MATLAB:uitreenode:DeprecatedFunction'); % R2008a compatibility
+ tree_h = com.mathworks.hg.peer.UITreePeer;
+ try tree_h = javaObjectEDT(tree_h); catch, end
+ tree_hh = handle(tree_h,'CallbackProperties');
+ hasChildren = sum(allParents==1) > 1;
+ icon = [iconpath 'upfolder.gif'];
+ [rootName, rootTitle] = getNodeName(container);
+ try
+ root = uitreenode('v0', handle(container), rootName, icon, ~hasChildren);
+ catch % old matlab version don't have the 'v0' option
+ root = uitreenode(handle(container), rootName, icon, ~hasChildren);
+ end
+ setTreeNodeIcon(root,container); % constructor must accept a char icon unfortunately, so need to do this afterwards...
+ if ~isempty(rootTitle)
+ set(hTreeFig, 'Name',['FindJObj - ' char(rootTitle)]);
+ end
+ nodedata.idx = 1;
+ nodedata.obj = container;
+ set(root,'userdata',nodedata);
+ root.setUserObject(container);
+ setappdata(root,'childHandle',container);
+ tree_h.setRoot(root);
+ treePane = tree_h.getScrollPane;
+ treePane.setMinimumSize(Dimension(50,50));
+ jTreeObj = treePane.getViewport.getComponent(0);
+ jTreeObj.setShowsRootHandles(true)
+ jTreeObj.getSelectionModel.setSelectionMode(javax.swing.tree.TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
+ %jTreeObj.setVisible(0);
+ %jTreeObj.getCellRenderer.setLeafIcon([]);
+ %jTreeObj.getCellRenderer.setOpenIcon(figIcon);
+ %jTreeObj.getCellRenderer.setClosedIcon([]);
+ treePanel = JPanel(BorderLayout);
+ treePanel.add(treePane, BorderLayout.CENTER);
+ progressBar = JProgressBar(0);
+ progressBar.setMaximum(length(allHandles) + length(hg_handles)); % = # of all nodes
+ treePanel.add(progressBar, BorderLayout.SOUTH);
+
+ % Prepare the image pane
+%disable for now, until we get it working...
+%{
+ try
+ hFig = ancestor(origContainer,'figure');
+ [cdata, cm] = getframe(hFig); %#ok cm unused
+ tempfname = [tempname '.png'];
+ imwrite(cdata,tempfname); % don't know how to pass directly to BufferedImage, so use disk...
+ jImg = javax.imageio.ImageIO.read(java.io.File(tempfname));
+ try delete(tempfname); catch end
+ imgPanel = JPanel();
+ leftPanel = JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, imgPanel);
+ leftPanel.setOneTouchExpandable(true);
+ leftPanel.setContinuousLayout(true);
+ leftPanel.setResizeWeight(0.8);
+ catch
+ leftPanel = treePanel;
+ end
+%}
+ leftPanel = treePanel;
+
+ % Prepare the inspector pane
+ classNameLabel = JLabel([' ' char(class(container))]);
+ classNameLabel.setForeground(Color.blue);
+ updateNodeTooltip(container, classNameLabel);
+ inspectorPanel = JPanel(BorderLayout);
+ inspectorPanel.add(classNameLabel, BorderLayout.NORTH);
+ % TODO: Maybe uncomment the following when we add the HG tree - in the meantime it's unused (java properties are un-groupable)
+ %objReg = com.mathworks.services.ObjectRegistry.getLayoutRegistry;
+ %toolBar = awtinvoke('com.mathworks.mlwidgets.inspector.PropertyView$ToolBarStyle','valueOf(Ljava.lang.String;)','GROUPTOOLBAR');
+ %inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView(objReg, toolBar);
+ inspectorPane = com.mathworks.mlwidgets.inspector.PropertyView;
+ identifiers = disableDbstopError; %#ok "dbstop if error" causes inspect.m to croak due to a bug - so workaround
+ inspectorPane.setObject(container);
+ inspectorPane.setAutoUpdate(true);
+ % TODO: Add property listeners
+ % TODO: Display additional props
+ inspectorTable = inspectorPane;
+ try
+ while ~isa(inspectorTable,'javax.swing.JTable')
+ inspectorTable = inspectorTable.getComponent(0);
+ end
+ catch
+ % R2010a
+ inspectorTable = inspectorPane.getComponent(0).getScrollPane.getViewport.getComponent(0);
+ end
+ toolTipText = 'hover mouse over the red classname above to see the full list of properties';
+ inspectorTable.setToolTipText(toolTipText);
+ jideTableUtils = [];
+ try
+ % Try JIDE features - see http://www.jidesoft.com/products/JIDE_Grids_Developer_Guide.pdf
+ com.mathworks.mwswing.MJUtilities.initJIDE;
+ jideTableUtils = eval('com.jidesoft.grid.TableUtils;'); % prevent JIDE alert by run-time (not load-time) evaluation
+ jideTableUtils.autoResizeAllColumns(inspectorTable);
+ inspectorTable.setRowAutoResizes(true);
+ inspectorTable.getModel.setShowExpert(1);
+ catch
+ % JIDE is probably unavailable - never mind...
+ end
+ inspectorPanel.add(inspectorPane, BorderLayout.CENTER);
+ % TODO: Add data update listeners
+
+ % Prepare the callbacks pane
+ callbacksPanel = JPanel(BorderLayout);
+ stripStdCbsFlag = true; % initial value
+ [cbData, cbHeaders, cbTableEnabled] = getCbsData(container, stripStdCbsFlag);
+ %{
+ %classHdl = classhandle(handle(container));
+ %eventNames = get(classHdl.Events,'Name');
+ %if ~isempty(eventNames)
+ % cbNames = sort(strcat(eventNames,'Callback'));
+ % try
+ % cbData = [cbNames, get(container,cbNames)'];
+ % catch
+ % % R2010a
+ % cbData = cbNames;
+ % if isempty(cbData)
+ % cbData = {};
+ % elseif ~iscell(cbData)
+ % cbData = {cbData};
+ % end
+ % for idx = 1 : length(cbNames)
+ % cbData{idx,2} = get(container,cbNames{idx});
+ % end
+ % end
+ % cbTableEnabled = true;
+ %else
+ % cbData = {'(no callbacks)',''};
+ % cbTableEnabled = false;
+ %end
+ %cbHeaders = {'Callback name','Callback value'};
+ %}
+ try
+ % Use JideTable if available on this system
+ %callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders); %#ok
+ %callbacksTable = eval('com.jidesoft.grid.PropertyTable(callbacksTableModel);'); % prevent JIDE alert by run-time (not load-time) evaluation
+ try
+ list = getTreeData(cbData); %#ok
+ model = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ % Auto-expand if only one category
+ if model.getRowCount==1 % length(model.getCategories)==1 fails for some unknown reason...
+ model.expandFirstLevel;
+ end
+
+ %callbacksTable = eval('com.jidesoft.grid.TreeTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+ callbacksTable = eval('com.jidesoft.grid.PropertyTable(model);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ %callbacksTable.expandFirstLevel;
+ callbacksTable.setShowsRootHandles(true);
+ callbacksTable.setShowTreeLines(false);
+ %callbacksTable.setShowNonEditable(0); %=SHOW_NONEDITABLE_NEITHER
+ callbacksPane = eval('com.jidesoft.grid.PropertyPane(callbacksTable);'); % prevent JIDE alert by run-time (not load-time) evaluation
+ callbacksPane.setShowDescription(false);
+ catch
+ callbacksTable = eval('com.jidesoft.grid.TreeTable(cbData,cbHeaders);'); % prevent JIDE alert by run-time (not load-time) evaluation
+ end
+ callbacksTable.setRowAutoResizes(true);
+ callbacksTable.setColumnAutoResizable(true);
+ callbacksTable.setColumnResizable(true);
+ jideTableUtils.autoResizeAllColumns(callbacksTable);
+ callbacksTable.setTableHeader([]); % hide the column headers since now we can resize columns with the gridline
+ callbacksLabel = JLabel(' Callbacks:'); % The column headers are replaced with a header label
+ callbacksLabel.setForeground(Color.blue);
+ %callbacksPanel.add(callbacksLabel, BorderLayout.NORTH);
+
+ % Add checkbox to show/hide standard callbacks
+ callbacksTopPanel = JPanel;
+ callbacksTopPanel.setLayout(BoxLayout(callbacksTopPanel, BoxLayout.LINE_AXIS));
+ callbacksTopPanel.add(callbacksLabel);
+ callbacksTopPanel.add(Box.createHorizontalGlue);
+ jcb = JCheckBox('Hide standard callbacks', cbHideStd);
+ set(handle(jcb,'CallbackProperties'), 'ActionPerformedCallback',{@cbHideStdCbs_Callback,callbacksTable});
+ try
+ set(jcb, 'userdata',callbacksTable, 'tooltip','Hide standard Swing callbacks - only component-specific callbacks will be displayed');
+ catch
+ jcb.setToolTipText('Hide standard Swing callbacks - only component-specific callbacks will be displayed');
+ %setappdata(jcb,'userdata',callbacksTable);
+ end
+ callbacksTopPanel.add(jcb);
+ callbacksPanel.add(callbacksTopPanel, BorderLayout.NORTH);
+ catch
+ % Otherwise, use a standard Swing JTable (keep the headers to enable resizing)
+ callbacksTable = JTable(cbData,cbHeaders);
+ end
+ cbToolTipText = 'Callbacks may be ''strings'', @funcHandle or {@funcHandle,arg1,...}';
+ callbacksTable.setToolTipText(cbToolTipText);
+ callbacksTable.setGridColor(inspectorTable.getGridColor);
+ cbNameTextField = JTextField;
+ cbNameTextField.setEditable(false); % ensure that the callback names are not modified...
+ cbNameCellEditor = DefaultCellEditor(cbNameTextField);
+ cbNameCellEditor.setClickCountToStart(intmax); % i.e, never enter edit mode...
+ callbacksTable.getColumnModel.getColumn(0).setCellEditor(cbNameCellEditor);
+ if ~cbTableEnabled
+ try callbacksTable.getColumnModel.getColumn(1).setCellEditor(cbNameCellEditor); catch, end
+ end
+ hModel = callbacksTable.getModel;
+ set(handle(hModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,container,callbacksTable});
+ %set(hModel, 'UserData',container);
+ try
+ cbScrollPane = callbacksPane; %JScrollPane(callbacksPane);
+ %cbScrollPane.setHorizontalScrollBarPolicy(cbScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ catch
+ cbScrollPane = JScrollPane(callbacksTable);
+ cbScrollPane.setVerticalScrollBarPolicy(cbScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ end
+ callbacksPanel.add(cbScrollPane, BorderLayout.CENTER);
+ callbacksPanel.setToolTipText(cbToolTipText);
+
+ % Prepare the top-bottom JSplitPanes
+ vsplitPane = JSplitPane(JSplitPane.VERTICAL_SPLIT, inspectorPanel, callbacksPanel);
+ vsplitPane.setOneTouchExpandable(true);
+ vsplitPane.setContinuousLayout(true);
+ vsplitPane.setResizeWeight(0.8);
+
+ % Prepare the left-right JSplitPane
+ hsplitPane = JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, vsplitPane);
+ hsplitPane.setOneTouchExpandable(true);
+ hsplitPane.setContinuousLayout(true);
+ hsplitPane.setResizeWeight(0.6);
+ pos = getpixelposition(hTreeFig);
+
+ % Prepare the bottom pane with all buttons
+ lowerPanel = JPanel(FlowLayout);
+ blogUrlLabel = 'Undocumented Matlab.com ';
+ jWebsite = createJButton(blogUrlLabel, @btWebsite_Callback, 'Visit the UndocumentedMatlab.com blog');
+ jWebsite.setContentAreaFilled(0);
+ lowerPanel.add(jWebsite);
+ lowerPanel.add(createJButton('Refresh tree', {@btRefresh_Callback, origContainer, hTreeFig}, 'Rescan the component tree, from the root down'));
+ lowerPanel.add(createJButton('Export to workspace', {@btExport_Callback, jTreeObj, classNameLabel}, 'Export the selected component handles to workspace variable findjobj_hdls'));
+ lowerPanel.add(createJButton('Request focus', {@btFocus_Callback, jTreeObj, root}, 'Set the focus on the first selected component'));
+ lowerPanel.add(createJButton('Inspect object', {@btInspect_Callback, jTreeObj, root}, 'View the signature of all methods supported by the first selected component'));
+ lowerPanel.add(createJButton('Check for updates', {@btCheckFex_Callback}, 'Check the MathWorks FileExchange for the latest version of FindJObj'));
+
+ % Display everything on-screen
+ globalPanel = JPanel(BorderLayout);
+ globalPanel.add(hsplitPane, BorderLayout.CENTER);
+ globalPanel.add(lowerPanel, BorderLayout.SOUTH);
+ [obj, hcontainer] = javacomponent(globalPanel, [0,0,pos(3:4)], hTreeFig);
+ set(hcontainer,'units','normalized');
+ drawnow;
+ hsplitPane.setDividerLocation(hsplitPaneLocation); % this only works after the JSplitPane is displayed...
+ vsplitPane.setDividerLocation(vsplitPaneLocation); % this only works after the JSplitPane is displayed...
+ %restoreDbstopError(identifiers);
+
+ % Refresh & resize the screenshot thumbnail
+%disable for now, until we get it working...
+%{
+ try
+ hAx = axes('Parent',hTreeFig, 'units','pixels', 'position',[10,10,250,150], 'visible','off');
+ axis(hAx,'image');
+ image(cdata,'Parent',hAx);
+ axis(hAx,'off');
+ set(hAx,'UserData',cdata);
+ set(imgPanel, 'ComponentResizedCallback',{@resizeImg, hAx}, 'UserData',lowerPanel);
+ imgPanel.getGraphics.drawImage(jImg, 0, 0, []);
+ catch
+ % Never mind...
+ end
+%}
+ % If all handles were selected (i.e., none were filtered) then only select the first
+ if (length(selectedIdx) == length(allHandles)) && ~isempty(selectedIdx)
+ selectedIdx = 1;
+ end
+
+ % Store handles for callback use
+ userdata.handles = allHandles;
+ userdata.levels = allLevels;
+ userdata.parents = allParents;
+ userdata.hg_handles = hg_handles;
+ userdata.hg_levels = hg_levels;
+ userdata.hg_parents = hg_parentIdx;
+ userdata.initialIdx = selectedIdx;
+ userdata.userSelected = false; % Indicates the user has modified the initial selections
+ userdata.inInit = true;
+ userdata.jTree = jTreeObj;
+ userdata.jTreePeer = tree_h;
+ userdata.vsplitPane = vsplitPane;
+ userdata.hsplitPane = hsplitPane;
+ userdata.classNameLabel = classNameLabel;
+ userdata.inspectorPane = inspectorPane;
+ userdata.callbacksTable = callbacksTable;
+ userdata.jideTableUtils = jideTableUtils;
+ try
+ userdata.cbHideStdCbs = jcb;
+ catch
+ userdata.cbHideStdCbs = [];
+ end
+
+ % Update userdata for use in callbacks
+ try
+ set(tree_h,'userdata',userdata);
+ catch
+ setappdata(handle(tree_h),'userdata',userdata);
+ end
+ try
+ set(callbacksTable,'userdata',userdata);
+ catch
+ setappdata(callbacksTable,'userdata',userdata);
+ end
+ set(hTreeFig,'userdata',userdata);
+
+ % Select the root node if requested
+ % Note: we must do so here since all other nodes except the root are processed by expandNode
+ if any(selectedIdx==1)
+ tree_h.setSelectedNode(root);
+ end
+
+ % Set the initial cbHideStdCbs state
+ try
+ if jcb.isSelected
+ drawnow;
+ evd.getSource.isSelected = jcb.isSelected;
+ cbHideStdCbs_Callback(jcb,evd,callbacksTable);
+ end
+ catch
+ % never mind...
+ end
+
+ % Set the callback functions
+ set(tree_hh, 'NodeExpandedCallback', {@nodeExpanded, tree_h});
+ set(tree_hh, 'NodeSelectedCallback', {@nodeSelected, tree_h});
+
+ % Set the tree mouse-click callback
+ % Note: default actions (expand/collapse) will still be performed?
+ % Note: MousePressedCallback is better than MouseClickedCallback
+ % since it fires immediately when mouse button is pressed,
+ % without waiting for its release, as MouseClickedCallback does
+ handleTree = tree_h.getScrollPane;
+ jTreeObj = handleTree.getViewport.getComponent(0);
+ jTreeObjh = handle(jTreeObj,'CallbackProperties');
+ set(jTreeObjh, 'MousePressedCallback', {@treeMousePressedCallback,tree_h}); % context (right-click) menu
+ set(jTreeObjh, 'MouseMovedCallback', @treeMouseMovedCallback); % mouse hover tooltips
+
+ % Update userdata
+ userdata.inInit = false;
+ try
+ set(tree_h,'userdata',userdata);
+ catch
+ setappdata(handle(tree_h),'userdata',userdata);
+ end
+ set(hTreeFig,'userdata',userdata);
+
+ % Pre-expand all rows
+ %treePane.setVisible(false);
+ expandNode(progressBar, jTreeObj, tree_h, root, 0);
+ %treePane.setVisible(true);
+ %jTreeObj.setVisible(1);
+
+ % Hide the progressbar now that we've finished expanding all rows
+ try
+ hsplitPane.getLeftComponent.setTopComponent(treePane);
+ catch
+ % Probably not a vSplitPane on the left...
+ hsplitPane.setLeftComponent(treePane);
+ end
+ hsplitPane.setDividerLocation(hsplitPaneLocation); % need to do it again...
+
+ % Set keyboard focus on the tree
+ jTreeObj.requestFocus;
+ drawnow;
+
+ % Check for a newer version (only in non-deployed mode, and only twice a day)
+ if ~isdeployed && now-lastVersionCheck > 0.5
+ checkVersion();
+ lastVersionCheck = now;
+ end
+
+ % Reset the last error
+ lasterr(''); %#ok
+ end
+
+ %% Rresize image pane
+ function resizeImg(varargin) %#ok - unused (TODO: waiting for img placement fix...)
+ try
+ hPanel = varargin{1};
+ hAx = varargin{3};
+ lowerPanel = get(hPanel,'UserData');
+ newJPos = cell2mat(get(hPanel,{'X','Y','Width','Height'}));
+ newMPos = [1,get(lowerPanel,'Height'),newJPos(3:4)];
+ set(hAx, 'units','pixels', 'position',newMPos, 'Visible','on');
+ uistack(hAx,'top'); % no good...
+ set(hPanel,'Opaque','off'); % also no good...
+ catch
+ % Never mind...
+ dispError
+ end
+ return;
+ end
+
+ %% "dbstop if error" causes inspect.m to croak due to a bug - so workaround by temporarily disabling this dbstop
+ function identifiers = disableDbstopError
+ dbStat = dbstatus;
+ idx = find(strcmp({dbStat.cond},'error'));
+ identifiers = [dbStat(idx).identifier];
+ if ~isempty(idx)
+ dbclear if error;
+ msgbox('''dbstop if error'' had to be disabled due to a Matlab bug that would have caused Matlab to crash.', 'FindJObj', 'warn');
+ end
+ end
+
+ %% Restore any previous "dbstop if error"
+ function restoreDbstopError(identifiers) %#ok
+ for itemIdx = 1 : length(identifiers)
+ eval(['dbstop if error ' identifiers{itemIdx}]);
+ end
+ end
+
+ %% Recursively expand all nodes (except toolbar/menubar) in startup
+ function expandNode(progressBar, tree, tree_h, parentNode, parentRow)
+ try
+ if nargin < 5
+ parentPath = javax.swing.tree.TreePath(parentNode.getPath);
+ parentRow = tree.getRowForPath(parentPath);
+ end
+ tree.expandRow(parentRow);
+ progressBar.setValue(progressBar.getValue+1);
+ numChildren = parentNode.getChildCount;
+ if (numChildren == 0)
+ pause(0.0002); % as short as possible...
+ drawnow;
+ end
+ nodesToUnExpand = {'FigureMenuBar','MLMenuBar','MJToolBar','Box','uimenu','uitoolbar','ScrollBar'};
+ numChildren = parentNode.getChildCount;
+ for childIdx = 0 : numChildren-1
+ childNode = parentNode.getChildAt(childIdx);
+
+ % Pre-select the node based upon the user's FINDJOBJ filters
+ try
+ nodedata = get(childNode, 'userdata');
+ try
+ userdata = get(tree_h, 'userdata');
+ catch
+ userdata = getappdata(handle(tree_h), 'userdata');
+ end
+ %fprintf('%d - %s\n',nodedata.idx,char(nodedata.obj))
+ if ~ishghandle(nodedata.obj) && ~userdata.userSelected && any(userdata.initialIdx == nodedata.idx)
+ pause(0.0002); % as short as possible...
+ drawnow;
+ if isempty(tree_h.getSelectedNodes)
+ tree_h.setSelectedNode(childNode);
+ else
+ newSelectedNodes = [tree_h.getSelectedNodes, childNode];
+ tree_h.setSelectedNodes(newSelectedNodes);
+ end
+ end
+ catch
+ % never mind...
+ dispError
+ end
+
+ % Expand child node if not leaf & not toolbar/menubar
+ if childNode.isLeafNode
+
+ % This is a leaf node, so simply update the progress-bar
+ progressBar.setValue(progressBar.getValue+1);
+
+ else
+ % Expand all non-leaves
+ expandNode(progressBar, tree, tree_h, childNode);
+
+ % Re-collapse toolbar/menubar etc., and also invisible containers
+ % Note: if we simply did nothing, progressbar would not have been updated...
+ try
+ childHandle = getappdata(childNode,'childHandle'); %=childNode.getUserObject
+ visible = childHandle.isVisible;
+ catch
+ visible = 1;
+ end
+ visible = visible && isempty(findstr(get(childNode,'Name'),'color="gray"'));
+ %if any(strcmp(childNode.getName,nodesToUnExpand))
+ %name = char(childNode.getName);
+ if any(cellfun(@(s)~isempty(strmatch(s,char(childNode.getName))),nodesToUnExpand)) || ~visible
+ childPath = javax.swing.tree.TreePath(childNode.getPath);
+ childRow = tree.getRowForPath(childPath);
+ tree.collapseRow(childRow);
+ end
+ end
+ end
+ catch
+ % never mind...
+ dispError
+ end
+ end
+
+ %% Create utility buttons
+ function hButton = createJButton(nameStr, handler, toolTipText)
+ try
+ jButton = javax.swing.JButton([' ' nameStr]);
+ jButton.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR));
+ jButton.setToolTipText(toolTipText);
+ try
+ minSize = jButton.getMinimumSize;
+ catch
+ minSize = jButton.getMinimumSize; % for HG2 - strange indeed that this is needed!
+ end
+ jButton.setMinimumSize(java.awt.Dimension(minSize.getWidth,35));
+ hButton = handle(jButton,'CallbackProperties');
+ set(hButton,'ActionPerformedCallback',handler);
+ catch
+ % Never mind...
+ a= 1;
+ end
+ end
+
+ %% Flash a component off/on for the specified duration
+ % note: starts with 'on'; if numTimes is odd then ends with 'on', otherwise with 'off'
+ function flashComponent(jComps,delaySecs,numTimes)
+ persistent redBorder redBorderPanels
+ try
+ % Handle callback data from right-click (context-menu)
+ if iscell(numTimes)
+ [jComps,delaySecs,numTimes] = deal(numTimes{:});
+ end
+
+ if isempty(redBorder) % reuse if possible
+ redBorder = javax.swing.border.LineBorder(java.awt.Color.red,2,0);
+ end
+ for compIdx = 1 : length(jComps)
+ try
+ oldBorder{compIdx} = jComps(compIdx).getBorder; %#ok grow
+ catch
+ oldBorder{compIdx} = []; %#ok grow
+ end
+ isSettable(compIdx) = ismethod(jComps(compIdx),'setBorder'); %#ok grow
+ if isSettable(compIdx)
+ try
+ % some components prevent border modification:
+ oldBorderFlag = jComps(compIdx).isBorderPainted;
+ if ~oldBorderFlag
+ jComps(compIdx).setBorderPainted(1);
+ isSettable(compIdx) = jComps(compIdx).isBorderPainted; %#ok grow
+ jComps(compIdx).setBorderPainted(oldBorderFlag);
+ end
+ catch
+ % do nothing...
+ end
+ end
+ if compIdx > length(redBorderPanels)
+ redBorderPanels{compIdx} = javax.swing.JPanel;
+ redBorderPanels{compIdx}.setBorder(redBorder);
+ redBorderPanels{compIdx}.setOpaque(0); % transparent interior, red border
+ end
+ try
+ redBorderPanels{compIdx}.setBounds(jComps(compIdx).getBounds);
+ catch
+ % never mind - might be an HG handle
+ end
+ end
+ for idx = 1 : 2*numTimes
+ if idx>1, pause(delaySecs); end % don't pause at start
+ visible = mod(idx,2);
+ for compIdx = 1 : length(jComps)
+ try
+ jComp = jComps(compIdx);
+
+ % Prevent Matlab crash (java buffer overflow...)
+ if isa(jComp,'com.mathworks.mwswing.desk.DTSplitPane') || ...
+ isa(jComp,'com.mathworks.mwswing.MJSplitPane')
+ continue;
+
+ % HG handles are highlighted by setting their 'Selected' property
+ elseif isa(jComp,'uimenu') || isa(jComp,'matlab.ui.container.Menu')
+ if visible
+ oldColor = get(jComp,'ForegroundColor');
+ setappdata(jComp,'findjobj_oldColor',oldColor);
+ set(jComp,'ForegroundColor','red');
+ else
+ oldColor = getappdata(jComp,'findjobj_oldColor');
+ set(jComp,'ForegroundColor',oldColor);
+ rmappdata(jComp,'ForegroundColor');
+ end
+
+ elseif ishghandle(jComp)
+ if visible
+ set(jComp,'Selected','on');
+ else
+ set(jComp,'Selected','off');
+ end
+
+ else %if isjava(jComp)
+
+ jParent = jComps(compIdx).getParent;
+
+ % Most Java components allow modifying their borders
+ if isSettable(compIdx)
+ if visible
+ jComp.setBorder(redBorder);
+ try jComp.setBorderPainted(1); catch, end %#ok
+ else %if ~isempty(oldBorder{compIdx})
+ jComp.setBorder(oldBorder{compIdx});
+ end
+ jComp.repaint;
+
+ % The other Java components are highlighted by a transparent red-border
+ % panel that is placed on top of them in their parent's space
+ elseif ~isempty(jParent)
+ if visible
+ jParent.add(redBorderPanels{compIdx});
+ jParent.setComponentZOrder(redBorderPanels{compIdx},0);
+ else
+ jParent.remove(redBorderPanels{compIdx});
+ end
+ jParent.repaint
+ end
+ end
+ catch
+ % never mind - try the next component (if any)
+ end
+ end
+ drawnow;
+ end
+ catch
+ % never mind...
+ dispError;
+ end
+ return; % debug point
+ end % flashComponent
+
+ %% Select tree node
+ function nodeSelected(src, evd, tree) %#ok
+ try
+ if iscell(tree)
+ [src,node] = deal(tree{:});
+ else
+ node = evd.getCurrentNode;
+ end
+ %nodeHandle = node.getUserObject;
+ nodedata = get(node,'userdata');
+ nodeHandle = nodedata.obj;
+ try
+ userdata = get(src,'userdata');
+ catch
+ try
+ userdata = getappdata(java(src),'userdata');
+ catch
+ userdata = getappdata(src,'userdata');
+ end
+ if isempty(userdata)
+ try userdata = get(java(src),'userdata'); catch, end
+ end
+ end
+ if ~isempty(nodeHandle) && ~isempty(userdata)
+ numSelections = userdata.jTree.getSelectionCount;
+ selectionPaths = userdata.jTree.getSelectionPaths;
+ if (numSelections == 1)
+ % Indicate that the user has modified the initial selection (except if this was an initial auto-selected node)
+ if ~userdata.inInit
+ userdata.userSelected = true;
+ try
+ set(src,'userdata',userdata);
+ catch
+ try
+ setappdata(java(src),'userdata',userdata);
+ catch
+ setappdata(src,'userdata',userdata);
+ end
+ end
+ end
+
+ % Update the fully-qualified class name label
+ numInitialIdx = length(userdata.initialIdx);
+ thisHandle = nodeHandle;
+ try
+ if ~ishghandle(thisHandle)
+ thisHandle = java(nodeHandle);
+ end
+ catch
+ % never mind...
+ end
+ if ~userdata.inInit || (numInitialIdx == 1)
+ userdata.classNameLabel.setText([' ' char(class(thisHandle))]);
+ else
+ userdata.classNameLabel.setText([' ' num2str(numInitialIdx) 'x handles (some handles hidden by unexpanded tree nodes)']);
+ end
+ if ishghandle(thisHandle)
+ userdata.classNameLabel.setText(userdata.classNameLabel.getText.concat(' (HG handle)'));
+ end
+ userdata.inspectorPane.dispose; % remove props listeners - doesn't work...
+ updateNodeTooltip(nodeHandle, userdata.classNameLabel);
+
+ % Update the data properties inspector pane
+ % Note: we can't simply use the evd nodeHandle, because this node might have been DE-selected with only one other node left selected...
+ %nodeHandle = selectionPaths(1).getLastPathComponent.getUserObject;
+ nodedata = get(selectionPaths(1).getLastPathComponent,'userdata');
+ nodeHandle = nodedata.obj;
+ %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround
+ userdata.inspectorPane.setObject(thisHandle);
+
+ % Update the callbacks table
+ try
+ stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs');
+ [cbData, cbHeaders, cbTableEnabled] = getCbsData(nodeHandle, stripStdCbsFlag); %#ok cbTableEnabled unused
+ try
+ % Use JideTable if available on this system
+ list = getTreeData(cbData); %#ok
+ callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ % Expand if only one category
+ if length(callbacksTableModel.getCategories)==1
+ callbacksTableModel.expandFirstLevel;
+ end
+ catch
+ callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders);
+ end
+ set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,nodeHandle,userdata.callbacksTable});
+ %set(callbacksTableModel, 'UserData',nodeHandle);
+ userdata.callbacksTable.setModel(callbacksTableModel)
+ userdata.callbacksTable.setRowAutoResizes(true);
+ userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable);
+ catch
+ % never mind...
+ %dispError
+ end
+ pause(0.005);
+ drawnow;
+ %restoreDbstopError(identifiers);
+
+ % Highlight the selected object (if visible)
+ flashComponent(nodeHandle,0.2,3);
+
+ elseif (numSelections > 1) % Multiple selections
+
+ % Get the list of all selected nodes
+ jArray = javaArray('java.lang.Object', numSelections);
+ toolTipStr = '';
+ sameClassFlag = true;
+ for idx = 1 : numSelections
+ %jArray(idx) = selectionPaths(idx).getLastPathComponent.getUserObject;
+ nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata');
+ try
+ if ishghandle(nodedata.obj)
+ if idx==1
+ jArray = nodedata.obj;
+ else
+ jArray(idx) = nodedata.obj;
+ end
+ else
+ jArray(idx) = java(nodedata.obj);
+ end
+ catch
+ jArray(idx) = nodedata.obj;
+ end
+ toolTipStr = [toolTipStr ' ' class(jArray(idx)) ' ']; %#ok grow
+ if (idx < numSelections), toolTipStr = [toolTipStr ' ']; end %#ok grow
+ try
+ if (idx > 1) && sameClassFlag && ~isequal(jArray(idx).getClass,jArray(1).getClass)
+ sameClassFlag = false;
+ end
+ catch
+ if (idx > 1) && sameClassFlag && ~isequal(class(jArray(idx)),class(jArray(1)))
+ sameClassFlag = false;
+ end
+ end
+ end
+ toolTipStr = [toolTipStr ''];
+
+ % Update the fully-qualified class name label
+ if sameClassFlag
+ classNameStr = class(jArray(1));
+ else
+ classNameStr = 'handle';
+ end
+ if all(ishghandle(jArray))
+ if strcmp(classNameStr,'handle')
+ classNameStr = 'HG handles';
+ else
+ classNameStr = [classNameStr ' (HG handles)'];
+ end
+ end
+ classNameStr = [' ' num2str(numSelections) 'x ' classNameStr];
+ userdata.classNameLabel.setText(classNameStr);
+ userdata.classNameLabel.setToolTipText(toolTipStr);
+
+ % Update the data properties inspector pane
+ %identifiers = disableDbstopError; % "dbstop if error" causes inspect.m to croak due to a bug - so workaround
+ if isjava(jArray)
+ jjArray = jArray;
+ else
+ jjArray = javaArray('java.lang.Object', numSelections);
+ for idx = 1 : numSelections
+ jjArray(idx) = java(jArray(idx));
+ end
+ end
+ userdata.inspectorPane.getRegistry.setSelected(jjArray, true);
+
+ % Update the callbacks table
+ try
+ % Get intersecting callback names & values
+ stripStdCbsFlag = getappdata(userdata.callbacksTable,'hideStdCbs');
+ [cbData, cbHeaders, cbTableEnabled] = getCbsData(jArray(1), stripStdCbsFlag); %#ok cbHeaders & cbTableEnabled unused
+ if ~isempty(cbData)
+ cbNames = cbData(:,1);
+ for idx = 2 : length(jArray)
+ [cbData2, cbHeaders2] = getCbsData(jArray(idx), stripStdCbsFlag); %#ok cbHeaders2 unused
+ if ~isempty(cbData2)
+ newCbNames = cbData2(:,1);
+ [cbNames, cbIdx, cb2Idx] = intersect(cbNames,newCbNames); %#ok cb2Idx unused
+ cbData = cbData(cbIdx,:);
+ for cbIdx = 1 : length(cbNames)
+ newIdx = find(strcmp(cbNames{cbIdx},newCbNames));
+ if ~isequal(cbData2,cbData) && ~isequal(cbData2{newIdx,2}, cbData{cbIdx,2})
+ cbData{cbIdx,2} = '';
+ end
+ end
+ else
+ cbData = cbData([],:); %=empty cell array
+ end
+ if isempty(cbData)
+ break;
+ end
+ end
+ end
+ cbHeaders = {'Callback name','Callback value'};
+ try
+ % Use JideTable if available on this system
+ list = getTreeData(cbData); %#ok
+ callbacksTableModel = eval('com.jidesoft.grid.PropertyTableModel(list);'); %#ok prevent JIDE alert by run-time (not load-time) evaluation
+
+ % Expand if only one category
+ if length(callbacksTableModel.getCategories)==1
+ callbacksTableModel.expandFirstLevel;
+ end
+ catch
+ callbacksTableModel = javax.swing.table.DefaultTableModel(cbData,cbHeaders);
+ end
+ set(handle(callbacksTableModel,'CallbackProperties'), 'TableChangedCallback',{@tbCallbacksChanged,jArray,userdata.callbacksTable});
+ %set(callbacksTableModel, 'UserData',jArray);
+ userdata.callbacksTable.setModel(callbacksTableModel)
+ userdata.callbacksTable.setRowAutoResizes(true);
+ userdata.jideTableUtils.autoResizeAllColumns(userdata.callbacksTable);
+ catch
+ % never mind...
+ dispError
+ end
+
+ pause(0.005);
+ drawnow;
+ %restoreDbstopError(identifiers);
+
+ % Highlight the selected objects (if visible)
+ flashComponent(jArray,0.2,3);
+ end
+
+ % TODO: Auto-highlight selected object (?)
+ %nodeHandle.requestFocus;
+ end
+ catch
+ dispError
+ end
+ end
+
+ %% IFF utility function for annonymous cellfun funcs
+ function result = iff(test,trueVal,falseVal) %#ok
+ try
+ if test
+ result = trueVal;
+ else
+ result = falseVal;
+ end
+ catch
+ result = false;
+ end
+ end
+
+ %% Get an HTML representation of the object's properties
+ function dataFieldsStr = getPropsHtml(nodeHandle, dataFields)
+ try
+ % Get a text representation of the fieldnames & values
+ undefinedStr = '';
+ hiddenStr = '';
+ dataFieldsStr = ''; % just in case the following croaks...
+ if isempty(dataFields)
+ return;
+ end
+ dataFieldsStr = evalc('disp(dataFields)');
+ if dataFieldsStr(end)==char(10), dataFieldsStr=dataFieldsStr(1:end-1); end
+
+ % Strip out callbacks
+ dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*Callback(Data)?:[^\n]*$','','lineanchors');
+
+ % Strip out internal HG2 mirror properties
+ dataFieldsStr = regexprep(dataFieldsStr,'^\s*\w*_I:[^\n]*$','','lineanchors');
+ dataFieldsStr = regexprep(dataFieldsStr,'\n\n+','\n');
+
+ % Sort the fieldnames
+ %fieldNames = fieldnames(dataFields);
+ try
+ [a,b,c,d] = regexp(dataFieldsStr,'(\w*): ');
+ fieldNames = strrep(d,': ','');
+ catch
+ fieldNames = fieldnames(dataFields);
+ end
+ try
+ [fieldNames, sortedIdx] = sort(fieldNames);
+ s = strsplit(dataFieldsStr, sprintf('\n'))';
+ dataFieldsStr = strjoin(s(sortedIdx), sprintf('\n'));
+ catch
+ % never mind... - ignore, leave unsorted
+ end
+
+ % Convert into a Matlab handle()
+ %nodeHandle = handle(nodeHandle);
+ try
+ % ensure this is a Matlab handle, not a java object
+ nodeHandle = handle(nodeHandle, 'CallbackProperties');
+ catch
+ try
+ % HG handles don't allow CallbackProperties...
+ nodeHandle = handle(nodeHandle);
+ catch
+ % Some Matlab class objects simply cannot be converted into a handle()
+ end
+ end
+
+ % HTMLize tooltip data
+ % First, set the fields' font based on its read-write status
+ for fieldIdx = 1 : length(fieldNames)
+ thisFieldName = fieldNames{fieldIdx};
+ %accessFlags = get(findprop(nodeHandle,thisFieldName),'AccessFlags');
+ try
+ hProp = findprop(nodeHandle,thisFieldName);
+ accessFlags = get(hProp,'AccessFlags');
+ visible = get(hProp,'Visible');
+ catch
+ accessFlags = [];
+ visible = 'on';
+ try if hProp.Hidden, visible='off'; end, catch, end
+ end
+ %if isfield(accessFlags,'PublicSet') && strcmp(accessFlags.PublicSet,'on')
+ if (~isempty(hProp) && isprop(hProp,'SetAccess') && isequal(hProp.SetAccess,'public')) || ... % isequal(...'public') and not strcmpi(...) because might be a cell array of classes
+ (~isempty(accessFlags) && isfield(accessFlags,'PublicSet') && strcmpi(accessFlags.PublicSet,'on'))
+ % Bolden read/write fields
+ thisFieldFormat = ['' thisFieldName ' :$2'];
+ %elseif ~isfield(accessFlags,'PublicSet')
+ elseif (isempty(hProp) || ~isprop(hProp,'SetAccess')) && ...
+ (isempty(accessFlags) || ~isfield(accessFlags,'PublicSet'))
+ % Undefined - probably a Matlab-defined field of com.mathworks.hg.peer.FigureFrameProxy...
+ thisFieldFormat = ['' thisFieldName ' :$2'];
+ undefinedStr = ', undefined ';
+ else % PublicSet=='off'
+ % Gray-out & italicize any read-only fields
+ thisFieldFormat = ['' thisFieldName ' :$2 '];
+ end
+ if strcmpi(visible,'off')
+ %thisFieldFormat = ['' thisFieldFormat ' ']; %#ok
+ thisFieldFormat = regexprep(thisFieldFormat, {'(.*):(.*)','<.?b>'}, {'$1:$2',''}); %'(.*):(.*)', '$1:$2');
+ hiddenStr = ', hidden ';
+ end
+ dataFieldsStr = regexprep(dataFieldsStr, ['([\s\n])' thisFieldName ':([^\n]*)'], ['$1' thisFieldFormat]);
+ end
+ catch
+ % never mind... - probably an ambiguous property name
+ %dispError
+ end
+
+ % Method 1: simple list
+ %dataFieldsStr = strrep(dataFieldsStr,char(10),' ');
+
+ % Method 2: 2-column
+ dataFieldsStr = regexprep(dataFieldsStr, '^\s*([^:]+:)([^\n]*)\n^\s*([^:]+:)([^\n]*)$', ' $1 $2 $3 $4 ', 'lineanchors');
+ dataFieldsStr = regexprep(dataFieldsStr, '^[^<]\s*([^:]+:)([^\n]*)$', ' $1 $2 ', 'lineanchors');
+ dataFieldsStr = ['(documented ' undefinedStr hiddenStr ' & read-only fields)
'];
+ end
+
+ %% Update tooltip string with a node's data
+ function updateNodeTooltip(nodeHandle, uiObject)
+ try
+ toolTipStr = class(nodeHandle);
+ dataFieldsStr = '';
+
+ % Add HG annotation if relevant
+ if ishghandle(nodeHandle)
+ hgStr = ' HG Handle';
+ else
+ hgStr = '';
+ end
+
+ % Prevent HG-Java warnings
+ oldWarn = warning('off','MATLAB:hg:JavaSetHGProperty');
+ warning('off','MATLAB:hg:PossibleDeprecatedJavaSetHGProperty');
+ warning('off','MATLAB:hg:Root');
+
+ % Note: don't bulk-get because (1) not all properties are returned & (2) some properties cause a Java exception
+ % Note2: the classhandle approach does not enable access to user-defined schema.props
+ ch = classhandle(handle(nodeHandle));
+ dataFields = [];
+ [sortedNames, sortedIdx] = sort(get(ch.Properties,'Name'));
+ for idx = 1 : length(sortedIdx)
+ sp = ch.Properties(sortedIdx(idx));
+ % TODO: some fields (see EOL comment below) generate a Java Exception from: com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run
+ if strcmp(sp.AccessFlags.PublicGet,'on') % && ~any(strcmp(sp.Name,{'FixedColors','ListboxTop','Extent'}))
+ try
+ dataFields.(sp.Name) = get(nodeHandle, sp.Name);
+ catch
+ dataFields.(sp.Name) = 'Error! ';
+ end
+ else
+ dataFields.(sp.Name) = '(no public getter method)';
+ end
+ end
+ dataFieldsStr = getPropsHtml(nodeHandle, dataFields);
+ catch
+ % Probably a non-HG java object
+ try
+ % Note: the bulk-get approach enables access to user-defined schema-props, but not to some original classhandle Properties...
+ try
+ oldWarn3 = warning('off','MATLAB:structOnObject');
+ dataFields = struct(nodeHandle);
+ warning(oldWarn3);
+ catch
+ dataFields = get(nodeHandle);
+ end
+ dataFieldsStr = getPropsHtml(nodeHandle, dataFields);
+ catch
+ % Probably a missing property getter implementation
+ try
+ % Inform the user - bail out on error
+ err = lasterror; %#ok
+ dataFieldsStr = ['' strrep(err.message, char(10), ' ')];
+ catch
+ % forget it...
+ end
+ end
+ end
+
+ % Restore warnings
+ try warning(oldWarn); catch, end
+
+ % Set the object tooltip
+ if ~isempty(dataFieldsStr)
+ toolTipStr = [' ' char(toolTipStr) ' ' hgStr ': ' dataFieldsStr ''];
+ end
+ uiObject.setToolTipText(toolTipStr);
+ end
+
+ %% Expand tree node
+ function nodeExpanded(src, evd, tree) %#ok
+ % tree = handle(src);
+ % evdsrc = evd.getSource;
+ evdnode = evd.getCurrentNode;
+
+ if ~tree.isLoaded(evdnode)
+
+ % Get the list of children TreeNodes
+ childnodes = getChildrenNodes(tree, evdnode);
+
+ % Add the HG sub-tree (unless already included in the first tree)
+ childHandle = getappdata(evdnode.handle,'childHandle'); %=evdnode.getUserObject
+ if evdnode.isRoot && ~isempty(hg_handles) && ~isequal(hg_handles(1).java, childHandle)
+ childnodes = [childnodes, getChildrenNodes(tree, evdnode, true)];
+ end
+
+ % If we have a single child handle, wrap it within a javaArray for tree.add() to "swallow"
+ if (length(childnodes) == 1)
+ chnodes = childnodes;
+ childnodes = javaArray('com.mathworks.hg.peer.UITreeNode', 1);
+ childnodes(1) = java(chnodes);
+ end
+
+ % Add child nodes to the current node
+ tree.add(evdnode, childnodes);
+ tree.setLoaded(evdnode, true);
+ end
+ end
+
+ %% Get an icon image no larger than 16x16 pixels
+ function iconImage = setIconSize(iconImage)
+ try
+ iconWidth = iconImage.getWidth;
+ iconHeight = iconImage.getHeight;
+ if iconWidth > 16
+ newHeight = fix(iconHeight * 16 / iconWidth);
+ iconImage = iconImage.getScaledInstance(16,newHeight,iconImage.SCALE_SMOOTH);
+ elseif iconHeight > 16
+ newWidth = fix(iconWidth * 16 / iconHeight);
+ iconImage = iconImage.getScaledInstance(newWidth,16,iconImage.SCALE_SMOOTH);
+ end
+ catch
+ % never mind... - return original icon
+ end
+ end % setIconSize
+
+ %% Get list of children nodes
+ function nodes = getChildrenNodes(tree, parentNode, isRootHGNode)
+ try
+ iconpath = [matlabroot, '/toolbox/matlab/icons/'];
+ nodes = handle([]);
+ try
+ userdata = get(tree,'userdata');
+ catch
+ userdata = getappdata(handle(tree),'userdata');
+ end
+ hdls = userdata.handles;
+ nodedata = get(parentNode,'userdata');
+ if nargin < 3
+ %isJavaNode = ~ishghandle(parentNode.getUserObject);
+ isJavaNode = ~ishghandle(nodedata.obj);
+ isRootHGNode = false;
+ else
+ isJavaNode = ~isRootHGNode;
+ end
+
+ % Search for this parent node in the list of all nodes
+ parents = userdata.parents;
+ nodeIdx = nodedata.idx;
+
+ if isJavaNode && isempty(nodeIdx) % Failback, in case userdata doesn't work for some reason...
+ for hIdx = 1 : length(hdls)
+ %if isequal(handle(parentNode.getUserObject), hdls(hIdx))
+ if isequal(handle(nodedata.obj), hdls(hIdx))
+ nodeIdx = hIdx;
+ break;
+ end
+ end
+ end
+ if ~isJavaNode
+ if isRootHGNode % =root HG node
+ thisChildHandle = userdata.hg_handles(1);
+ childName = getNodeName(thisChildHandle);
+ hasGrandChildren = any(parents==1);
+ icon = [];
+ if hasGrandChildren && length(hg_handles)>1
+ childName = childName.concat(' - HG root container');
+ icon = [iconpath 'figureicon.gif'];
+ end
+ try
+ nodes = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch % old matlab version don't have the 'v0' option
+ try
+ nodes = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch
+ % probably an invalid handle - ignore...
+ end
+ end
+
+ % Add the handler to the node's internal data
+ % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes
+ % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata
+ %nodes.setUserObject(thisChildHandle);
+ setappdata(nodes,'childHandle',thisChildHandle);
+ nodedata.idx = 1;
+ nodedata.obj = thisChildHandle;
+ set(nodes,'userdata',nodedata);
+ return;
+ else % non-root HG node
+ parents = userdata.hg_parents;
+ hdls = userdata.hg_handles;
+ end % if isRootHGNode
+ end % if ~isJavaNode
+
+ % If this node was found, get the list of its children
+ if ~isempty(nodeIdx)
+ %childIdx = setdiff(find(parents==nodeIdx),nodeIdx);
+ childIdx = find(parents==nodeIdx);
+ childIdx(childIdx==nodeIdx) = []; % faster...
+ numChildren = length(childIdx);
+ for cIdx = 1 : numChildren
+ thisChildIdx = childIdx(cIdx);
+ try thisChildHandle = hdls(thisChildIdx); catch, continue, end
+ childName = getNodeName(thisChildHandle);
+ try
+ visible = thisChildHandle.Visible;
+ if visible
+ try visible = thisChildHandle.Width > 0; catch, end %#ok
+ end
+ if ~visible
+ childName = ['' char(childName) ' ']; %#ok grow
+ end
+ catch
+ % never mind...
+ end
+ hasGrandChildren = any(parents==thisChildIdx);
+ try
+ isaLabel = isa(thisChildHandle.java,'javax.swing.JLabel');
+ catch
+ isaLabel = 0;
+ end
+ if hasGrandChildren && ~any(strcmp(class(thisChildHandle),{'axes'}))
+ icon = [iconpath 'foldericon.gif'];
+ elseif isaLabel
+ icon = [iconpath 'tool_text.gif'];
+ else
+ icon = [];
+ end
+ try
+ nodes(cIdx) = uitreenode('v0', thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch % old matlab version don't have the 'v0' option
+ try
+ nodes(cIdx) = uitreenode(thisChildHandle, childName, icon, ~hasGrandChildren);
+ catch
+ % probably an invalid handle - ignore...
+ end
+ end
+
+ % Use existing object icon, if available
+ try
+ setTreeNodeIcon(nodes(cIdx),thisChildHandle);
+ catch
+ % probably an invalid handle - ignore...
+ end
+
+ % Pre-select the node based upon the user's FINDJOBJ filters
+ try
+ if isJavaNode && ~userdata.userSelected && any(userdata.initialIdx == thisChildIdx)
+ pause(0.0002); % as short as possible...
+ drawnow;
+ if isempty(tree.getSelectedNodes)
+ tree.setSelectedNode(nodes(cIdx));
+ else
+ newSelectedNodes = [tree.getSelectedNodes, nodes(cIdx).java];
+ tree.setSelectedNodes(newSelectedNodes);
+ end
+ end
+ catch
+ % never mind...
+ end
+
+ % Add the handler to the node's internal data
+ % Note: could also use 'userdata', but setUserObject() is recommended for TreeNodes
+ % Note2: however, setUserObject() sets a java *BeenAdapter object for HG handles instead of the required original class, so use setappdata
+ % Note3: the following will error if invalid handle - ignore
+ try
+ if isJavaNode
+ thisChildHandle = thisChildHandle.java;
+ end
+ %nodes(cIdx).setUserObject(thisChildHandle);
+ setappdata(nodes(cIdx),'childHandle',thisChildHandle);
+ nodedata.idx = thisChildIdx;
+ nodedata.obj = thisChildHandle;
+ set(nodes(cIdx),'userdata',nodedata);
+ catch
+ % never mind (probably an invalid handle) - leave unchanged (like a leaf)
+ end
+ end
+ end
+ catch
+ % Never mind - leave unchanged (like a leaf)
+ %error('YMA:findjobj:UnknownNodeType', 'Error expanding component tree node');
+ dispError
+ end
+ end
+
+ %% Get a node's name
+ function [nodeName, nodeTitle] = getNodeName(hndl,charsLimit)
+ try
+ % Initialize (just in case one of the succeding lines croaks)
+ nodeName = '';
+ nodeTitle = '';
+ if ~ismethod(hndl,'getClass')
+ try
+ nodeName = class(hndl);
+ catch
+ nodeName = hndl.type; % last-ditch try...
+ end
+ else
+ nodeName = hndl.getClass.getSimpleName;
+ end
+
+ % Strip away the package name, leaving only the regular classname
+ if ~isempty(nodeName) && ischar(nodeName)
+ nodeName = java.lang.String(nodeName);
+ nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1);
+ end
+ if (nodeName.length == 0)
+ % fix case of anonymous internal classes, that do not have SimpleNames
+ try
+ nodeName = hndl.getClass.getName;
+ nodeName = nodeName.substring(nodeName.lastIndexOf('.')+1);
+ catch
+ % never mind - leave unchanged...
+ end
+ end
+
+ % Get any unique identifying string (if available in one of several fields)
+ labelsToCheck = {'label','title','text','string','displayname','toolTipText','TooltipString','actionCommand','name','Tag','style'}; %,'UIClassID'};
+ nodeTitle = '';
+ strField = ''; %#ok - used for debugging
+ while ((~isa(nodeTitle,'java.lang.String') && ~ischar(nodeTitle)) || isempty(nodeTitle)) && ~isempty(labelsToCheck)
+ try
+ nodeTitle = get(hndl,labelsToCheck{1});
+ strField = labelsToCheck{1}; %#ok - used for debugging
+ catch
+ % never mind - probably missing prop, so skip to next one
+ end
+ labelsToCheck(1) = [];
+ end
+ if length(nodeTitle) ~= numel(nodeTitle)
+ % Multi-line - convert to a long single line
+ nodeTitle = nodeTitle';
+ nodeTitle = nodeTitle(:)';
+ end
+ if isempty(char(nodeTitle))
+ % No title - check whether this is an HG label whose text is gettable
+ try
+ location = hndl.getLocationOnScreen;
+ pos = [location.getX, location.getY, hndl.getWidth, hndl.getHeight];
+ %dist = sum((labelPositions-repmat(pos,size(labelPositions,1),[1,1,1,1])).^2, 2);
+ dist = sum((labelPositions-repmat(pos,[size(labelPositions,1),1])).^2, 2);
+ [minVal,minIdx] = min(dist);
+ % Allow max distance of 8 = 2^2+2^2 (i.e. X&Y off by up to 2 pixels, W&H exact)
+ if minVal <= 8 % 8=2^2+2^2
+ nodeTitle = get(hg_labels(minIdx),'string');
+ % Preserve the label handles & position for the tooltip & context-menu
+ %hg_labels(minIdx) = [];
+ %labelPositions(minIdx,:) = [];
+ end
+ catch
+ % never mind...
+ end
+ end
+ if nargin<2, charsLimit = 25; end
+ extraStr = regexprep(nodeTitle,{sprintf('(.{%d,%d}).*',charsLimit,min(charsLimit,length(nodeTitle)-1)),' +'},{'$1...',' '},'once');
+ if ~isempty(extraStr)
+ if ischar(extraStr)
+ nodeName = nodeName.concat(' (''').concat(extraStr).concat(''')');
+ else
+ nodeName = nodeName.concat(' (').concat(num2str(extraStr)).concat(')');
+ end
+ %nodeName = nodeName.concat(strField);
+ end
+ catch
+ % Never mind - use whatever we have so far
+ %dispError
+ end
+ end
+
+ %% Strip standard Swing callbacks from a list of events
+ function evNames = stripStdCbs(evNames)
+ try
+ stdEvents = {'AncestorAdded', 'AncestorMoved', 'AncestorRemoved', 'AncestorResized', ...
+ 'ComponentAdded', 'ComponentRemoved', 'ComponentHidden', ...
+ 'ComponentMoved', 'ComponentResized', 'ComponentShown', ...
+ 'FocusGained', 'FocusLost', 'HierarchyChanged', ...
+ 'KeyPressed', 'KeyReleased', 'KeyTyped', ...
+ 'MouseClicked', 'MouseDragged', 'MouseEntered', 'MouseExited', ...
+ 'MouseMoved', 'MousePressed', 'MouseReleased', 'MouseWheelMoved', ...
+ 'PropertyChange', 'VetoableChange', ...
+ 'CaretPositionChanged', 'InputMethodTextChanged', ...
+ 'ButtonDown', 'Create', 'Delete'};
+ stdEvents = [stdEvents, strcat(stdEvents,'Callback'), strcat(stdEvents,'Fcn')];
+ evNames = setdiff(evNames,stdEvents)';
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for checkbox
+ function cbHideStdCbs_Callback(src, evd, callbacksTable, varargin) %#ok
+ try
+ % Store the current checkbox value for later use
+ if nargin < 3
+ try
+ callbacksTable = get(src,'userdata');
+ catch
+ callbacksTable = getappdata(src,'userdata');
+ end
+ end
+ if evd.getSource.isSelected
+ setappdata(callbacksTable,'hideStdCbs',1);
+ else
+ setappdata(callbacksTable,'hideStdCbs',[]);
+ end
+
+ % Rescan the current node
+ try
+ userdata = get(callbacksTable,'userdata');
+ catch
+ userdata = getappdata(callbacksTable,'userdata');
+ end
+ nodepath = userdata.jTree.getSelectionModel.getSelectionPath;
+ try
+ ed.getCurrentNode = nodepath.getLastPathComponent;
+ nodeSelected(handle(userdata.jTreePeer),ed,[]);
+ catch
+ % ignore - probably no node selected
+ end
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btWebsite_Callback(src, evd, varargin) %#ok
+ try
+ web('http://UndocumentedMatlab.com','-browser');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btRefresh_Callback(src, evd, varargin) %#ok
+ try
+ % Set cursor shape to hourglass until we're done
+ hTreeFig = varargin{2};
+ set(hTreeFig,'Pointer','watch');
+ drawnow;
+ object = varargin{1};
+
+ % Re-invoke this utility to re-scan the container for all children
+ findjobj(object);
+ catch
+ % Never mind...
+ end
+
+ % Restore default cursor shape
+ set(hTreeFig,'Pointer','arrow');
+ end
+
+ %% Callback function for button
+ function btExport_Callback(src, evd, varargin) %#ok
+ try
+ % Get the list of all selected nodes
+ if length(varargin) > 1
+ jTree = varargin{1};
+ numSelections = jTree.getSelectionCount;
+ selectionPaths = jTree.getSelectionPaths;
+ hdls = handle([]);
+ for idx = 1 : numSelections
+ %hdls(idx) = handle(selectionPaths(idx).getLastPathComponent.getUserObject);
+ nodedata = get(selectionPaths(idx).getLastPathComponent,'userdata');
+ try
+ hdls(idx) = handle(nodedata.obj,'CallbackProperties');
+ catch
+ if idx==1 % probably due to HG2: can't convert object to handle([])
+ hdls = nodedata.obj;
+ else
+ hdls(idx) = nodedata.obj;
+ end
+ end
+ end
+
+ % Assign the handles in the base workspace & inform user
+ assignin('base','findjobj_hdls',hdls);
+ classNameLabel = varargin{2};
+ msg = ['Exported ' char(classNameLabel.getText.trim) ' to base workspace variable findjobj_hdls'];
+ else
+ % Right-click (context-menu) callback
+ data = varargin{1};
+ obj = data{1};
+ varName = data{2};
+ if isempty(varName)
+ varName = inputdlg('Enter workspace variable name','FindJObj');
+ if isempty(varName), return; end % bail out on
+ varName = varName{1};
+ if isempty(varName) || ~ischar(varName), return; end % bail out on empty/null
+ varName = genvarname(varName);
+ end
+ assignin('base',varName,handle(obj,'CallbackProperties'));
+ msg = ['Exported object to base workspace variable ' varName];
+ end
+ msgbox(msg,'FindJObj','help');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Callback function for button
+ function btFocus_Callback(src, evd, varargin) %#ok
+ try
+ % Request focus for the specified object
+ object = getTopSelectedObject(varargin{:});
+ object.requestFocus;
+ catch
+ try
+ object = object.java.getPeer.requestFocus;
+ object.requestFocus;
+ catch
+ % Never mind...
+ %dispError
+ end
+ end
+ end
+
+ %% Callback function for button
+ function btInspect_Callback(src, evd, varargin) %#ok
+ try
+ % Inspect the specified object
+ if length(varargin) == 1
+ object = varargin{1};
+ else
+ object = getTopSelectedObject(varargin{:});
+ end
+ if isempty(which('uiinspect'))
+
+ % If the user has not indicated NOT to be informed about UIInspect
+ if ~ispref('FindJObj','dontCheckUIInspect')
+
+ % Ask the user whether to download UIINSPECT (YES, no, no & don't ask again)
+ answer = questdlg({'The object inspector requires UIINSPECT from the MathWorks File Exchange. UIINSPECT was created by Yair Altman, like this FindJObj utility.','','Download & install UIINSPECT?'},'UIInspect','Yes','No','No & never ask again','Yes');
+ switch answer
+ case 'Yes' % => Yes: download & install
+ try
+ % Download UIINSPECT
+ baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/17935';
+ fileUrl = [baseUrl '?controller=file_infos&download=true'];
+ %file = urlread(fileUrl);
+ %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL
+
+ % Install...
+ %newPath = fullfile(fileparts(which(mfilename)),'uiinspect.m');
+ %fid = fopen(newPath,'wt');
+ %fprintf(fid,'%s',file);
+ %fclose(fid);
+ [fpath,fname,fext] = fileparts(which(mfilename));
+ zipFileName = fullfile(fpath,'uiinspect.zip');
+ urlwrite(fileUrl,zipFileName);
+ unzip(zipFileName,fpath);
+ rehash;
+ catch
+ % Error downloading: inform the user
+ msgbox(['Error in downloading: ' lasterr], 'UIInspect', 'warn'); %#ok
+ web(baseUrl);
+ end
+
+ % ...and now run it...
+ %pause(0.1);
+ drawnow;
+ dummy = which('uiinspect'); %#ok used only to load into memory
+ uiinspect(object);
+ return;
+
+ case 'No & never ask again' % => No & don't ask again
+ setpref('FindJObj','dontCheckUIInspect',1);
+
+ otherwise
+ % forget it...
+ end
+ end
+ drawnow;
+
+ % No UIINSPECT available - run the good-ol' METHODSVIEW()...
+ methodsview(object);
+ else
+ uiinspect(object);
+ end
+ catch
+ try
+ if isjava(object)
+ methodsview(object)
+ else
+ methodsview(object.java);
+ end
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+ end
+
+ %% Callback function for button
+ function btCheckFex_Callback(src, evd, varargin) %#ok
+ try
+ % Check the FileExchange for the latest version
+ web('http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=14317');
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Check for existence of a newer version
+ function checkVersion()
+ try
+ % If the user has not indicated NOT to be informed
+ if ~ispref('FindJObj','dontCheckNewerVersion')
+
+ % Get the latest version date from the File Exchange webpage
+ baseUrl = 'http://www.mathworks.com/matlabcentral/fileexchange/';
+ webUrl = [baseUrl '14317']; % 'loadFile.do?objectId=14317'];
+ webPage = urlread(webUrl);
+ modIdx = strfind(webPage,'>Updates<');
+ if ~isempty(modIdx)
+ webPage = webPage(modIdx:end);
+ % Note: regexp hangs if substr not found, so use strfind instead...
+ %latestWebVersion = regexprep(webPage,'.*?>(20[\d-]+).*','$1');
+ dateIdx = strfind(webPage,'class="date">');
+ if ~isempty(dateIdx)
+ latestDate = webPage(dateIdx(end)+13 : dateIdx(end)+23);
+ try
+ startIdx = dateIdx(end)+27;
+ descStartIdx = startIdx + strfind(webPage(startIdx:startIdx+999),'');
+ descEndIdx = startIdx + strfind(webPage(startIdx:startIdx+999),' ');
+ descStr = webPage(descStartIdx(1)+3 : descEndIdx(1)-2);
+ descStr = regexprep(descStr,'?[pP]>','');
+ catch
+ descStr = '';
+ end
+
+ % Get this file's latest date
+ thisFileName = which(mfilename); %#ok
+ try
+ thisFileData = dir(thisFileName);
+ try
+ thisFileDatenum = thisFileData.datenum;
+ catch % old ML versions...
+ thisFileDatenum = datenum(thisFileData.date);
+ end
+ catch
+ thisFileText = evalc('type(thisFileName)');
+ thisFileLatestDate = regexprep(thisFileText,'.*Change log:[\s%]+([\d-]+).*','$1');
+ thisFileDatenum = datenum(thisFileLatestDate,'yyyy-mm-dd');
+ end
+
+ % If there's a newer version on the File Exchange webpage (allow 2 days grace period)
+ if (thisFileDatenum < datenum(latestDate,'dd mmm yyyy')-2)
+
+ % Ask the user whether to download the newer version (YES, no, no & don't ask again)
+ msg = {['A newer version (' latestDate ') of FindJObj is available on the MathWorks File Exchange:'], '', ...
+ ['\color{blue}' descStr '\color{black}'], '', ...
+ 'Download & install the new version?'};
+ createStruct.Interpreter = 'tex';
+ createStruct.Default = 'Yes';
+ answer = questdlg(msg,'FindJObj','Yes','No','No & never ask again',createStruct);
+ switch answer
+ case 'Yes' % => Yes: download & install newer file
+ try
+ %fileUrl = [baseUrl '/download.do?objectId=14317&fn=findjobj&fe=.m'];
+ fileUrl = [baseUrl '/14317?controller=file_infos&download=true'];
+ %file = urlread(fileUrl);
+ %file = regexprep(file,[char(13),char(10)],'\n'); %convert to OS-dependent EOL
+ %fid = fopen(thisFileName,'wt');
+ %fprintf(fid,'%s',file);
+ %fclose(fid);
+ [fpath,fname,fext] = fileparts(thisFileName);
+ zipFileName = fullfile(fpath,[fname '.zip']);
+ urlwrite(fileUrl,zipFileName);
+ unzip(zipFileName,fpath);
+ rehash;
+ catch
+ % Error downloading: inform the user
+ msgbox(['Error in downloading: ' lasterr], 'FindJObj', 'warn'); %#ok
+ web(webUrl);
+ end
+ case 'No & never ask again' % => No & don't ask again
+ setpref('FindJObj','dontCheckNewerVersion',1);
+ otherwise
+ % forget it...
+ end
+ end
+ end
+ else
+ % Maybe webpage not fully loaded or changed format - bail out...
+ end
+ end
+ catch
+ % Never mind...
+ end
+ end
+
+ %% Get the first selected object (might not be the top one - depends on selection order)
+ function object = getTopSelectedObject(jTree, root)
+ try
+ object = [];
+ numSelections = jTree.getSelectionCount;
+ if numSelections > 0
+ % Get the first object specified
+ %object = jTree.getSelectionPath.getLastPathComponent.getUserObject;
+ nodedata = get(jTree.getSelectionPath.getLastPathComponent,'userdata');
+ else
+ % Get the root object (container)
+ %object = root.getUserObject;
+ nodedata = get(root,'userdata');
+ end
+ object = nodedata.obj;
+ catch
+ % Never mind...
+ dispError
+ end
+ end
+
+ %% Update component callback upon callbacksTable data change
+ function tbCallbacksChanged(src, evd, object, table)
+ persistent hash
+ try
+ % exit if invalid handle or already in Callback
+ %if ~ishandle(src) || ~isempty(getappdata(src,'inCallback')) % || length(dbstack)>1 %exit also if not called from user action
+ if isempty(hash), hash = java.util.Hashtable; end
+ if ~ishandle(src) || ~isempty(hash.get(src)) % || length(dbstack)>1 %exit also if not called from user action
+ return;
+ end
+ %setappdata(src,'inCallback',1); % used to prevent endless recursion % can't use getappdata(src,...) because it fails on R2010b!!!
+ hash.put(src,1);
+
+ % Update the object's callback with the modified value
+ modifiedColIdx = evd.getColumn;
+ modifiedRowIdx = evd.getFirstRow;
+ if modifiedRowIdx>=0 %&& modifiedColIdx==1 %sanity check - should always be true
+ %table = evd.getSource;
+ %object = get(src,'userdata');
+ modifiedRowIdx = table.getSelectedRow; % overcome issues with hierarchical table
+ cbName = strtrim(table.getValueAt(modifiedRowIdx,0));
+ try
+ cbValue = strtrim(char(table.getValueAt(modifiedRowIdx,1)));
+ if ~isempty(cbValue) && ismember(cbValue(1),'{[@''')
+ cbValue = eval(cbValue);
+ end
+ if (~ischar(cbValue) && ~isa(cbValue, 'function_handle') && (~iscell(cbValue) || iscom(object(1))))
+ revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, '');
+ else
+ for objIdx = 1 : length(object)
+ obj = object(objIdx);
+ if ~iscom(obj)
+ try
+ try
+ if isjava(obj)
+ obj = handle(obj,'CallbackProperties');
+ end
+ catch
+ % never mind...
+ end
+ set(obj, cbName, cbValue);
+ catch
+ try
+ set(handle(obj,'CallbackProperties'), cbName, cbValue);
+ catch
+ % never mind - probably a callback-group header
+ end
+ end
+ else
+ cbs = obj.eventlisteners;
+ if ~isempty(cbs)
+ cbs = cbs(strcmpi(cbs(:,1),cbName),:);
+ obj.unregisterevent(cbs);
+ end
+ if ~isempty(cbValue) && ~strcmp(cbName,'-')
+ obj.registerevent({cbName, cbValue});
+ end
+ end
+ end
+ end
+ catch
+ revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, lasterr) %#ok
+ end
+ end
+ catch
+ % never mind...
+ end
+ %setappdata(src,'inCallback',[]); % used to prevent endless recursion % can't use setappdata(src,...) because it fails on R2010b!!!
+ hash.remove(src);
+ end
+
+ %% Revert Callback table modification
+ function revertCbTableModification(table, modifiedRowIdx, modifiedColIdx, cbName, object, errMsg) %#ok
+ try
+ % Display a notification MsgBox
+ msg = 'Callbacks must be a ''string'', or a @function handle';
+ if ~iscom(object(1)), msg = [msg ' or a {@func,args...} construct']; end
+ if ~isempty(errMsg), msg = {errMsg, '', msg}; end
+ msgbox(msg, ['Error setting ' cbName ' value'], 'warn');
+
+ % Revert to the current value
+ curValue = '';
+ try
+ if ~iscom(object(1))
+ curValue = charizeData(get(object(1),cbName));
+ else
+ cbs = object(1).eventlisteners;
+ if ~isempty(cbs)
+ cbs = cbs(strcmpi(cbs(:,1),cbName),:);
+ curValue = charizeData(cbs(1,2));
+ end
+ end
+ catch
+ % never mind... - clear the current value
+ end
+ table.setValueAt(curValue, modifiedRowIdx, modifiedColIdx);
+ catch
+ % never mind...
+ end
+ end % revertCbTableModification
+
+ %% Get the Java positions of all HG text labels
+ function labelPositions = getLabelsJavaPos(container)
+ try
+ labelPositions = [];
+
+ % Ensure we have a figure handle
+ try
+ h = hFig; %#ok unused
+ catch
+ hFig = getCurrentFigure;
+ end
+
+ % Get the figure's margins from the Matlab properties
+ hg_labels = findall(hFig, 'Style','text');
+ units = get(hFig,'units');
+ set(hFig,'units','pixels');
+ outerPos = get(hFig,'OuterPosition');
+ innerPos = get(hFig,'Position');
+ set(hFig,'units',units);
+ margins = abs(innerPos-outerPos);
+
+ figX = container.getX; % =outerPos(1)
+ figY = container.getY; % =outerPos(2)
+ %figW = container.getWidth; % =outerPos(3)
+ figH = container.getHeight; % =outerPos(4)
+
+ % Get the relevant screen pixel size
+ %monitorPositions = get(0,'MonitorPositions');
+ %for monitorIdx = size(monitorPositions,1) : -1 : 1
+ % screenSize = monitorPositions(monitorIdx,:);
+ % if (outerPos(1) >= screenSize(1)) % && (outerPos(1)+outerPos(3) <= screenSize(3))
+ % break;
+ % end
+ %end
+ %monitorBaseY = screenSize(4) - monitorPositions(1,4);
+
+ % Compute the labels' screen pixel position in Java units ([0,0] = top left)
+ for idx = 1 : length(hg_labels)
+ matlabPos = getpixelposition(hg_labels(idx),1);
+ javaX = figX + matlabPos(1) + margins(1);
+ javaY = figY + figH - matlabPos(2) - matlabPos(4) - margins(2);
+ labelPositions(idx,:) = [javaX, javaY, matlabPos(3:4)]; %#ok grow
+ end
+ catch
+ % never mind...
+ err = lasterror; %#ok debug point
+ end
+ end
+
+ %% Traverse an HG container hierarchy and extract the HG elements within
+ function traverseHGContainer(hcontainer,level,parent)
+ try
+ % Record the data for this node
+ thisIdx = length(hg_levels) + 1;
+ hg_levels(thisIdx) = level;
+ hg_parentIdx(thisIdx) = parent;
+ try
+ hg_handles(thisIdx) = handle(hcontainer);
+ catch
+ hg_handles = handle(hcontainer);
+ end
+ parentId = length(hg_parentIdx);
+
+ % Now recursively process all this node's children (if any)
+ %if ishghandle(hcontainer)
+ try % try-catch is faster than checking ishghandle(hcontainer)...
+ allChildren = allchild(handle(hcontainer));
+ for childIdx = 1 : length(allChildren)
+ traverseHGContainer(allChildren(childIdx),level+1,parentId);
+ end
+ catch
+ % do nothing - probably not a container
+ %dispError
+ end
+
+ % TODO: Add axis (plot) component handles
+ catch
+ % forget it...
+ end
+ end
+
+ %% Debuggable "quiet" error-handling
+ function dispError
+ err = lasterror; %#ok
+ msg = err.message;
+ for idx = 1 : length(err.stack)
+ filename = err.stack(idx).file;
+ if ~isempty(regexpi(filename,mfilename))
+ funcname = err.stack(idx).name;
+ line = num2str(err.stack(idx).line);
+ msg = [msg ' at ' funcname ' line #' line ' ']; %#ok grow
+ break;
+ end
+ end
+ disp(msg);
+ return; % debug point
+ end
+
+ %% ML 7.0 - compatible ischar() function
+ function flag = ischar(data)
+ try
+ flag = builtin('ischar',data);
+ catch
+ flag = isa(data,'char');
+ end
+ end
+
+ %% Set up the uitree context (right-click) menu
+ function jmenu = setTreeContextMenu(obj,node,tree_h)
+ % Prepare the context menu (note the use of HTML labels)
+ import javax.swing.*
+ titleStr = getNodeTitleStr(obj,node);
+ titleStr = regexprep(titleStr,' .*','');
+ menuItem0 = JMenuItem(titleStr);
+ menuItem0.setEnabled(false);
+ menuItem0.setArmed(false);
+ %menuItem1 = JMenuItem('Export handle to findjobj_hdls');
+ if isjava(obj), prefix = 'j'; else, prefix = 'h'; end %#ok
+ varname = strrep([prefix strtok(char(node.getName))], '$','_');
+ varname = genvarname(varname);
+ varname(2) = upper(varname(2)); % ensure lowerCamelCase
+ menuItem1 = JMenuItem(['Export handle to ' varname]);
+ menuItem2 = JMenuItem('Export handle to...');
+ menuItem3 = JMenuItem('Request focus (bring to front)');
+ menuItem4 = JMenuItem('Flash component borders');
+ menuItem5 = JMenuItem('Display properties & callbacks');
+ menuItem6 = JMenuItem('Inspect object');
+
+ % Set the menu items' callbacks
+ set(handle(menuItem1,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,varname}});
+ set(handle(menuItem2,'CallbackProperties'), 'ActionPerformedCallback', {@btExport_Callback,{obj,[]}});
+ set(handle(menuItem3,'CallbackProperties'), 'ActionPerformedCallback', {@requestFocus,obj});
+ set(handle(menuItem4,'CallbackProperties'), 'ActionPerformedCallback', {@flashComponent,{obj,0.2,3}});
+ set(handle(menuItem5,'CallbackProperties'), 'ActionPerformedCallback', {@nodeSelected,{tree_h,node}});
+ set(handle(menuItem6,'CallbackProperties'), 'ActionPerformedCallback', {@btInspect_Callback,obj});
+
+ % Add all menu items to the context menu (with internal separator)
+ jmenu = JPopupMenu;
+ jmenu.add(menuItem0);
+ jmenu.addSeparator;
+ handleValue=[]; try handleValue = double(obj); catch, end; %#ok
+ if ~isempty(handleValue)
+ % For valid HG handles only
+ menuItem0a = JMenuItem('Copy handle value to clipboard');
+ set(handle(menuItem0a,'CallbackProperties'), 'ActionPerformedCallback', sprintf('clipboard(''copy'',%.99g)',handleValue));
+ jmenu.add(menuItem0a);
+ end
+ jmenu.add(menuItem1);
+ jmenu.add(menuItem2);
+ jmenu.addSeparator;
+ jmenu.add(menuItem3);
+ jmenu.add(menuItem4);
+ jmenu.add(menuItem5);
+ jmenu.add(menuItem6);
+ end % setTreeContextMenu
+
+ %% Set the mouse-press callback
+ function treeMousePressedCallback(hTree, eventData, tree_h) %#ok hTree is unused
+ if eventData.isMetaDown % right-click is like a Meta-button
+ % Get the clicked node
+ clickX = eventData.getX;
+ clickY = eventData.getY;
+ jtree = eventData.getSource;
+ treePath = jtree.getPathForLocation(clickX, clickY);
+ try
+ % Modify the context menu based on the clicked node
+ node = treePath.getLastPathComponent;
+ userdata = get(node,'userdata');
+ obj = userdata.obj;
+ jmenu = setTreeContextMenu(obj,node,tree_h);
+
+ % TODO: remember to call jmenu.remove(item) in item callback
+ % or use the timer hack shown here to remove the item:
+ % timerFcn = {@menuRemoveItem,jmenu,item};
+ % start(timer('TimerFcn',timerFcn,'StartDelay',0.2));
+
+ % Display the (possibly-modified) context menu
+ jmenu.show(jtree, clickX, clickY);
+ jmenu.repaint;
+
+ % This is for debugging:
+ userdata.tree = jtree;
+ setappdata(gcf,'findjobj_hgtree',userdata)
+ catch
+ % clicked location is NOT on top of any node
+ % Note: can also be tested by isempty(treePath)
+ end
+ end
+ end % treeMousePressedCallback
+
+ %% Remove the extra context menu item after display
+ function menuRemoveItem(hObj,eventData,jmenu,item) %#ok unused
+ jmenu.remove(item);
+ end % menuRemoveItem
+
+ %% Get the title for the tooltip and context (right-click) menu
+ function nodeTitleStr = getNodeTitleStr(obj,node)
+ try
+ % Display the full classname and object name in the tooltip
+ %nodeName = char(node.getName);
+ %nodeName = strrep(nodeName, '','');
+ %nodeName = strrep(nodeName, ' ','');
+ nodeName = char(getNodeName(obj,99));
+ [objClass,objName] = strtok(nodeName);
+ objName = objName(3:end-1); % strip leading ( and trailing )
+ if isempty(objName), objName = '(none found)'; end
+ nodeName = char(node.getName);
+ objClass = char(obj.getClass.getName);
+ nodeTitleStr = sprintf('Class name: %s Text/title: %s',objClass,objName);
+
+ % If the component is invisible, state this in the tooltip
+ if ~isempty(strfind(nodeName,'color="gray"'))
+ nodeTitleStr = [nodeTitleStr '*** Invisible *** '];
+ end
+ nodeTitleStr = [nodeTitleStr ' Right-click for context-menu'];
+ catch
+ % Possible not a Java object - try treating as an HG handle
+ try
+ handleValueStr = sprintf('#: %.99g ',double(obj));
+ try
+ type = '';
+ type = get(obj,'type');
+ type(1) = upper(type(1));
+ catch
+ if ~ishandle(obj)
+ type = ['Invalid ' char(node.getName) ' '];
+ handleValueStr = '!!! Perhaps this handle was deleted after this UIInspect tree was already drawn. Try to refresh by selecting any valid node handle';
+ end
+ end
+ nodeTitleStr = sprintf('%s handle %s',type,handleValueStr);
+ try
+ % If the component is invisible, state this in the tooltip
+ if strcmp(get(obj,'Visible'),'off')
+ nodeTitleStr = [nodeTitleStr 'Invisible '];
+ end
+ catch
+ % never mind...
+ end
+ catch
+ % never mind... - ignore
+ end
+ end
+ end % getNodeTitleStr
+
+ %% Handle tree mouse movement callback - used to set the tooltip & context-menu
+ function treeMouseMovedCallback(hTree, eventData)
+ try
+ x = eventData.getX;
+ y = eventData.getY;
+ jtree = eventData.getSource;
+ treePath = jtree.getPathForLocation(x, y);
+ try
+ % Set the tooltip string based on the hovered node
+ node = treePath.getLastPathComponent;
+ userdata = get(node,'userdata');
+ obj = userdata.obj;
+ tooltipStr = getNodeTitleStr(obj,node);
+ set(hTree,'ToolTipText',tooltipStr)
+ catch
+ % clicked location is NOT on top of any node
+ % Note: can also be tested by isempty(treePath)
+ end
+ catch
+ dispError;
+ end
+ return; % denug breakpoint
+ end % treeMouseMovedCallback
+
+ %% Request focus for a specific object handle
+ function requestFocus(hTree, eventData, obj) %#ok hTree & eventData are unused
+ % Ensure the object handle is valid
+ if isjava(obj)
+ obj.requestFocus;
+ return;
+ elseif ~ishandle(obj)
+ msgbox('The selected object does not appear to be a valid handle as defined by the ishandle() function. Perhaps this object was deleted after this hierarchy tree was already drawn. Refresh this tree by selecting a valid node handle and then retry.','FindJObj','warn');
+ beep;
+ return;
+ end
+
+ try
+ foundFlag = 0;
+ while ~foundFlag
+ if isempty(obj), return; end % sanity check
+ type = get(obj,'type');
+ obj = double(obj);
+ foundFlag = any(strcmp(type,{'figure','axes','uicontrol'}));
+ if ~foundFlag
+ obj = get(obj,'Parent');
+ end
+ end
+ feval(type,obj);
+ catch
+ % never mind...
+ dispError;
+ end
+ end % requestFocus
+
+end % FINDJOBJ
+
+% Fast implementation
+function jControl = findjobj_fast(hControl, jContainer)
+ try jControl = hControl.getTable; return, catch, end % fast bail-out for old uitables
+ try jControl = hControl.JavaFrame.getGUIDEView; return, catch, end % bail-out for HG2 matlab.ui.container.Panel
+ oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame');
+ if nargin < 2 || isempty(jContainer)
+ % Use a HG2 matlab.ui.container.Panel jContainer if the control's parent is a uipanel
+ try
+ hParent = get(hControl,'Parent');
+ catch
+ % Probably indicates an invalid/deleted/empty handle
+ jControl = [];
+ return
+ end
+ try jContainer = hParent.JavaFrame.getGUIDEView; catch, jContainer = []; end
+ end
+ if isempty(jContainer)
+ hFig = ancestor(hControl,'figure');
+ jf = get(hFig, 'JavaFrame');
+ jContainer = jf.getFigurePanelContainer.getComponent(0);
+ end
+ warning(oldWarn);
+ jControl = [];
+ counter = 20; % 2018-09-21 speedup (100 x 0.001 => 20 x 0.005) - Martin Lehmann suggestion on FEX 2016-06-07
+ specialTooltipStr = '!@#$%^&*';
+ try % Fix for R2018b suggested by Eddie (FEX comment 2018-09-19)
+ tooltipPropName = 'TooltipString';
+ oldTooltip = get(hControl,tooltipPropName);
+ set(hControl,tooltipPropName,specialTooltipStr);
+ catch
+ tooltipPropName = 'Tooltip';
+ oldTooltip = get(hControl,tooltipPropName);
+ set(hControl,tooltipPropName,specialTooltipStr);
+ end
+ while isempty(jControl) && counter>0
+ counter = counter - 1;
+ pause(0.005);
+ jControl = findTooltipIn(jContainer, specialTooltipStr);
+ end
+ set(hControl,tooltipPropName,oldTooltip);
+ try jControl.setToolTipText(oldTooltip); catch, end
+ try jControl = jControl.getParent.getView.getParent.getParent; catch, end % return JScrollPane if exists
+end
+function jControl = findTooltipIn(jContainer, specialTooltipStr)
+ try
+ jControl = []; % Fix suggested by H. Koch 11/4/2017
+ tooltipStr = jContainer.getToolTipText;
+ %if strcmp(char(tooltipStr),specialTooltipStr)
+ if ~isempty(tooltipStr) && tooltipStr.startsWith(specialTooltipStr) % a bit faster
+ jControl = jContainer;
+ else
+ for idx = 1 : jContainer.getComponentCount
+ jControl = findTooltipIn(jContainer.getComponent(idx-1), specialTooltipStr);
+ if ~isempty(jControl), return; end
+ end
+ end
+ catch
+ % ignore
+ end
+end
+
+%% TODO TODO TODO
+%{
+- Enh: Improve interactive-GUI performance - esp. expandNode()
+- Enh: Add property listeners - same problem in MathWork's inspect.m
+- Enh: Display additional properties - same problem in MathWork's inspect.m
+- Enh: Add axis (plot, Graphics) component handles
+- Enh: Add figure thumbnail image below the java tree (& indicate corresponding jObject when selected)
+- Enh: scroll initially-selected node into view (problem because treenode has no pixel location)
+- Fix: java exceptions when getting some fields (com.mathworks.mlwidgets.inspector.PropertyRootNode$PropertyListener$1$1.run)
+- Fix: use EDT if available (especially in flashComponent)
+%}
+
+
diff --git a/Jin_Parnas_Example.mdl b/Jin_Parnas_Example.mdl
new file mode 100644
index 0000000000000000000000000000000000000000..9b091f0f0e66b7e9f4f3141f1a05ad8be7506259
--- /dev/null
+++ b/Jin_Parnas_Example.mdl
@@ -0,0 +1,1688 @@
+# MathWorks OPC Text Package
+Model {
+ Version 10.4
+ Description "Simulink model saved in R2021b"
+}
+__MWOPC_PACKAGE_BEGIN__ R2021b
+__MWOPC_PART_BEGIN__ /[Content_Types].xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /_rels/.rels
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml
+
+
+ model
+ 2011-01-24T17:34:29Z
+ colin
+ pesaraamarasekera
+ 2022-05-19T16:42:57Z
+ 24.0
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml
+
+
+ application/vnd.mathworks.simulink.model
+ Simulink Model
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml
+
+
+ 7ddb53b8-c48f-4a73-bbf5-b511ad2448c4
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml
+
+
+
+ 9.11.0.1873467
+ R2021b
+ Update 3
+ Feb 03 2022
+ 2440358501
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml
+
+
+
+ center
+ middle
+
+
+
+
+
+
+
+
+
+
+ 4
+ bar
+ off
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ off
+ on
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ Dialog
+ held
+ []
+ off
+ off
+ 0
+ on
+
+
+ system
+ ''
+ []
+ auto
+
+
+ FromPortIcon
+ ReadWrite
+ All
+ off
+ off
+ Sample time
+ -1
+ Auto
+ Auto
+ Auto
+ void_void
+ off
+ off
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ off
+ UseLocalSettings
+ AllNumericTypes
+ UseLocalSettings
+ off
+ off
+ NONE
+ off
+ expression
+ update diagram
+ off
+ off
+ on
+ off
+ off
+ off
+ 0
+ off
+ off
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bdmxdata/UserData_1.mxarray BASE64
+AAFJTQAAAAAOAAAAeAAAAAYAAAAIAAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAEAERhdGEO
+AAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAA
+AN0CAAAAAQAAAAEAAAABAAAABQAAAA4AAAAAMgAABgAAAAgAAAAJAAAAAAAAAAUAAAAIAAAAAQAA
+ANAxAAABAAAAAAAAAAIAAADQMQAAAAFJTQAAAAAOAAAAMDEAAAYAAAAIAAAAAgAAAAAAAAAFAAAA
+CAAAAAEAAAABAAAAAQAAAAAAAAAFAAQABQAAAAEAAAAFAAAATUNPUwAAAAAOAAAA6DAAAAYAAAAI
+AAAAEQAAAAAAAAABAAAAAAAAAAEABABNQ09TAQAAAA0AAABGaWxlV3JhcHBlcl9fAAAADgAAAKgw
+AAAGAAAACAAAAAEAAAAAAAAABQAAAAgAAABXAAAAAQAAAAEAAAAAAAAADgAAAFgJAAAGAAAACAAA
+AAkAAAAAAAAABQAAAAgAAAAoCQAAAQAAAAEAAAAAAAAAAgAAACgJAAADAAAALAAAANgBAAA4AgAA
+OAIAABgEAACICAAAKAkAAAAAAAAAAAAAR3JpZDAAQ2VsbHMAQ2VsbDEAY29uZF90ZXh0AGNlbGxf
+aW5kZXgAcGFyZW50X2dyaWQAY2VsbHMAR3JpZABwYXJlbnRfY2VsbABzcGxpdF9wYgBudW1fY2Vs
+bHMAZ3JpZF9pbmRleAByR3JpZABuZXdfY2VsbF9wYgBkZWxldGVfY2VsbF9wYgBwYl9mbGFnAENl
+bGwAc3ViZ3JpZABjb25kAHdpZHRoAGhlaWdodABncmlkX3BiAGNvbG9yAGNvbmRpdGlvbl90ZXh0
+X3dpZHRoAGNvbmRpdGlvbl90ZXh0X2hlaWdodABjb25kaXRpb25fdGV4dF94AGNvbmRpdGlvbl90
+ZXh0X3kAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aABSR3JpZABHcmlkMQBH
+cmlkMgBDZWxsMgByZXN1bHRfdGV4dABSQ2VsbAByZXN1bHQAZnVuY3Rpb25fbmFtZQBmdW5jdGlv
+bl9pbnB1dHMAc2V0dGluZ3MAY2hlY2tlZABvcGVuAG11bHRpX21vZGUARGF0YQBmaWcAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAB4AAAAA
+AAAAAAAAAAAAAAAjAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAASAAAABAAA
+AAAAAAAAAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAQAAAAAAAAAAAAAA
+AAAAAAUAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAC
+AAAAAgAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAkAAAAHAAAAAgAAAAAA
+AAAAAAAAAAAAAAoAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAsAAAAGAAAABAAAAAAAAAAAAAAAAAAA
+AAwAAAAKAAAABAAAAAAAAAAAAAAAAAAAAA0AAAALAAAABAAAAAAAAAAAAAAAAAAAAA4AAAAMAAAA
+BAAAAAAAAAAAAAAAAAAAAA8AAAANAAAABAAAAAAAAAAAAAAAAAAAABAAAAAOAAAABAAAAAAAAAAA
+AAAAAAAAABEAAAAPAAAABAAAAAAAAAAAAAAAAAAAABIAAAAQAAAABAAAAAAAAAAAAAAAAAAAABMA
+AAARAAAAAAAAAAAAAAAJAAAAAQAAAAEAAABKAAAAHwAAAAEAAABLAAAAIAAAAAEAAABMAAAAJQAA
+AAEAAABNAAAAJgAAAAEAAABOAAAAJwAAAAEAAABPAAAAKAAAAAEAAABQAAAAKQAAAAEAAABRAAAA
+KgAAAAEAAABSAAAAAwAAAAIAAAABAAAARwAAAB8AAAABAAAASAAAACAAAAABAAAASQAAAAQAAAAD
+AAAAAQAAABAAAAAhAAAAAQAAACcAAAAiAAAAAQAAACgAAAAXAAAAAQAAACkAAAAAAAAABAAAAAQA
+AAABAAAAAAAAAAUAAAABAAAAAQAAAAYAAAABAAAADgAAABAAAAABAAAADwAAAAAAAAAEAAAABwAA
+AAEAAAAKAAAACwAAAAEAAAALAAAADAAAAAEAAAAMAAAADQAAAAEAAAANAAAAAAAAAAQAAAAEAAAA
+AQAAAAIAAAAFAAAAAQAAAAMAAAAGAAAAAQAAAAQAAAAQAAAAAQAAAAUAAAAAAAAABAAAAAQAAAAB
+AAAABgAAAAUAAAABAAAABwAAAAYAAAABAAAACAAAABAAAAABAAAACQAAAAAAAAAGAAAABAAAAAEA
+AAARAAAABQAAAAEAAAASAAAABgAAAAEAAAAjAAAAFAAAAAEAAAAkAAAAFQAAAAEAAAAlAAAAEAAA
+AAEAAAAmAAAAAAAAAAQAAAAHAAAAAQAAAB8AAAALAAAAAQAAACAAAAAMAAAAAQAAACEAAAANAAAA
+AQAAACIAAAAAAAAABgAAAAQAAAABAAAAEwAAAAUAAAABAAAAFAAAAAYAAAABAAAAFQAAABQAAAAB
+AAAAFgAAABUAAAABAAAAFwAAABAAAAABAAAAGAAAAAAAAAAGAAAABAAAAAEAAAAZAAAABQAAAAEA
+AAAaAAAABgAAAAEAAAAbAAAAFAAAAAEAAAAcAAAAFQAAAAEAAAAdAAAAEAAAAAEAAAAeAAAAAAAA
+AAQAAAADAAAAAQAAACoAAAAhAAAAAQAAACsAAAAiAAAAAQAAACwAAAAXAAAAAQAAAC0AAAAAAAAA
+BAAAAAMAAAABAAAALgAAACEAAAABAAAALwAAACIAAAABAAAAMAAAABcAAAABAAAAMQAAAAAAAAAE
+AAAAAwAAAAEAAAAyAAAAIQAAAAEAAAAzAAAAIgAAAAEAAAA0AAAAFwAAAAEAAAA1AAAAAAAAAAQA
+AAADAAAAAQAAADYAAAAhAAAAAQAAADcAAAAiAAAAAQAAADgAAAAXAAAAAQAAADkAAAAAAAAABAAA
+AAMAAAABAAAAOgAAACEAAAABAAAAOwAAACIAAAABAAAAPAAAABcAAAABAAAAPQAAAAAAAAADAAAA
+AwAAAAEAAAA+AAAAIQAAAAEAAAA/AAAAIgAAAAEAAABAAAAAAwAAAAMAAAABAAAAQQAAACEAAAAB
+AAAAQgAAACIAAAABAAAAQwAAAAMAAAADAAAAAQAAAEQAAAAhAAAAAQAAAEUAAAAiAAAAAQAAAEYA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAO
+AAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeDwwAA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAA8D8OAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAAEAAAAAQAAAAAAAAAQAAQA
+eD09MA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAI
+AAAAAAAAAAAAAEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAFAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAMAAAAAYAAAAIAAAA
+BAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeD4wAA4AAAA4AAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAACEAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAAFAAAAAQAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAA
+AAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAUAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAgAAAAB
+AAAAAQAAAAAAAAAGAAAAIAAAAAAAAN0CAAAAAQAAAAMAAAAEAAAABgAAAAcAAAACAAAADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAI
+QA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAA
+AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAG
+AAAAGAAAAAAAAN0CAAAAAQAAAAEAAAACAAAAAwAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUA
+AAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAUAAAABAAAADgAA
+ADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAA
+AADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAY
+AAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgA
+AAABAAAAAwAAAAEAAAAAAAAAEAADAHk8MAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAA
+AAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAPA/DgAAADAAAAAGAAAACAAAAAQAAAAAAAAA
+BQAAAAgAAAABAAAABAAAAAEAAAAAAAAAEAAEAHk9PTAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAABADgAAAEgAAAAGAAAACAAAAA0A
+AAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAA
+AAEAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEA
+AAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA8D8OAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAA
+AAEAAAADAAAAAQAAAAAAAAAQAAMAeT4wAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAACEAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAQAAAA4A
+AAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAA
+AAAA8D8OAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAAPA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAADwPw4AAABQAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAACAAAAAEA
+AAABAAAAAAAAAAYAAAAgAAAAAAAA3QIAAAABAAAAAwAAAAgAAAAKAAAACwAAAAIAAAAOAAAAOAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAABRA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAAAAQA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYA
+AAAYAAAAAAAA3QIAAAABAAAAAQAAAAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAA
+AAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACQAAAAEAAAAOAAAA
+OAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAA
+APA/DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgA
+AAAAAAAAAADwPw4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAA
+AAkAAAAIAAAAAAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAA
+AQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAIAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAE
+AAAAAAAAAAUAAAAIAAAAAQAAAAcAAAABAAAAAAAAABAAAAAHAAAAeF4yLXleMgAOAAAASAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAA
+AAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAA
+AAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAQAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAA
+AAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAACgAAAAIA
+AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMAeCt5
+AA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAA
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABgAAAAIAAAAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAAIAAAAAgAAAA4AAAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAcAAAABAAAA
+AAAAABAAAAAHAAAAeF4yK3leMgAOAAAASAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAAD
+AAAAAQAAAAAAAAAJAAAAGAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPw4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AAYAAAACAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAACgAAAAIAAAAOAAAAOAAAAAYAAAAIAAAABAAAAAAAAAAF
+AAAACAAAAAEAAAAHAAAAAQAAAAAAAAAQAAAABwAAAHheMi15XjIADgAAAEgAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAAAAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAA
+AAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAA
+GAAAAAAAAN0CAAAAAQAAAAEAAAAHAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAI
+AAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAgAAAACAAAADgAAADgA
+AAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAABAAAABwAAAAEAAAAAAAAAEAAAAAcAAAB4XjIteV4y
+AA4AAABIAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAAAAAAAAkAAAAYAAAA
+AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/DgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAG
+AAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADdAgAAAAEAAAABAAAABwAAAAIAAAAOAAAASAAAAAYA
+AAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAA
+AAEAAAAKAAAAAgAAAA4AAAAwAAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAMAAAABAAAA
+AAAAABAAAwB4K3kADgAAAEgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAwAAAAEAAAAA
+AAAACQAAABgAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8OAAAASAAAAAYAAAAIAAAADQAAAAAA
+AAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAEAAAAAgAA
+AA4AAABIAAAABgAAAAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAA
+AAAA3QIAAAABAAAAAQAAAAsAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAA
+AAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYA
+AAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAGAAAAAgAAAA4AAABIAAAABgAA
+AAgAAAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAA
+AQAAAAsAAAACAAAADgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAA
+AAAAEAAAAAAAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAA
+AAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAHAAAAAgAAAA4AAABIAAAABgAAAAgAAAANAAAAAAAA
+AAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAAAAsAAAACAAAA
+DgAAADAAAAAGAAAACAAAAAQAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAEAAAAAAAAAAO
+AAAAaAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAA4AAAABAAAAAQAAAAAAAAAGAAAAOAAAAAAA
+AN0CAAAAAQAAAAkAAAADAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAEAAAADgAA
+AEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABgAAABgAAAAAAADd
+AgAAAAEAAAABAAAABQAAAAEAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAFAAAACAAAAAYAAAAB
+AAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAQAAAA4AAABIAAAABgAAAAgA
+AAANAAAAAAAAAAUAAAAIAAAABgAAAAEAAAABAAAAAAAAAAYAAAAYAAAAAAAA3QIAAAABAAAAAQAA
+AAIAAAADAAAADgAAAEgAAAAGAAAACAAAAA0AAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAA
+BgAAABgAAAAAAADdAgAAAAEAAAABAAAABQAAAAEAAAAOAAAASAAAAAYAAAAIAAAADQAAAAAAAAAF
+AAAACAAAAAYAAAABAAAAAQAAAAAAAAAGAAAAGAAAAAAAAN0CAAAAAQAAAAEAAAAJAAAAAQAAAA4A
+AAA4AAAABgAAAAgAAAAEAAAAAAAAAAUAAAAIAAAAAQAAAAYAAAABAAAAAAAAABAAAAAGAAAAamlu
+X2V4AAAOAAAAMAAAAAYAAAAIAAAABAAAAAAAAAAFAAAACAAAAAEAAAADAAAAAQAAAAAAAAAQAAMA
+eCx5AA4AAACYAQAABgAAAAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAH
+AAAAAQAAACMAAABzZXQAAAAAaW5wdXRzAGNvdW50AAByYW5nZQAAZXhjZXB0AAAAAAAADgAAADgA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAADw
+Pw4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA
+DgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAA
+AAAAAECPQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkA
+AAAIAAAAAAAAAAAAWUAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAA
+AAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAA
+AQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAI
+AAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAAEgAAAAGAAAACAAA
+AAwAAAAAAAAABQAAAAgAAAAGAAAAAQAAAAEAAAAAAAAABQAAABgAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAOAAAAUA4AAAYAAAAIAAAAAQAAAAAAAAAFAAAACAAAAAYAAAABAAAAAQAAAAAAAAAO
+AAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAFAAQAAQAAAAEA
+AAAAAAAADgAAAMgCAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAE
+AA8AAAABAAAAhwAAAHBhcmVudF9jZWxsAAAAAHBhcmVudF9ncmlkAAAAAGNlbGxzAAAAAAAAAAAA
+AHNwbGl0X3BiAAAAAAAAAG51bV9jZWxscwAAAAAAAGdyaWRfaW5kZXgAAAAAAHJHcmlkAAAAAAAA
+AAAAAG5ld19jZWxsX3BiAAAAAGRlbGV0ZV9jZWxsX3BiAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAF
+AAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAAAAAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAAAAADgAAADAAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAI
+AAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgA
+AAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAAGgFAAAGAAAACAAA
+AAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEABYAAAABAAAAYAEAAHN1YmdyaWQA
+AAAAAAAAAAAAAAAAAABjb25kAAAAAAAAAAAAAAAAAAAAAAAAY29uZF90ZXh0AAAAAAAAAAAAAAAA
+AGNlbGxfaW5kZXgAAAAAAAAAAAAAAABwYXJlbnRfZ3JpZAAAAAAAAAAAAAAAd2lkdGgAAAAAAAAA
+AAAAAAAAAAAAAGhlaWdodAAAAAAAAAAAAAAAAAAAAABncmlkX3BiAAAAAAAAAAAAAAAAAAAAcGJf
+ZmxhZwAAAAAAAAAAAAAAAAAAAGNvbG9yAAAAAAAAAAAAAAAAAAAAAABjb25kaXRpb25fdGV4dF93
+aWR0aAAAY29uZGl0aW9uX3RleHRfaGVpZ2h0AGNvbmRpdGlvbl90ZXh0X3gAAAAAAABjb25kaXRp
+b25fdGV4dF95AAAAAAAAY29uZGl0aW9uX3RleHRfb2Zmc2V0AGdyaWRfcHVzaF93aWR0aAAAAAAA
+AAAOAAAAMAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAA
+AA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAA
+DgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAO
+AAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAA
+AAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAA
+AAAAAAAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAA
+CAAAAAAAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAA
+AAAACQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAA
+AAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAA
+AAEAAAAAAAAACQAAAAgAAAAAAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAA
+AAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADgAAAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAB
+AAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAABpQA4AAAA4AAAABgAAAAgAAAAGAAAAAAAAAAUA
+AAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAATkAOAAAAOAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAAAAAAAAAAACRADgAAADgAAAAGAAAA
+CAAAAAYAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAACQAAAAgAAAAAAAAAAAAkQA4AAAA4
+AAAABgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAkAAAAIAAAAAAAAAAAA
+NEAOAAAAOAAAAAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAEAAAABAAAAAQAAAAAAAAAJAAAACAAA
+AAAAAAAAAD5ADgAAAPgAAAAGAAAACAAAAAIAAAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAA
+BQAEAAYAAAABAAAAEgAAAENlbGxzAEdyaWQxAEdyaWQyAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAACQAQAABgAAAAgAAAACAAAA
+AAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAMAAAAAQAAADwAAABDZWxsMQAAAAAAAABD
+ZWxsMgAAAAAAAAByZXN1bHQAAAAAAAByZXN1bHRfdGV4dABjb2xvcgAAAAAAAAAAAAAADgAAADAA
+AAAGAAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAA
+AAYAAAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAA
+BgAAAAgAAAAGAAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAG
+AAAACAAAAAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYA
+AAAIAAAABgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAIAwAABgAA
+AAgAAAACAAAAAAAAAAUAAAAIAAAAAQAAAAEAAAABAAAAAAAAAAUABAAQAAAAAQAAAKAAAABHcmlk
+MAAAAAAAAAAAAAAAR3JpZDEAAAAAAAAAAAAAAEdyaWQyAAAAAAAAAAAAAABmdW5jdGlvbl9uYW1l
+AAAAZnVuY3Rpb25faW5wdXRzAHNldHRpbmdzAAAAAAAAAABjaGVja2VkAAAAAAAAAAAAb3BlbgAA
+AAAAAAAAAAAAAGZpZwAAAAAAAAAAAAAAAABtdWx0aV9tb2RlAAAAAAAADgAAADAAAAAGAAAACAAA
+AAYAAAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAA
+BgAAAAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAG
+AAAAAAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYA
+AAAAAAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAA
+AAAAAAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAA
+AAAAAAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAA
+AAAABQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAMAAAAAYAAAAIAAAABgAAAAAA
+AAAFAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAA4AAAAwAAAABgAAAAgAAAAGAAAAAAAA
+AAUAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAADgAAADAAAAAGAAAACAAAAAYAAAAAAAAA
+BQAAAAgAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAAAAAAOAAAAiAAAAAYAAAAIAAAACQAAAAAAAAAF
+AAAACAAAAAEAAABYAAAAAQAAAAAAAAACAAAAWAAAAAABSU0AAAAADgAAAEgAAAAGAAAACAAAAAIA
+AAAAAAAABQAAAAgAAAABAAAAAQAAAAEAAAAAAAAABQAEAAUAAAABAAAABQAAAE1DT1MAAAAADgAA
+AAAAAAA
+__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml
+
+
+
+ 9734f98b-adbe-4c2f-88a6-663f30c5d99d
+ maci64
+
+ %<Auto>
+ %<Auto>
+ 574864888
+ %<AutoIncrement:24.0>
+
+
+ none
+
+
+ normal
+
+ $bdroot
+
+ $bdroot |
+
+
+ |
+
+
+
+
+ warning
+
+
+
+ Ensure deterministic transfer (maximum delay)
+ Ensure data integrity only
+ Ensure deterministic transfer (minimum delay)
+ None
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSet0.xml
+
+
+
+ []
+
+
+
+ []
+
+ []
+ 0.0
+ 10.0
+ auto
+ on
+ auto
+ auto
+ 5
+ auto
+ 10*128*eps
+ 1000
+ 4
+ 1
+ auto
+ auto
+ 1
+ 1e-3
+ on
+ off
+ off
+ ode45
+ auto
+ auto
+ DisableAll
+ UseLocalSettings
+ Nonadaptive
+ TrustRegion
+ off
+ off
+ Fast
+ off
+ off
+ Unconstrained
+ Whenever possible
+ []
+ off
+ off
+ ode3
+
+
+ []
+
+ []
+ 1
+ [t, u]
+ xFinal
+ xInitial
+ on
+ 1000
+ off
+ off
+ off
+ off
+ Array
+ ModelDataLogs
+ on
+ off
+ on
+ on
+ off
+ on
+ off
+ streamout
+ on
+ off
+ xout
+ tout
+ yout
+ logsout
+ dsmout
+ RefineOutputTimes
+ []
+ out
+ 1
+ off
+ timeseries
+ out.mat
+ [-inf, inf]
+
+
+
+ BooleansAsBitfields |
+ PassReuseOutputArgsAs |
+ PassReuseOutputArgsThreshold |
+ ZeroExternalMemoryAtStartup |
+ ZeroInternalMemoryAtStartup |
+ OptimizeModelRefInitCode |
+ NoFixptDivByZeroProtection |
+ UseSpecifiedMinMax |
+ EfficientTunableParamExpr |
+
+
+ []
+ on
+ on
+ on
+ Tunable
+ off
+ off
+ off
+ off
+ double
+ off
+ off
+ on
+ on
+ off
+ off
+ on
+ off
+
+ on
+ off
+ uint_T
+ Same as modeled
+ on
+ 64
+ Structure reference
+ 12
+ 2147483647
+ on
+ 5
+ off
+ off
+ Native Integer
+ on
+ on
+ off
+ off
+ off
+ on
+ inf
+ Inherit from target
+ on
+ off
+ off
+ off
+ on
+ on
+ off
+ off
+ level2
+ Balanced
+ on
+ off
+ off
+ GradualUnderflow
+ off
+
+
+
+ UseOnlyExistingSharedCode |
+
+
+ []
+ error
+ none
+ none
+ none
+ error
+ none
+ UseLocalSettings
+ UseLocalSettings
+ UseLocalSettings
+ warning
+ warning
+ warning
+ warning
+ on
+ Classic
+ none
+ off
+ UseLocalSettings
+ warning
+ warning
+ none
+ error
+ warning
+ warning
+ warning
+ warning
+ error
+ error
+ error
+ none
+ warning
+ none
+ warning
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ none
+ none
+ none
+ none
+ none
+ none
+ warning
+ none
+ warning
+ warning
+ warning
+ error
+ none
+ error
+ none
+ warning
+ warning
+ UseLocalSettings
+ on
+ off
+ none
+ error
+ none
+ none
+ warning
+ warning
+ none
+ warning
+ error
+ warning
+ warning
+ error
+ none
+ warning
+ none
+ warning
+ ErrorLevel1
+ WarnAndRepair
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ error
+ warning
+ warning
+ none
+ warning
+ warning
+ all
+ warning
+ on
+ warning
+ warning
+ off
+
+ none
+ off
+ warning
+ none
+
+
+ []
+
+ []
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ Undefined
+ Unspecified
+ 32
+ on
+ off
+ 32-bit Generic
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ on
+ off
+ Undefined
+ Unspecified
+ 32
+ 32
+ 32
+ Specified
+ off
+ on
+ on
+ on
+ EmbeddedCoderHSP
+
+
+ []
+
+ []
+ IfOutOfDateOrStructuralChange
+ on
+ error
+ off
+ on
+ None
+ Multi
+ Infer from blocks in model
+
+ on
+ off
+ off
+ off
+
+
+ []
+
+ []
+
+
+
+
+ []
+
+
+
+
+
+
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ off
+ on
+ 50
+ on
+ on
+ on
+ 65536
+ off
+ []
+ NotSpecified
+ UseInterfaceOnly
+ off
+ None
+
+ generic
+ C
+ off
+ 200
+ 1024
+ off
+
+
+ mkl-dnn
+ on
+
+
+
+ IncludeHyperlinkInReport |
+ GenerateTraceInfo |
+ GenerateTraceReport |
+ GenerateTraceReportSl |
+ GenerateTraceReportSf |
+ GenerateTraceReportEml |
+ PortableWordSizes |
+ GenerateWebview |
+ GenerateCodeMetricsReport |
+ GenerateCodeReplacementReport |
+ GenerateMissedCodeReplacementReport |
+ GenerateErtSFunction |
+ CreateSILPILBlock |
+ CodeExecutionProfiling |
+ CodeProfilingSaveOptions |
+ CodeProfilingInstrumentation |
+ CodeStackProfiling |
+
+
+ grt.tlc
+ None
+ off
+ off
+
+ off
+ make_rtw
+ on
+ off
+
+ grt_default_tmf
+
+ off
+ on
+ off
+ []
+ off
+ off
+ off
+ off
+ off
+ off
+
+
+
+
+
+
+
+
+
+
+
+ Automatically locate an installed toolchain
+ Faster Builds
+ []
+ off
+ off
+ off
+ None
+ off
+ executionProfile
+ SummaryOnly
+ off
+ off
+ C
+ None
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ []
+
+ Off
+ 1024
+
+ -1
+ discrete
+ 200
+ off
+ 1024
+ on
+ on
+ on
+ off
+ 3.5
+
+
+ 0
+ none
+ on
+ 19.05
+ unspecified
+
+
+
+ IgnoreCustomStorageClasses |
+ IgnoreTestpoints |
+ InsertBlockDesc |
+ SFDataObjDesc |
+ SimulinkDataObjDesc |
+ DefineNamingRule |
+ SignalNamingRule |
+ ParamNamingRule |
+ InlinedPrmAccess |
+ CustomSymbolStr |
+ CustomSymbolStrGlobalVar |
+ CustomSymbolStrType |
+ CustomSymbolStrField |
+ CustomSymbolStrFcn |
+ CustomSymbolStrFcnArg |
+ CustomSymbolStrBlkIO |
+ CustomSymbolStrTmpVar |
+ CustomSymbolStrMacro |
+ ReqsInCode |
+ BlockCommentType |
+ InsertPolySpaceComments |
+ MATLABFcnDesc |
+ InternalIdentifier |
+ CustomSymbolStrModelFcn |
+ CustomSymbolStrUtil |
+ CustomSymbolStrEmxType |
+ CustomSymbolStrEmxFcn |
+ CustomUserTokenString |
+
+
+ []
+
+ off
+ on
+ Auto
+ on
+ off
+ 31
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ 1
+ 8
+ $R$N$M
+ $N$R$M_T
+ $N$M
+ $R$N$M$F
+ $R$N
+ rt$I$N$M
+ rtb_$N$M
+ $N$M
+ $R$N$M
+ $N$C
+ emxArray_$M$N
+ emx$M$N
+
+
+ None
+
+ None
+
+ None
+
+ off
+ off
+ on
+ BlockPathComment
+ on
+ off
+ off
+
+ Shortened
+ Literals
+ off
+ off
+ []
+ error
+
+
+
+ GeneratePreprocessorConditionals |
+ IncludeMdlTerminateFcn |
+ RemoveResetFunc |
+ SuppressErrorStatus |
+ ERTCustomFileBanners |
+ GenerateSampleERTMain |
+ GenerateTestInterfaces |
+ ModelStepFunctionPrototypeControlCompliant |
+ CPPClassGenCompliant |
+ PortableWordSizes |
+ PurelyIntegerCode |
+ PreserveStateflowLocalDataDimensions |
+ SupportComplex |
+ SupportAbsoluteTime |
+ SupportContinuousTime |
+ SupportNonInlinedSFcns |
+ GenerateAllocFcn |
+ ExistingSharedCode |
+ ParenthesesLevel |
+ ERTMultiwordTypeDef |
+ MultiwordTypeDef |
+ RemoveDisableFunc |
+
+
+ []
+ ansi_tfl_table_tmw.mat
+
+
+ NOT IN USE
+ C89/C90 (ANSI)
+ None
+ Auto
+ System defined
+ 2048
+ 256
+ on
+ off
+
+ off
+ off
+ on
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ Auto
+ off
+ on
+ rt_
+ on
+ Nonreusable function
+ off
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ Nominal
+ Nominal
+ Simulink.SoftwareTarget.GRTCustomization
+ off
+ on
+ off
+ off
+ on
+ off
+ on
+ on
+ []
+ []
+ 1,2,3,4,...
+ Size,Breakpoints,Table
+ Size,Breakpoints,Table
+ Column-major
+ error
+ $R$E
+ $R$E
+ $R_data
+
+ None |
+
+ off
+ off
+ off
+ off
+ 1000000
+ 0
+ ext_comm
+
+ Level1
+ off
+ off
+ off
+ off
+ off
+ Error
+
+
+
+
+ []
+ Simulink Coverage Configuration Component
+ []
+ Simulink Coverage
+ off
+ EntireSystem
+ on
+ off
+ /
+ covdata
+
+ dw
+
+
+ off
+ on
+ on
+ on
+ on
+ covCumulativeData
+ off
+ on
+ slcov_output/$ModelName$
+ $ModelName$_cvdata
+ on
+ off
+
+ off
+ on
+ 1e-05
+ 0.01
+ off
+ 0
+ 0
+ Masking
+
+
+ Configuration
+ Solver
+ [ 200, 74, 1080, 704 ]
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml
+
+
+ Configuration
+
+
+__MWOPC_PART_BEGIN__ /simulink/graphicalInterface.xml
+
+
+ 0
+ 0
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ Unset
+ 0
+ Simulink
+ 0
+ 0
+ 1
+
+
+__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleCore.xml
+
+
+
+
+
+
+
+
+ false
+ Default
+ -2147483648
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/ScheduleEditor.xml
+
+
+
+
+ HighNumberFirst
+ Default
+
+
+
+
+
+ Default
+ graph.Graph
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/_rels/machine.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/chart_8.xml
+
+
+ jin_ex/code
+ [293 257 161 328]
+ [0 156.75 0 153.75]
+ [1 1 1280 778 1.25]
+ 8
+ LIBRARY_TOOLBAR
+ 6
+ CLUSTER_CHART
+ EML_CHART
+ 2
+ 1
+
+ jin_ex
+
+
+
+ eML_blk_kernel()
+ [18 64.5 118 66]
+ 12
+ SUBCHART
+ 8
+ FUNC_STATE
+ CLUSTER_STATE
+
+ 1
+ function output = jin_ex(x,y)
+%%#eml
+output=x^2-y^2;
+if(y<0)
+ if(x<0)
+ output = x^2-y^2;
+ elseif(x==0)
+ output = x^2+y^2;
+ elseif(x>0)
+ output = x^2-y^2;
+ end
+elseif(y==0)
+ if(x<0)
+ output = x+y;
+ elseif(x==0)
+ output = x^2-y^2;
+ elseif(x>0)
+ output = x+y;
+ end
+elseif(y>0)
+ if(x<0)
+ output = x^2+y^2;
+ elseif(x==0)
+ output = x+y;
+ elseif(x>0)
+ output = x^2+y^2;
+ end
+end
+
+ Matrix(4,1)
+[205.0, 227.0, 1080.0, 733.0]
+ 1
+
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ INPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ OUTPUT_DATA
+
+
+ -1
+
+
+ SF_INHERITED_TYPE
+ SF_DOUBLE_TYPE
+ 1
+ 16
+
+ SF_COMPLEX_INHERITED
+ SF_FRAME_NO
+
+ inherit
+
+
+ Inherit: Same as Simulink
+
+
+ {eML_blk_kernel();}
+ [32.125 19.875 102.544 14.964]
+ 12
+
+ [0 0 1 0 23.5747 14.625 0 0]
+
+
+ 3
+ [1 0 -1 0 23.5747 42.5747 0 0]
+
+ [23.5747 24.9468]
+ [23.575 23.575 14.625 34.575]
+ 8
+ SMART
+
+ BOTH_STICK
+
+ 1
+
+
+ [23.5747 49.5747 7]
+ 8
+ CONNECTIVE_JUNCTION
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/stateflow/machine.xml
+
+
+
+ 80000046
+
+
+ Default Simulink S-Function Target.
+
+
+
+
+
+ 7
+ jin_ex/code
+ 8
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_1.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml
+
+
+ [395, 327, 933, 805]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ Simulink
+
+ [35, 38, 65, 52]
+ -1
+
+
+ [35, 38, 65, 52]
+ -2
+ 2
+
+
+ [2, 1]
+ [250, 49, 320, 96]
+ -3
+ 1.31
+ Stateflow.Translate.translate
+ ExplicitOnly
+ on
+ off
+ MATLAB Function
+
+
+
+ [35, 53, 65, 67]
+ -4
+
+
+ 1
+ 4#out:1
+ 3#in:1
+
+
+ 2
+ 5#out:1
+ 3#in:2
+
+
+ 3
+ 3#out:1
+ 6#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_3.xml
+
+
+ [219, 337, 814, 775]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ 22
+ 13
+ Simulink
+
+ [20, 101, 40, 119]
+ -1
+
+
+ [20, 136, 40, 154]
+ -2
+ 2
+
+
+ [1, 1]
+ [270, 230, 320, 270]
+ 2
+ 1
+
+
+ Stateflow S-Function 2
+ [2, 2]
+ [180, 100, 230, 160]
+ 1
+ sf_sfun
+ [2 2]
+ off
+ off
+ off
+
+ 2
+ output
+
+
+
+ [460, 241, 480, 259]
+ 3
+
+
+ [460, 101, 480, 119]
+ -6
+
+
+ 6
+ 3::1#out:1
+ [120, 0]
+ 3::20#in:1
+
+
+ 7
+ 3::18#out:1
+ 3::20#in:2
+
+
+ output
+ 8
+ [0, 0]
+ 3::20#out:2
+ 3::19#in:1
+
+
+ 9
+ 3::21#out:1
+ 3::22#in:1
+
+
+ 10
+ 3::20#out:1
+ 3::21#in:1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml
+
+
+ [820, 431, 1440, 869]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ on
+ off
+ Deduce
+ simulink-default.rpt
+ 7
+ Simulink
+
+ [2, 1]
+ [80, 54, 245, 121]
+ -1
+ 1.12
+ on
+
+ TTdiag Copy
+ TTdiag Delete
+ TTdiag Open Simulink
+ off
+
+ port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5, 0.9, 'Tabular Expression', 'horizontalAlignment', 'center');color('red');text(0.5, 0.1, 'Not Checked', 'horizontalAlignment', 'center')
+ Table Block
+
+
+
+
+ Table1 from Jin and Parnas' paper "Defining the meaning
+of tabular mathematical expressions"
+
+2 Dimensional normal function table of 2 variables
+
+provable in PVS and CVC3
+ [286, 62, 540, 124]
+ [0, 0, 0, 0]
+ -1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml
+
+
+
+
+ 1
+ [820.0, 431.0, 620.0, 438.0]
+
+ 0
+ Left
+ 50
+ 50
+ 9
+ Unset
+
+
+ 1
+
+
+ 1
+ 1
+ SimulinkTopLevel
+ 0
+ [582.0, 203.0]
+ 1.0
+ [16.44140625, -6.5]
+ [16.44140625, -6.5, 582.0, 203.0]
+
+
+
+ GLUE2:PropertyInspector
+ Property Inspector
+ 0
+
+
+ 0
+ Right
+ 640
+ 480
+ Unset
+
+
+ Simulink:Editor:ReferencedFiles
+ Referenced Files
+ 0
+
+ {"filterShowRefModels":"true","filterShowRefSubs":"true","filterShowOnlyDirtyFiles":"false"}
+
+ 0
+ Left
+ 640
+ 480
+ Unset
+
+
+ AAAA/wAAAAD9AAAAAwAAAAAAAAC9AAAB+PwCAAAABPsAAAAWAEQAbwBjAGsAVwBpAGQAZwBlAHQAMwEAAAAxAAAB+AAAAAAAAAAA+wAAABYARABvAGMAawBXAGkAZABnAGUAdAA0AAAAAAD/////AAAAAAAAAAD7AAAAUgBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQALwBHAEwAVQBFADIAIAB0AHIAZQBlACAAYwBvAG0AcABvAG4AZQBuAHQAAAAAAP////8AAABkAP////sAAABgAFMAaQBtAHUAbABpAG4AawA6AEUAZABpAHQAbwByADoAUgBlAGYAZQByAGUAbgBjAGUAZABGAGkAbABlAHMALwBSAGUAZgBlAHIAZQBuAGMAZQBkACAARgBpAGwAZQBzAAAAAAD/////AAAAiAD///8AAAABAAAAAAAAAAD8AgAAAAH7AAAAVABHAEwAVQBFADIAOgBQAHIAbwBwAGUAcgB0AHkASQBuAHMAcABlAGMAdABvAHIALwBQAHIAbwBwAGUAcgB0AHkAIABJAG4AcwBwAGUAYwB0AG8AcgAAAAAA/////wAAAawA////AAAAAwAAAAAAAAAA/AEAAAAB+/////8AAAAAAP////8AAAFZAP///wAAAmwAAAEIAAAAAQAAAAIAAAABAAAAAvwAAAAA
+
+ dfa218ac-b7e7-479f-998c-2ba17f16a395
+
+
+
+
+
+__MWOPC_PACKAGE_END__
diff --git a/Jin_Parnas_Example.mdl.r2010a b/Jin_Parnas_Example.mdl.r2010a
new file mode 100644
index 0000000000000000000000000000000000000000..0b5a8b9ff481e6d5d2b1519f174c1d6a42f7cc32
--- /dev/null
+++ b/Jin_Parnas_Example.mdl.r2010a
@@ -0,0 +1,1243 @@
+Model {
+ Name "Jin_Parnas_Example"
+ Version 7.5
+ MdlSubVersion 0
+ GraphicalInterface {
+ NumRootInports 0
+ NumRootOutports 0
+ ParameterArgumentNames ""
+ ComputedModelVersion "1.2"
+ NumModelReferences 0
+ NumTestPointedSignals 0
+ }
+ SavedCharacterEncoding "ISO-8859-1"
+ SaveDefaultBlockParams on
+ ScopeRefreshTime 0.035000
+ OverrideScopeRefreshTime on
+ DisableAllScopes off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ MinMaxOverflowArchiveMode "Overwrite"
+ MaxMDLFileLineLength 120
+ Created "Mon Jan 24 12:34:29 2011"
+ Creator "colin"
+ UpdateHistory "UpdateHistoryNever"
+ ModifiedByFormat "%"
+ LastModifiedBy "matthew"
+ ModifiedDateFormat "%"
+ LastModifiedDate "Thu May 15 15:26:50 2014"
+ RTWModifiedTimeStamp 322068405
+ ModelVersionFormat "1.%"
+ ConfigurationManager "none"
+ SampleTimeColors off
+ SampleTimeAnnotations off
+ LibraryLinkDisplay "none"
+ WideLines off
+ ShowLineDimensions off
+ ShowPortDataTypes off
+ ShowLoopsOnError on
+ IgnoreBidirectionalLines off
+ ShowStorageClass off
+ ShowTestPointIcons on
+ ShowSignalResolutionIcons on
+ ShowViewerIcons on
+ SortedOrder off
+ ExecutionContextIcon off
+ ShowLinearizationAnnotations on
+ BlockNameDataTip off
+ BlockParametersDataTip off
+ BlockDescriptionStringDataTip off
+ ToolBar on
+ StatusBar on
+ BrowserShowLibraryLinks off
+ BrowserLookUnderMasks off
+ SimulationMode "normal"
+ LinearizationMsg "none"
+ Profile off
+ ParamWorkspaceSource "MATLABWorkspace"
+ AccelSystemTargetFile "accel.tlc"
+ AccelTemplateMakefile "accel_default_tmf"
+ AccelMakeCommand "make_rtw"
+ TryForcingSFcnDF off
+ RecordCoverage off
+ CovPath "/"
+ CovSaveName "covdata"
+ CovMetricSettings "dw"
+ CovNameIncrementing off
+ CovHtmlReporting on
+ CovForceBlockReductionOff on
+ covSaveCumulativeToWorkspaceVar on
+ CovSaveSingleToWorkspaceVar on
+ CovCumulativeVarName "covCumulativeData"
+ CovCumulativeReport off
+ CovReportOnPause on
+ CovModelRefEnable "Off"
+ CovExternalEMLEnable off
+ ExtModeBatchMode off
+ ExtModeEnableFloating on
+ ExtModeTrigType "manual"
+ ExtModeTrigMode "normal"
+ ExtModeTrigPort "1"
+ ExtModeTrigElement "any"
+ ExtModeTrigDuration 1000
+ ExtModeTrigDurationFloating "auto"
+ ExtModeTrigHoldOff 0
+ ExtModeTrigDelay 0
+ ExtModeTrigDirection "rising"
+ ExtModeTrigLevel 0
+ ExtModeArchiveMode "off"
+ ExtModeAutoIncOneShot off
+ ExtModeIncDirWhenArm off
+ ExtModeAddSuffixToVar off
+ ExtModeWriteAllDataToWs off
+ ExtModeArmWhenConnect on
+ ExtModeSkipDownloadWhenConnect off
+ ExtModeLogAll on
+ ExtModeAutoUpdateStatusClock on
+ BufferReuse on
+ ShowModelReferenceBlockVersion off
+ ShowModelReferenceBlockIO off
+ Array {
+ Type "Handle"
+ Dimension 1
+ Simulink.ConfigSet {
+ $ObjectID 1
+ Version "1.10.0"
+ Array {
+ Type "Handle"
+ Dimension 8
+ Simulink.SolverCC {
+ $ObjectID 2
+ Version "1.10.0"
+ StartTime "0.0"
+ StopTime "10.0"
+ AbsTol "auto"
+ FixedStep "auto"
+ InitialStep "auto"
+ MaxNumMinSteps "-1"
+ MaxOrder 5
+ ZcThreshold "auto"
+ ConsecutiveZCsStepRelTol "10*128*eps"
+ MaxConsecutiveZCs "1000"
+ ExtrapolationOrder 4
+ NumberNewtonIterations 1
+ MaxStep "auto"
+ MinStep "auto"
+ MaxConsecutiveMinStep "1"
+ RelTol "1e-3"
+ SolverMode "Auto"
+ Solver "ode45"
+ SolverName "ode45"
+ SolverJacobianMethodControl "auto"
+ ShapePreserveControl "DisableAll"
+ ZeroCrossControl "UseLocalSettings"
+ ZeroCrossAlgorithm "Nonadaptive"
+ AlgebraicLoopSolver "TrustRegion"
+ SolverResetMethod "Fast"
+ PositivePriorityOrder off
+ AutoInsertRateTranBlk off
+ SampleTimeConstraint "Unconstrained"
+ InsertRTBMode "Whenever possible"
+ }
+ Simulink.DataIOCC {
+ $ObjectID 3
+ Version "1.10.0"
+ Decimation "1"
+ ExternalInput "[t, u]"
+ FinalStateName "xFinal"
+ InitialState "xInitial"
+ LimitDataPoints on
+ MaxDataPoints "1000"
+ LoadExternalInput off
+ LoadInitialState off
+ SaveFinalState off
+ SaveCompleteFinalSimState off
+ SaveFormat "Array"
+ SaveOutput on
+ SaveState off
+ SignalLogging on
+ DSMLogging on
+ InspectSignalLogs off
+ SaveTime on
+ ReturnWorkspaceOutputs off
+ StateSaveName "xout"
+ TimeSaveName "tout"
+ OutputSaveName "yout"
+ SignalLoggingName "logsout"
+ DSMLoggingName "dsmout"
+ OutputOption "RefineOutputTimes"
+ OutputTimes "[]"
+ ReturnWorkspaceOutputsName "out"
+ Refine "1"
+ }
+ Simulink.OptimizationCC {
+ $ObjectID 4
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 7
+ Cell "BooleansAsBitfields"
+ Cell "PassReuseOutputArgsAs"
+ Cell "PassReuseOutputArgsThreshold"
+ Cell "ZeroExternalMemoryAtStartup"
+ Cell "ZeroInternalMemoryAtStartup"
+ Cell "OptimizeModelRefInitCode"
+ Cell "NoFixptDivByZeroProtection"
+ PropName "DisabledProps"
+ }
+ BlockReduction on
+ BooleanDataType on
+ ConditionallyExecuteInputs on
+ InlineParams off
+ UseIntDivNetSlope off
+ InlineInvariantSignals off
+ OptimizeBlockIOStorage on
+ BufferReuse on
+ EnhancedBackFolding off
+ StrengthReduction off
+ EnforceIntegerDowncast on
+ ExpressionFolding on
+ BooleansAsBitfields off
+ BitfieldContainerType "uint_T"
+ EnableMemcpy on
+ MemcpyThreshold 64
+ PassReuseOutputArgsAs "Structure reference"
+ ExpressionDepthLimit 2147483647
+ FoldNonRolledExpr on
+ LocalBlockOutputs on
+ RollThreshold 5
+ SystemCodeInlineAuto off
+ StateBitsets off
+ DataBitsets off
+ UseTempVars off
+ ZeroExternalMemoryAtStartup on
+ ZeroInternalMemoryAtStartup on
+ InitFltsAndDblsToZero off
+ NoFixptDivByZeroProtection off
+ EfficientFloat2IntCast off
+ EfficientMapNaN2IntZero on
+ OptimizeModelRefInitCode off
+ LifeSpan "inf"
+ MaxStackSize "Inherit from target"
+ BufferReusableBoundary on
+ SimCompilerOptimization "Off"
+ AccelVerboseBuild off
+ }
+ Simulink.DebuggingCC {
+ $ObjectID 5
+ Version "1.10.0"
+ RTPrefix "error"
+ ConsistencyChecking "none"
+ ArrayBoundsChecking "none"
+ SignalInfNanChecking "none"
+ SignalRangeChecking "none"
+ ReadBeforeWriteMsg "UseLocalSettings"
+ WriteAfterWriteMsg "UseLocalSettings"
+ WriteAfterReadMsg "UseLocalSettings"
+ AlgebraicLoopMsg "warning"
+ ArtificialAlgebraicLoopMsg "warning"
+ SaveWithDisabledLinksMsg "warning"
+ SaveWithParameterizedLinksMsg "warning"
+ CheckSSInitialOutputMsg on
+ UnderspecifiedInitializationDetection "Classic"
+ MergeDetectMultiDrivingBlocksExec "none"
+ CheckExecutionContextPreStartOutputMsg off
+ CheckExecutionContextRuntimeOutputMsg off
+ SignalResolutionControl "UseLocalSettings"
+ BlockPriorityViolationMsg "warning"
+ MinStepSizeMsg "warning"
+ TimeAdjustmentMsg "none"
+ MaxConsecutiveZCsMsg "error"
+ SolverPrmCheckMsg "warning"
+ InheritedTsInSrcMsg "warning"
+ DiscreteInheritContinuousMsg "warning"
+ MultiTaskDSMMsg "error"
+ MultiTaskCondExecSysMsg "error"
+ MultiTaskRateTransMsg "error"
+ SingleTaskRateTransMsg "none"
+ TasksWithSamePriorityMsg "warning"
+ SigSpecEnsureSampleTimeMsg "warning"
+ CheckMatrixSingularityMsg "none"
+ IntegerOverflowMsg "warning"
+ Int32ToFloatConvMsg "warning"
+ ParameterDowncastMsg "error"
+ ParameterOverflowMsg "error"
+ ParameterUnderflowMsg "none"
+ ParameterPrecisionLossMsg "warning"
+ ParameterTunabilityLossMsg "warning"
+ FixptConstUnderflowMsg "none"
+ FixptConstOverflowMsg "none"
+ FixptConstPrecisionLossMsg "none"
+ UnderSpecifiedDataTypeMsg "none"
+ UnnecessaryDatatypeConvMsg "none"
+ VectorMatrixConversionMsg "none"
+ InvalidFcnCallConnMsg "error"
+ FcnCallInpInsideContextMsg "Use local settings"
+ SignalLabelMismatchMsg "none"
+ UnconnectedInputMsg "warning"
+ UnconnectedOutputMsg "warning"
+ UnconnectedLineMsg "warning"
+ SFcnCompatibilityMsg "none"
+ UniqueDataStoreMsg "none"
+ BusObjectLabelMismatch "warning"
+ RootOutportRequireBusObject "warning"
+ AssertControl "UseLocalSettings"
+ EnableOverflowDetection off
+ ModelReferenceIOMsg "none"
+ ModelReferenceVersionMismatchMessage "none"
+ ModelReferenceIOMismatchMessage "none"
+ ModelReferenceCSMismatchMessage "none"
+ UnknownTsInhSupMsg "warning"
+ ModelReferenceDataLoggingMessage "warning"
+ ModelReferenceSymbolNameMessage "warning"
+ ModelReferenceExtraNoncontSigs "error"
+ StateNameClashWarn "warning"
+ SimStateInterfaceChecksumMismatchMsg "warning"
+ StrictBusMsg "ErrorLevel1"
+ BusNameAdapt "WarnAndRepair"
+ NonBusSignalsTreatedAsBus "none"
+ LoggingUnavailableSignals "error"
+ BlockIODiagnostic "none"
+ }
+ Simulink.HardwareCC {
+ $ObjectID 6
+ Version "1.10.0"
+ ProdBitPerChar 8
+ ProdBitPerShort 16
+ ProdBitPerInt 32
+ ProdBitPerLong 32
+ ProdIntDivRoundTo "Undefined"
+ ProdEndianess "Unspecified"
+ ProdWordSize 32
+ ProdShiftRightIntArith on
+ ProdHWDeviceType "32-bit Generic"
+ TargetBitPerChar 8
+ TargetBitPerShort 16
+ TargetBitPerInt 32
+ TargetBitPerLong 32
+ TargetShiftRightIntArith on
+ TargetIntDivRoundTo "Undefined"
+ TargetEndianess "Unspecified"
+ TargetWordSize 32
+ TargetTypeEmulationWarnSuppressLevel 0
+ TargetPreprocMaxBitsSint 32
+ TargetPreprocMaxBitsUint 32
+ TargetHWDeviceType "Specified"
+ TargetUnknown off
+ ProdEqTarget on
+ }
+ Simulink.ModelReferenceCC {
+ $ObjectID 7
+ Version "1.10.0"
+ UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+ CheckModelReferenceTargetMessage "error"
+ EnableParallelModelReferenceBuilds off
+ ParallelModelReferenceMATLABWorkerInit "None"
+ ModelReferenceNumInstancesAllowed "Multi"
+ PropagateVarSize "Infer from blocks in model"
+ ModelReferencePassRootInputsByReference on
+ ModelReferenceMinAlgLoopOccurrences off
+ PropagateSignalLabelsOutOfModel off
+ SupportModelReferenceSimTargetCustomCode off
+ }
+ Simulink.SFSimCC {
+ $ObjectID 8
+ Version "1.10.0"
+ SFSimEnableDebug on
+ SFSimOverflowDetection on
+ SFSimEcho on
+ SimBlas on
+ SimCtrlC on
+ SimExtrinsic on
+ SimIntegrity on
+ SimUseLocalCustomCode off
+ SimBuildMode "sf_incremental_build"
+ }
+ Simulink.RTWCC {
+ $BackupClass "Simulink.RTWCC"
+ $ObjectID 9
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 6
+ Cell "IncludeHyperlinkInReport"
+ Cell "GenerateTraceInfo"
+ Cell "GenerateTraceReport"
+ Cell "GenerateTraceReportSl"
+ Cell "GenerateTraceReportSf"
+ Cell "GenerateTraceReportEml"
+ PropName "DisabledProps"
+ }
+ SystemTargetFile "grt.tlc"
+ GenCodeOnly off
+ MakeCommand "make_rtw"
+ GenerateMakefile on
+ TemplateMakefile "grt_default_tmf"
+ GenerateReport off
+ SaveLog off
+ RTWVerbose on
+ RetainRTWFile off
+ ProfileTLC off
+ TLCDebug off
+ TLCCoverage off
+ TLCAssert off
+ ProcessScriptMode "Default"
+ ConfigurationMode "Optimized"
+ ConfigAtBuild off
+ RTWUseLocalCustomCode off
+ RTWUseSimCustomCode off
+ IncludeHyperlinkInReport off
+ LaunchReport off
+ TargetLang "C"
+ IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+ IncludeERTFirstTime off
+ GenerateTraceInfo off
+ GenerateTraceReport off
+ GenerateTraceReportSl off
+ GenerateTraceReportSf off
+ GenerateTraceReportEml off
+ GenerateCodeInfo off
+ RTWCompilerOptimization "Off"
+ CheckMdlBeforeBuild "Off"
+ CustomRebuildMode "OnUpdate"
+ Array {
+ Type "Handle"
+ Dimension 2
+ Simulink.CodeAppCC {
+ $ObjectID 10
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 19
+ Cell "IgnoreCustomStorageClasses"
+ Cell "IgnoreTestpoints"
+ Cell "InsertBlockDesc"
+ Cell "SFDataObjDesc"
+ Cell "SimulinkDataObjDesc"
+ Cell "DefineNamingRule"
+ Cell "SignalNamingRule"
+ Cell "ParamNamingRule"
+ Cell "InlinedPrmAccess"
+ Cell "CustomSymbolStr"
+ Cell "CustomSymbolStrGlobalVar"
+ Cell "CustomSymbolStrType"
+ Cell "CustomSymbolStrField"
+ Cell "CustomSymbolStrFcn"
+ Cell "CustomSymbolStrFcnArg"
+ Cell "CustomSymbolStrBlkIO"
+ Cell "CustomSymbolStrTmpVar"
+ Cell "CustomSymbolStrMacro"
+ Cell "ReqsInCode"
+ PropName "DisabledProps"
+ }
+ ForceParamTrailComments off
+ GenerateComments on
+ IgnoreCustomStorageClasses on
+ IgnoreTestpoints off
+ IncHierarchyInIds off
+ MaxIdLength 31
+ PreserveName off
+ PreserveNameWithParent off
+ ShowEliminatedStatement off
+ IncAutoGenComments off
+ SimulinkDataObjDesc off
+ SFDataObjDesc off
+ IncDataTypeInIds off
+ MangleLength 1
+ CustomSymbolStrGlobalVar "$R$N$M"
+ CustomSymbolStrType "$N$R$M"
+ CustomSymbolStrField "$N$M"
+ CustomSymbolStrFcn "$R$N$M$F"
+ CustomSymbolStrFcnArg "rt$I$N$M"
+ CustomSymbolStrBlkIO "rtb_$N$M"
+ CustomSymbolStrTmpVar "$N$M"
+ CustomSymbolStrMacro "$R$N$M"
+ DefineNamingRule "None"
+ ParamNamingRule "None"
+ SignalNamingRule "None"
+ InsertBlockDesc off
+ SimulinkBlockComments on
+ EnableCustomComments off
+ InlinedPrmAccess "Literals"
+ ReqsInCode off
+ UseSimReservedNames off
+ }
+ Simulink.GRTTargetCC {
+ $BackupClass "Simulink.TargetCC"
+ $ObjectID 11
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 17
+ Cell "GeneratePreprocessorConditionals"
+ Cell "IncludeMdlTerminateFcn"
+ Cell "CombineOutputUpdateFcns"
+ Cell "SuppressErrorStatus"
+ Cell "ERTCustomFileBanners"
+ Cell "GenerateSampleERTMain"
+ Cell "GenerateTestInterfaces"
+ Cell "ModelStepFunctionPrototypeControlCompliant"
+ Cell "CPPClassGenCompliant"
+ Cell "MultiInstanceERTCode"
+ Cell "PurelyIntegerCode"
+ Cell "SupportNonFinite"
+ Cell "SupportComplex"
+ Cell "SupportAbsoluteTime"
+ Cell "SupportContinuousTime"
+ Cell "SupportNonInlinedSFcns"
+ Cell "PortableWordSizes"
+ PropName "DisabledProps"
+ }
+ TargetFcnLib "ansi_tfl_table_tmw.mat"
+ TargetLibSuffix ""
+ TargetPreCompLibLocation ""
+ TargetFunctionLibrary "ANSI_C"
+ UtilityFuncGeneration "Auto"
+ ERTMultiwordTypeDef "System defined"
+ ERTCodeCoverageTool "None"
+ ERTMultiwordLength 256
+ MultiwordLength 2048
+ GenerateFullHeader on
+ GenerateSampleERTMain off
+ GenerateTestInterfaces off
+ IsPILTarget off
+ ModelReferenceCompliant on
+ ParMdlRefBuildCompliant on
+ CompOptLevelCompliant on
+ IncludeMdlTerminateFcn on
+ GeneratePreprocessorConditionals "Disable all"
+ CombineOutputUpdateFcns off
+ SuppressErrorStatus off
+ ERTFirstTimeCompliant off
+ IncludeFileDelimiter "Auto"
+ ERTCustomFileBanners off
+ SupportAbsoluteTime on
+ LogVarNameModifier "rt_"
+ MatFileLogging on
+ MultiInstanceERTCode off
+ SupportNonFinite on
+ SupportComplex on
+ PurelyIntegerCode off
+ SupportContinuousTime on
+ SupportNonInlinedSFcns on
+ SupportVariableSizeSignals off
+ EnableShiftOperators on
+ ParenthesesLevel "Nominal"
+ PortableWordSizes off
+ ModelStepFunctionPrototypeControlCompliant off
+ CPPClassGenCompliant off
+ AutosarCompliant off
+ UseMalloc off
+ ExtMode off
+ ExtModeStaticAlloc off
+ ExtModeTesting off
+ ExtModeStaticAllocSize 1000000
+ ExtModeTransport 0
+ ExtModeMexFile "ext_comm"
+ ExtModeIntrfLevel "Level1"
+ RTWCAPISignals off
+ RTWCAPIParams off
+ RTWCAPIStates off
+ GenerateASAP2 off
+ }
+ PropName "Components"
+ }
+ }
+ PropName "Components"
+ }
+ Name "Configuration"
+ CurrentDlgPage "Solver"
+ ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] "
+ }
+ PropName "ConfigurationSets"
+ }
+ Simulink.ConfigSet {
+ $PropName "ActiveConfigurationSet"
+ $ObjectID 1
+ }
+ BlockDefaults {
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ NamePlacement "normal"
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ ShowName on
+ BlockRotation 0
+ BlockMirror off
+ }
+ AnnotationDefaults {
+ HorizontalAlignment "center"
+ VerticalAlignment "middle"
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ UseDisplayTextAsClickCallback off
+ }
+ LineDefaults {
+ FontName "Helvetica"
+ FontSize 9
+ FontWeight "normal"
+ FontAngle "normal"
+ }
+ BlockParameterDefaults {
+ Block {
+ BlockType Demux
+ Outputs "4"
+ DisplayOption "none"
+ BusSelectionMode off
+ }
+ Block {
+ BlockType Inport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ LatchByDelayingOutsideSignal off
+ LatchInputForFeedbackSignals off
+ Interpolate on
+ }
+ Block {
+ BlockType Outport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ SourceOfInitialOutputValue "Dialog"
+ OutputWhenDisabled "held"
+ InitialOutput "[]"
+ }
+ Block {
+ BlockType "S-Function"
+ FunctionName "system"
+ SFunctionModules "''"
+ PortCounts "[]"
+ SFunctionDeploymentMode off
+ }
+ Block {
+ BlockType SubSystem
+ ShowPortLabels "FromPortIcon"
+ Permissions "ReadWrite"
+ PermitHierarchicalResolution "All"
+ TreatAsAtomicUnit off
+ CheckFcnCallInpInsideContextMsg off
+ SystemSampleTime "-1"
+ RTWFcnNameOpts "Auto"
+ RTWFileNameOpts "Auto"
+ RTWMemSecFuncInitTerm "Inherit from model"
+ RTWMemSecFuncExecute "Inherit from model"
+ RTWMemSecDataConstants "Inherit from model"
+ RTWMemSecDataInternal "Inherit from model"
+ RTWMemSecDataParameters "Inherit from model"
+ SimViewingDevice off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ }
+ Block {
+ BlockType Terminator
+ }
+ }
+ System {
+ Name "Jin_Parnas_Example"
+ Location [1009, 551, 1589, 811]
+ Open on
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ ReportName "simulink-default.rpt"
+ SIDHighWatermark 6
+ Block {
+ BlockType SubSystem
+ Name "jin_ex"
+ SID 1
+ Ports [2, 1]
+ Position [80, 54, 245, 121]
+ LibraryVersion "1.12"
+ UserDataPersistent on
+ UserData "DataTag0"
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'x');port_label('input',2,'y');port_label('output',1,'output');text(0.5,"
+ " 0.9, 'Tabular Expression', 'horizontalAlignment', 'center')\ncolor('green')\ntext(0.5, 0.1, 'Checked', 'horizon"
+ "talAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "jin_ex"
+ Location [433, 447, 931, 747]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 4
+ Position [35, 38, 65, 52]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 5
+ Position [35, 38, 65, 52]
+ Port "2"
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType SubSystem
+ Name "code"
+ SID 3
+ Ports [2, 1]
+ Position [250, 49, 320, 96]
+ LibraryVersion "1.31"
+ PermitHierarchicalResolution "ExplicitOnly"
+ TreatAsAtomicUnit on
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskType "Stateflow"
+ MaskDescription "Embedded MATLAB block"
+ MaskDisplay "disp('jin_ex');"
+ MaskSelfModifiable on
+ MaskIconFrame on
+ MaskIconOpaque off
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "autoscale"
+ System {
+ Name "code"
+ Location [257, 457, 812, 717]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ SIDHighWatermark 19
+ SIDPrevWatermark 13
+ Block {
+ BlockType Inport
+ Name "x"
+ SID 1
+ Position [20, 101, 40, 119]
+ IconDisplay "Port number"
+ OutDataType "sfix(16)"
+ OutScaling "2^0"
+ }
+ Block {
+ BlockType Inport
+ Name "y"
+ SID 18
+ Position [20, 136, 40, 154]
+ Port "2"
+ IconDisplay "Port number"
+ }
+ Block {
+ BlockType Demux
+ Name " Demux "
+ SID 15
+ Ports [1, 1]
+ Position [270, 160, 320, 200]
+ Outputs "1"
+ }
+ Block {
+ BlockType "S-Function"
+ Name " SFunction "
+ SID 14
+ Tag "Stateflow S-Function Jin_Parnas_Example 2"
+ Ports [2, 2]
+ Position [180, 100, 230, 160]
+ FunctionName "sf_sfun"
+ PortCounts "[2 2]"
+ EnableBusSupport off
+ Port {
+ PortNumber 2
+ Name "output"
+ RTWStorageClass "Auto"
+ DataLoggingNameMode "SignalName"
+ }
+ }
+ Block {
+ BlockType Terminator
+ Name " Terminator "
+ SID 17
+ Position [460, 171, 480, 189]
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 19
+ Position [460, 101, 480, 119]
+ IconDisplay "Port number"
+ }
+ Line {
+ SrcBlock " SFunction "
+ SrcPort 1
+ DstBlock " Demux "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 1
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock " SFunction "
+ DstPort 2
+ }
+ Line {
+ Name "output"
+ Labels [0, 0]
+ SrcBlock " SFunction "
+ SrcPort 2
+ DstBlock "output"
+ DstPort 1
+ }
+ Line {
+ SrcBlock " Demux "
+ SrcPort 1
+ DstBlock " Terminator "
+ DstPort 1
+ }
+ }
+ }
+ Block {
+ BlockType Outport
+ Name "output"
+ SID 6
+ Position [35, 53, 65, 67]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ Line {
+ SrcBlock "x"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 1
+ }
+ Line {
+ SrcBlock "y"
+ SrcPort 1
+ DstBlock "code"
+ DstPort 2
+ }
+ Line {
+ SrcBlock "code"
+ SrcPort 1
+ DstBlock "output"
+ DstPort 1
+ }
+ }
+ }
+ Annotation {
+ Name "Table1 from Jin and Parnas' paper \"Defining the meaning\nof tabular mathematical expressions\"\n\n"
+ "2 Dimensional normal function table of 2 variables\n\nprovable in PVS and CVC3"
+ Position [413, 93]
+ }
+ }
+}
+MatData {
+ NumRecords 1
+ DataRecord {
+ Tag DataTag0
+ Data " %)30 . > 8 ( $0 ! $ ! !-0T]3 0 $ $1A=&$. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ! !0 X #@,@ !@ @ ) 4"
+ " ( 0 + R ! ( \"P,@ %)30 . $#( 8 ( @ % \" $ ! 0 "
+ " % 0 !0 $ % 34-/4P . R#$ 8 ( $0 ! $ ! !-0T]3 0 T !&:6QE5W)A<'!E<"
+ "E]? #@ (@Q & \" $ !0 @ !9 0 $ #@ (@) & \" D !0 @ "
+ " !8\"0 0 $ @ %@) \" + -@! X @ . ( !@$ \"X\" 6 D 1W)I9# 0V5L;', 0V5L;#$"
+ " 8V]N9%]T97AT &-E;&Q?:6YD97@ <&%R96YT7V=R:60 8V5L;', 1W)I9 !P87)E;G1?8V5L; !S<&QI=%]P8@!N=6U?8V5L;', 9W)I9%]I;F1E>"
+ " !R1W)I9 !N97=?8V5L;%]P8@!D96QE=&5?8V5L;%]P8@!P8E]F;&%G $-E;&P '1?;V9F 0 # 0 \"H A 0 \"L B 0 \"P 7 0 \"T "
+ " ! , ! +@ \"$ ! +P \"( ! , !< ! ,0 $ P $ R (0 $ S "
+ " (@ $ T %P $ U 0 # 0 #8 A 0 #< B 0 #@ 7 0 #D !"
+ " , ! .@ \"$ ! .P \"( ! / !< ! /0 $ P $ ^ (0 $ _ ("
+ "@ $ ! %P $ !! 0 # 0 $( A 0 $, B 0 $0 7 0 $4 ! "
+ " , ! 1@ \"$ ! 1P \"( ! 2 !< ! 20 "
+ " "
+ " #@ . , 8 ( ! % \" "
+ "$ # 0 0 , >#PP X X !@ @ & 4 ( 0 $ ! D ( "
+ "\\#\\. , 8 ( ! % \" $ $ 0 0 0 >#T], X X !@ @ & 4"
+ " ( 0 $ ! D ( $ . 2 8 ( #0 % \" 8 ! 0 "
+ " & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ ! D "
+ " ( \\#\\. , 8 ( ! % \" $ # 0 0 , >#XP X X !@ @ "
+ " & 4 ( 0 $ ! D ( \"$ . 2 8 ( #0 % \" 8 "
+ " ! 0 & & -T\" 0 $ % 0 X X !@ @ & 4 ( 0 $ "
+ " ! D ( \\#\\. 4 8 ( #0 % \" @ ! 0 & ( "
+ " -T\" 0 , $ !@ < \" #@ #@ & \" 8 !0 @ ! 0 $ \"0 "
+ "@ (0 X X !@ @ & 4 ( 0 $ ! D ( \\#\\. 2 "
+ "8 ( #0 % \" 8 ! 0 & & -T\" 0 $ \" P X !( !@ "
+ " @ - 4 ( !@ $ ! 8 8 W0( ! 0 4 ! #@ #@ & \" "
+ "8 !0 @ ! 0 $ \"0 @ #P/PX !( !@ @ - 4 ( !@ $"
+ " ! 8 8 W0( ! 0 0 \" #@ # & \" 0 !0 @ ! P $"
+ " $ # 'D\\, . . 8 ( !@ % \" $ ! 0 ) \" / _#@ #"
+ " & \" 0 !0 @ ! ! $ $ $ 'D]/3 . . 8 ( !@ % \" "
+ "$ ! 0 ) \" ! #@ $@ & \" T !0 @ & 0 $ !@ !"
+ "@ #= @ $ ! \"0 $ . . 8 ( !@ % \" $ ! 0 ) \" "
+ " / _#@ #@ & \" 8 !0 @ ! 0 $ \"0 @ #P/PX X !@ "
+ " @ & 4 ( 0 $ ! D ( \\#\\. , 8 ( ! % \" "
+ " $ # 0 0 , >3XP X X !@ @ & 4 ( 0 $ ! D ( "
+ " \"$ . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ) 0 "
+ " X X !@ @ & 4 ( 0 $ ! D ( \\#\\. . 8 ( !@ "
+ " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 "
+ " $ \"0 @ #P/PX !0 !@ @ - 4 ( \" $ ! 8 @ "
+ "W0( ! P @ * \"P ( . . 8 ( !@ % \" $ ! 0 ) \" "
+ " A #@ #@ & \" 8 !0 @ ! 0 $ \"0 @ 0 X !( !@ "
+ " @ - 4 ( !@ $ ! 8 8 W0( ! 0 ( # #@ $@ & \" "
+ " T !0 @ & 0 $ !@ !@ #= @ $ ! \"0 $ . . 8 ( !@ "
+ " % \" $ ! 0 ) \" / _#@ #@ & \" 8 !0 @ ! 0 "
+ " $ \"0 @ #P/PX X !@ @ & 4 ( 0 $ ! D ( "
+ " \\#\\. 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ ( @ "
+ " X X !@ @ $ 4 ( 0 < ! ! ' >%XR+7E>,@ . 2 8 ( !@ "
+ " % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ @ - "
+ " 4 ( !@ $ ! 8 8 W0( ! 0 0 \" #@ $@ & \" T !0 "
+ " @ & 0 $ !@ !@ #= @ $ ! \"@ ( . , 8 ( ! % \" "
+ " $ # 0 0 , >\"MY X !( !@ @ & 4 ( 0 , ! D 8 "
+ " \\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ "
+ " $ ! ! ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 "
+ " $ + @ X X !@ @ $ 4 ( 0 < ! ! ' >%XR*WE>,@ . 2 "
+ "8 ( !@ % \" $ # 0 ) & / _ \\#\\ #P/PX !( !@ "
+ " @ - 4 ( !@ $ ! 8 8 W0( ! 0 8 \" #@ $@ & \" "
+ " T !0 @ & 0 $ !@ !@ #= @ $ ! \" ( . . 8 ( ! "
+ " % \" $ ' 0 0 !P 'A>,BMY7C( #@ $@ & \" 8 !0 @ ! P "
+ "$ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" 8 ! 0 "
+ " & & -T\" 0 $ & @ X !( !@ @ - 4 ( !@ $ ! "
+ " 8 8 W0( ! 0 H \" #@ #@ & \" 0 !0 @ ! !P $ $ "
+ " < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 \\#\\ #P/"
+ "P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $ ! !@ "
+ "( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $ + @ "
+ "X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 !0 @"
+ " ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 % \" "
+ " 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4 ( !@ "
+ "$ ! 8 8 W0( ! 0 @ \" #@ #@ & \" 0 !0 @ ! !P "
+ "$ $ < !X7C(M>5XR X !( !@ @ & 4 ( 0 , ! D 8 "
+ "\\#\\ #P/P / _#@ $@ & \" T !0 @ & 0 $ !@ !@ #= @ $"
+ " ! !P ( . 2 8 ( #0 % \" 8 ! 0 & & -T\" 0 $"
+ " * @ X P !@ @ $ 4 ( 0 , ! ! P!X*WD #@ $@ & \" 8 "
+ " !0 @ ! P $ \"0 !@ #P/P / _ \\#\\. 2 8 ( #0 "
+ " % \" 8 ! 0 & & -T\" 0 $ ' @ X !( !@ @ - 4"
+ " ( !@ $ ! 8 8 W0( ! 0 L \" #@ #@ & \" 0 !0 @"
+ " ! !P $ $ < !X7C(K>5XR X !( !@ @ & 4 ( 0 , ! D "
+ " 8 \\#\\ #P/P / _#@ &@ & \" T !0 @ . 0 $ !@ #@ "
+ " #= @ $ ) P P - #@ \\ 0 $0 !( 3 ! X !( !@ @ - 4 "
+ " ( !@ $ ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ "
+ " & 0 $ !@ !@ #= @ $ ! \"0 $ . 2 8 ( #0 % \" 8 "
+ " ! 0 & & -T\" 0 $ \" P X !( !@ @ - 4 ( !@ $ "
+ " ! 8 8 W0( ! 0 4 ! #@ $@ & \" T !0 @ & 0 $ "
+ " !@ !@ #= @ $ ! \"0 $ . . 8 ( ! % \" $ & 0 "
+ "0 !@ &II;E]E> #@ # & \" 0 !0 @ ! P $ $ # '@L>0 . F $ 8 ("
+ " @ % \" $ ! 0 % 0 !P $ C '0 8V5L;%]I;F1E> '!A'1?> "
+ " &-O;F1I=&EO;E]T97AT7WD !C;VYD:71I;VY?=&5X=%]O9F9S970 9W)I9%]P=7-H7W=I9'1H X P !@ @ & "
+ " 4 ( ! D #@ # & \" 8 !0 @ $ "
+ " \"0 . , 8 ( !@ % \" 0 ) X X !@ @ & "
+ " 4 ( 0 $ ! D ( . , 8 ( !@ % \" "
+ " 0 ) X X !@ @ & 4 ( 0 $ ! D ( . . "
+ " 8 ( !@ % \" $ ! 0 ) \" #@ # & \" 8 !"
+ "0 @ $ \"0 . . 8 ( !@ % \" $ ! 0 ) \""
+ " #@ # & \" 8 !0 @ $ \"0 . . 8 ( !"
+ "@ % \" $ ! 0 ) \" &E #@ #@ & \" 8 !0 @ ! "
+ " 0 $ \"0 @ !.0 X X !@ @ & 4 ( 0 $ ! D ( "
+ " )$ . . 8 ( !@ % \" $ ! 0 ) \" \"1 #@ #@ & "
+ "\" 8 !0 @ ! 0 $ \"0 @ T0 X X !@ @ & 4 ( "
+ " 0 $ ! D ( /D . ^ 8 ( @ % \" $ ! 0 % 0 !"
+ "@ $ 2 0V5L;', 1W)I9#$ 1W)I9#( #@ # & \" 8 !0 @ $ \""
+ "0 . , 8 ( !@ % \" 0 ) X P !@ @ & "
+ " 4 ( ! D #@ ) ! & \" ( !0 @ ! 0 $ !0 "
+ "$ P ! / $-E;&PQ $-E;&PR ')E0)\n output = x^2-y^2;\n end\nelseif(y==0)\n if(x<0)\n"
+ " output = x+y;\n elseif(x==0)\n output = x^2-y^2;\n elseif(x>0)\n output = x+y;\n end\nelseif(y>0)\n"
+ " if(x<0)\n output = x^2+y^2;\n elseif(x==0)\n output = x+y;\n elseif(x>0)\n output = x^2+y^2;\n end"
+ "\nend\n"
+ editorLayout "100 M4x1[205 227 1080 733]"
+ }
+ }
+ junction {
+ id 4
+ position [23.5747 49.5747 7]
+ chart 2
+ linkNode [2 0 0]
+ subviewer 2
+ ssIdNumber 3
+ type CONNECTIVE_JUNCTION
+ }
+ transition {
+ id 5
+ labelString "{eML_blk_kernel();}"
+ labelPosition [32.125 19.875 102.544 14.964]
+ fontSize 12
+ src {
+ intersection [0 0 1 0 23.5747 14.625 0 0]
+ }
+ dst {
+ id 4
+ intersection [7 0 -1 -1 23.5747 42.5747 0 0]
+ }
+ midPoint [23.5747 24.9468]
+ chart 2
+ linkNode [2 0 0]
+ dataLimits [23.575 23.575 14.625 34.575]
+ subviewer 2
+ drawStyle SMART
+ executionOrder 1
+ ssIdNumber 2
+ }
+ data {
+ id 6
+ ssIdNumber 4
+ name "x"
+ linkNode [2 0 7]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 7
+ ssIdNumber 5
+ name "y"
+ linkNode [2 6 8]
+ scope INPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ data {
+ id 8
+ ssIdNumber 6
+ name "output"
+ linkNode [2 7 0]
+ scope OUTPUT_DATA
+ machine 1
+ props {
+ array {
+ size "-1"
+ }
+ type {
+ method SF_INHERITED_TYPE
+ primitive SF_DOUBLE_TYPE
+ isSigned 1
+ wordLength "16"
+ }
+ complexity SF_COMPLEX_INHERITED
+ frame SF_FRAME_NO
+ }
+ dataType "Inherit: Same as Simulink"
+ }
+ instance {
+ id 9
+ name "jin_ex/code"
+ machine 1
+ chart 2
+ }
+ target {
+ id 10
+ name "sfun"
+ description "Default Simulink S-Function Target."
+ machine 1
+ linkNode [1 0 0]
+ }
+}
diff --git a/TTdiag.m b/TTdiag.m
index 10c27e6a2be4791fe82e053df2fc7d0cf409e38e..f0e1998fa8c1d32f58ff3259701be23d8f4a0c3a 100644
--- a/TTdiag.m
+++ b/TTdiag.m
@@ -54,7 +54,7 @@ switch Action,
end
if ~data.valid
errordlg(...
- DAStudio.message('Block Data has been corputed'),...
+ DAStudio.message('Block Data has been corrupted'),...
'Error', 'modal');
return
end
diff --git a/TableLibrary.mdl b/TableLibrary.mdl
index 810af9743e135e8c77bce722864c7e9a2091a678..fcfcd8302c3361fe35652df0f22ba54905ecf0c4 100644
--- a/TableLibrary.mdl
+++ b/TableLibrary.mdl
@@ -1,679 +1,1000 @@
-Library {
- Name "TableLibrary"
- Version 7.5
- MdlSubVersion 0
- SavedCharacterEncoding "UTF-8"
- LibraryType "BlockLibrary"
- SaveDefaultBlockParams on
- ScopeRefreshTime 0.035000
- OverrideScopeRefreshTime on
- DisableAllScopes off
- MaxMDLFileLineLength 120
- Created "Thu Apr 8 11:30:49 2010"
- Creator "elesc"
- UpdateHistory "UpdateHistoryNever"
- ModifiedByFormat "%"
- LastModifiedBy "colin"
- ModifiedDateFormat "%"
- LastModifiedDate "Tue Sep 21 13:08:03 2010"
- RTWModifiedTimeStamp 206975269
- ModelVersionFormat "1.%"
- ConfigurationManager "None"
- SampleTimeColors off
- SampleTimeAnnotations off
- LibraryLinkDisplay "none"
- WideLines off
- ShowLineDimensions off
- ShowPortDataTypes off
- ShowLoopsOnError on
- IgnoreBidirectionalLines off
- ShowStorageClass off
- ShowTestPointIcons on
- ShowSignalResolutionIcons on
- ShowViewerIcons on
- SortedOrder off
- ExecutionContextIcon off
- ShowLinearizationAnnotations on
- BlockNameDataTip off
- BlockParametersDataTip off
- BlockDescriptionStringDataTip off
- ToolBar on
- StatusBar on
- BrowserShowLibraryLinks off
- BrowserLookUnderMasks off
- SimulationMode "normal"
- LinearizationMsg "none"
- Profile off
- ParamWorkspaceSource "MATLABWorkspace"
- RecordCoverage off
- CovSaveName "covdata"
- CovMetricSettings "dw"
- CovNameIncrementing off
- CovHtmlReporting on
- CovForceBlockReductionOff on
- covSaveCumulativeToWorkspaceVar on
- CovSaveSingleToWorkspaceVar on
- CovCumulativeReport off
- CovReportOnPause on
- CovModelRefEnable "Off"
- CovExternalEMLEnable off
- ExtModeBatchMode off
- ExtModeEnableFloating on
- ExtModeTrigType "manual"
- ExtModeTrigMode "normal"
- ExtModeTrigPort "1"
- ExtModeTrigElement "any"
- ExtModeTrigDuration 1000
- ExtModeTrigDurationFloating "auto"
- ExtModeTrigHoldOff 0
- ExtModeTrigDelay 0
- ExtModeTrigDirection "rising"
- ExtModeTrigLevel 0
- ExtModeArchiveMode "off"
- ExtModeAutoIncOneShot off
- ExtModeIncDirWhenArm off
- ExtModeAddSuffixToVar off
- ExtModeWriteAllDataToWs off
- ExtModeArmWhenConnect on
- ExtModeSkipDownloadWhenConnect off
- ExtModeLogAll on
- ExtModeAutoUpdateStatusClock on
- ShowModelReferenceBlockVersion off
- ShowModelReferenceBlockIO off
- Array {
- Type "Handle"
- Dimension 1
- Simulink.ConfigSet {
- $ObjectID 1
- Version "1.10.0"
- Array {
- Type "Handle"
- Dimension 8
- Simulink.SolverCC {
- $ObjectID 2
- Version "1.10.0"
- StartTime "0.0"
- StopTime "10.0"
- AbsTol "auto"
- FixedStep "auto"
- InitialStep "auto"
- MaxNumMinSteps "-1"
- MaxOrder 5
- ZcThreshold "auto"
- ConsecutiveZCsStepRelTol "10*128*eps"
- MaxConsecutiveZCs "1000"
- ExtrapolationOrder 4
- NumberNewtonIterations 1
- MaxStep "auto"
- MinStep "auto"
- MaxConsecutiveMinStep "1"
- RelTol "1e-3"
- SolverMode "Auto"
- Solver "ode45"
- SolverName "ode45"
- SolverJacobianMethodControl "auto"
- ShapePreserveControl "DisableAll"
- ZeroCrossControl "UseLocalSettings"
- ZeroCrossAlgorithm "Nonadaptive"
- AlgebraicLoopSolver "TrustRegion"
- SolverResetMethod "Fast"
- PositivePriorityOrder off
- AutoInsertRateTranBlk off
- SampleTimeConstraint "Unconstrained"
- InsertRTBMode "Whenever possible"
- }
- Simulink.DataIOCC {
- $ObjectID 3
- Version "1.10.0"
- Decimation "1"
- ExternalInput "[t, u]"
- FinalStateName "xFinal"
- InitialState "xInitial"
- LimitDataPoints on
- MaxDataPoints "1000"
- LoadExternalInput off
- LoadInitialState off
- SaveFinalState off
- SaveCompleteFinalSimState off
- SaveFormat "Array"
- SaveOutput on
- SaveState off
- SignalLogging on
- DSMLogging on
- InspectSignalLogs off
- SaveTime on
- ReturnWorkspaceOutputs off
- StateSaveName "xout"
- TimeSaveName "tout"
- OutputSaveName "yout"
- SignalLoggingName "logsout"
- DSMLoggingName "dsmout"
- OutputOption "RefineOutputTimes"
- OutputTimes "[]"
- ReturnWorkspaceOutputsName "out"
- Refine "1"
- }
- Simulink.OptimizationCC {
- $ObjectID 4
- Version "1.10.0"
- Array {
- Type "Cell"
- Dimension 7
- Cell "BooleansAsBitfields"
- Cell "PassReuseOutputArgsAs"
- Cell "PassReuseOutputArgsThreshold"
- Cell "ZeroExternalMemoryAtStartup"
- Cell "ZeroInternalMemoryAtStartup"
- Cell "OptimizeModelRefInitCode"
- Cell "NoFixptDivByZeroProtection"
- PropName "DisabledProps"
- }
- BlockReduction on
- BooleanDataType on
- ConditionallyExecuteInputs on
- InlineParams off
- UseIntDivNetSlope off
- InlineInvariantSignals off
- OptimizeBlockIOStorage on
- BufferReuse on
- EnhancedBackFolding off
- StrengthReduction off
- EnforceIntegerDowncast on
- ExpressionFolding on
- BooleansAsBitfields off
- BitfieldContainerType "uint_T"
- EnableMemcpy on
- MemcpyThreshold 64
- PassReuseOutputArgsAs "Structure reference"
- ExpressionDepthLimit 2147483647
- FoldNonRolledExpr on
- LocalBlockOutputs on
- RollThreshold 5
- SystemCodeInlineAuto off
- StateBitsets off
- DataBitsets off
- UseTempVars off
- ZeroExternalMemoryAtStartup on
- ZeroInternalMemoryAtStartup on
- InitFltsAndDblsToZero off
- NoFixptDivByZeroProtection off
- EfficientFloat2IntCast off
- EfficientMapNaN2IntZero on
- OptimizeModelRefInitCode off
- LifeSpan "inf"
- MaxStackSize "Inherit from target"
- BufferReusableBoundary on
- SimCompilerOptimization "Off"
- AccelVerboseBuild off
- }
- Simulink.DebuggingCC {
- $ObjectID 5
- Version "1.10.0"
- RTPrefix "error"
- ConsistencyChecking "none"
- ArrayBoundsChecking "none"
- SignalInfNanChecking "none"
- SignalRangeChecking "none"
- ReadBeforeWriteMsg "UseLocalSettings"
- WriteAfterWriteMsg "UseLocalSettings"
- WriteAfterReadMsg "UseLocalSettings"
- AlgebraicLoopMsg "warning"
- ArtificialAlgebraicLoopMsg "warning"
- SaveWithDisabledLinksMsg "warning"
- SaveWithParameterizedLinksMsg "warning"
- CheckSSInitialOutputMsg on
- UnderspecifiedInitializationDetection "Classic"
- MergeDetectMultiDrivingBlocksExec "none"
- CheckExecutionContextPreStartOutputMsg off
- CheckExecutionContextRuntimeOutputMsg off
- SignalResolutionControl "UseLocalSettings"
- BlockPriorityViolationMsg "warning"
- MinStepSizeMsg "warning"
- TimeAdjustmentMsg "none"
- MaxConsecutiveZCsMsg "error"
- SolverPrmCheckMsg "warning"
- InheritedTsInSrcMsg "warning"
- DiscreteInheritContinuousMsg "warning"
- MultiTaskDSMMsg "error"
- MultiTaskCondExecSysMsg "error"
- MultiTaskRateTransMsg "error"
- SingleTaskRateTransMsg "none"
- TasksWithSamePriorityMsg "warning"
- SigSpecEnsureSampleTimeMsg "warning"
- CheckMatrixSingularityMsg "none"
- IntegerOverflowMsg "warning"
- Int32ToFloatConvMsg "warning"
- ParameterDowncastMsg "error"
- ParameterOverflowMsg "error"
- ParameterUnderflowMsg "none"
- ParameterPrecisionLossMsg "warning"
- ParameterTunabilityLossMsg "warning"
- FixptConstUnderflowMsg "none"
- FixptConstOverflowMsg "none"
- FixptConstPrecisionLossMsg "none"
- UnderSpecifiedDataTypeMsg "none"
- UnnecessaryDatatypeConvMsg "none"
- VectorMatrixConversionMsg "none"
- InvalidFcnCallConnMsg "error"
- FcnCallInpInsideContextMsg "Use local settings"
- SignalLabelMismatchMsg "none"
- UnconnectedInputMsg "warning"
- UnconnectedOutputMsg "warning"
- UnconnectedLineMsg "warning"
- SFcnCompatibilityMsg "none"
- UniqueDataStoreMsg "none"
- BusObjectLabelMismatch "warning"
- RootOutportRequireBusObject "warning"
- AssertControl "UseLocalSettings"
- EnableOverflowDetection off
- ModelReferenceIOMsg "none"
- ModelReferenceVersionMismatchMessage "none"
- ModelReferenceIOMismatchMessage "none"
- ModelReferenceCSMismatchMessage "none"
- UnknownTsInhSupMsg "warning"
- ModelReferenceDataLoggingMessage "warning"
- ModelReferenceSymbolNameMessage "warning"
- ModelReferenceExtraNoncontSigs "error"
- StateNameClashWarn "warning"
- SimStateInterfaceChecksumMismatchMsg "warning"
- StrictBusMsg "Warning"
- BusNameAdapt "WarnAndRepair"
- NonBusSignalsTreatedAsBus "none"
- LoggingUnavailableSignals "error"
- BlockIODiagnostic "none"
- }
- Simulink.HardwareCC {
- $ObjectID 6
- Version "1.10.0"
- ProdBitPerChar 8
- ProdBitPerShort 16
- ProdBitPerInt 32
- ProdBitPerLong 32
- ProdIntDivRoundTo "Undefined"
- ProdEndianess "Unspecified"
- ProdWordSize 32
- ProdShiftRightIntArith on
- ProdHWDeviceType "32-bit Generic"
- TargetBitPerChar 8
- TargetBitPerShort 16
- TargetBitPerInt 32
- TargetBitPerLong 32
- TargetShiftRightIntArith on
- TargetIntDivRoundTo "Undefined"
- TargetEndianess "Unspecified"
- TargetWordSize 32
- TargetTypeEmulationWarnSuppressLevel 0
- TargetPreprocMaxBitsSint 32
- TargetPreprocMaxBitsUint 32
- TargetHWDeviceType "Specified"
- TargetUnknown off
- ProdEqTarget on
- }
- Simulink.ModelReferenceCC {
- $ObjectID 7
- Version "1.10.0"
- UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
- CheckModelReferenceTargetMessage "error"
- EnableParallelModelReferenceBuilds off
- ParallelModelReferenceMATLABWorkerInit "None"
- ModelReferenceNumInstancesAllowed "Multi"
- PropagateVarSize "Infer from blocks in model"
- ModelReferencePassRootInputsByReference on
- ModelReferenceMinAlgLoopOccurrences off
- PropagateSignalLabelsOutOfModel off
- SupportModelReferenceSimTargetCustomCode off
- }
- Simulink.SFSimCC {
- $ObjectID 8
- Version "1.10.0"
- SFSimEnableDebug on
- SFSimOverflowDetection on
- SFSimEcho on
- SimBlas on
- SimCtrlC on
- SimExtrinsic on
- SimIntegrity on
- SimUseLocalCustomCode off
- SimBuildMode "sf_incremental_build"
- }
- Simulink.RTWCC {
- $BackupClass "Simulink.RTWCC"
- $ObjectID 9
- Version "1.10.0"
- Array {
- Type "Cell"
- Dimension 6
- Cell "IncludeHyperlinkInReport"
- Cell "GenerateTraceInfo"
- Cell "GenerateTraceReport"
- Cell "GenerateTraceReportSl"
- Cell "GenerateTraceReportSf"
- Cell "GenerateTraceReportEml"
- PropName "DisabledProps"
- }
- SystemTargetFile "grt.tlc"
- GenCodeOnly off
- MakeCommand "make_rtw"
- GenerateMakefile on
- TemplateMakefile "grt_default_tmf"
- GenerateReport off
- SaveLog off
- RTWVerbose on
- RetainRTWFile off
- ProfileTLC off
- TLCDebug off
- TLCCoverage off
- TLCAssert off
- ProcessScriptMode "Default"
- ConfigurationMode "Optimized"
- ConfigAtBuild off
- RTWUseLocalCustomCode off
- RTWUseSimCustomCode off
- IncludeHyperlinkInReport off
- LaunchReport off
- TargetLang "C"
- IncludeBusHierarchyInRTWFileBlockHierarchyMap off
- IncludeERTFirstTime off
- GenerateTraceInfo off
- GenerateTraceReport off
- GenerateTraceReportSl off
- GenerateTraceReportSf off
- GenerateTraceReportEml off
- GenerateCodeInfo off
- RTWCompilerOptimization "Off"
- CheckMdlBeforeBuild "Off"
- CustomRebuildMode "OnUpdate"
- Array {
- Type "Handle"
- Dimension 2
- Simulink.CodeAppCC {
- $ObjectID 10
- Version "1.10.0"
- Array {
- Type "Cell"
- Dimension 19
- Cell "IgnoreCustomStorageClasses"
- Cell "IgnoreTestpoints"
- Cell "InsertBlockDesc"
- Cell "SFDataObjDesc"
- Cell "SimulinkDataObjDesc"
- Cell "DefineNamingRule"
- Cell "SignalNamingRule"
- Cell "ParamNamingRule"
- Cell "InlinedPrmAccess"
- Cell "CustomSymbolStr"
- Cell "CustomSymbolStrGlobalVar"
- Cell "CustomSymbolStrType"
- Cell "CustomSymbolStrField"
- Cell "CustomSymbolStrFcn"
- Cell "CustomSymbolStrFcnArg"
- Cell "CustomSymbolStrBlkIO"
- Cell "CustomSymbolStrTmpVar"
- Cell "CustomSymbolStrMacro"
- Cell "ReqsInCode"
- PropName "DisabledProps"
- }
- ForceParamTrailComments off
- GenerateComments on
- IgnoreCustomStorageClasses on
- IgnoreTestpoints off
- IncHierarchyInIds off
- MaxIdLength 31
- PreserveName off
- PreserveNameWithParent off
- ShowEliminatedStatement off
- IncAutoGenComments off
- SimulinkDataObjDesc off
- SFDataObjDesc off
- IncDataTypeInIds off
- MangleLength 1
- CustomSymbolStrGlobalVar "$R$N$M"
- CustomSymbolStrType "$N$R$M"
- CustomSymbolStrField "$N$M"
- CustomSymbolStrFcn "$R$N$M$F"
- CustomSymbolStrFcnArg "rt$I$N$M"
- CustomSymbolStrBlkIO "rtb_$N$M"
- CustomSymbolStrTmpVar "$N$M"
- CustomSymbolStrMacro "$R$N$M"
- DefineNamingRule "None"
- ParamNamingRule "None"
- SignalNamingRule "None"
- InsertBlockDesc off
- SimulinkBlockComments on
- EnableCustomComments off
- InlinedPrmAccess "Literals"
- ReqsInCode off
- UseSimReservedNames off
- }
- Simulink.GRTTargetCC {
- $BackupClass "Simulink.TargetCC"
- $ObjectID 11
- Version "1.10.0"
- Array {
- Type "Cell"
- Dimension 17
- Cell "GeneratePreprocessorConditionals"
- Cell "IncludeMdlTerminateFcn"
- Cell "CombineOutputUpdateFcns"
- Cell "SuppressErrorStatus"
- Cell "ERTCustomFileBanners"
- Cell "GenerateSampleERTMain"
- Cell "GenerateTestInterfaces"
- Cell "ModelStepFunctionPrototypeControlCompliant"
- Cell "CPPClassGenCompliant"
- Cell "MultiInstanceERTCode"
- Cell "PurelyIntegerCode"
- Cell "SupportNonFinite"
- Cell "SupportComplex"
- Cell "SupportAbsoluteTime"
- Cell "SupportContinuousTime"
- Cell "SupportNonInlinedSFcns"
- Cell "PortableWordSizes"
- PropName "DisabledProps"
- }
- TargetFcnLib "ansi_tfl_table_tmw.mat"
- TargetLibSuffix ""
- TargetPreCompLibLocation ""
- TargetFunctionLibrary "ANSI_C"
- UtilityFuncGeneration "Auto"
- ERTMultiwordTypeDef "System defined"
- ERTCodeCoverageTool "None"
- ERTMultiwordLength 256
- MultiwordLength 2048
- GenerateFullHeader on
- GenerateSampleERTMain off
- GenerateTestInterfaces off
- IsPILTarget off
- ModelReferenceCompliant on
- ParMdlRefBuildCompliant on
- CompOptLevelCompliant on
- IncludeMdlTerminateFcn on
- GeneratePreprocessorConditionals "Disable all"
- CombineOutputUpdateFcns off
- SuppressErrorStatus off
- ERTFirstTimeCompliant off
- IncludeFileDelimiter "Auto"
- ERTCustomFileBanners off
- SupportAbsoluteTime on
- LogVarNameModifier "rt_"
- MatFileLogging on
- MultiInstanceERTCode off
- SupportNonFinite on
- SupportComplex on
- PurelyIntegerCode off
- SupportContinuousTime on
- SupportNonInlinedSFcns on
- SupportVariableSizeSignals off
- EnableShiftOperators on
- ParenthesesLevel "Nominal"
- PortableWordSizes off
- ModelStepFunctionPrototypeControlCompliant off
- CPPClassGenCompliant off
- AutosarCompliant off
- UseMalloc off
- ExtMode off
- ExtModeStaticAlloc off
- ExtModeTesting off
- ExtModeStaticAllocSize 1000000
- ExtModeTransport 0
- ExtModeMexFile "ext_comm"
- ExtModeIntrfLevel "Level1"
- RTWCAPISignals off
- RTWCAPIParams off
- RTWCAPIStates off
- GenerateASAP2 off
- }
- PropName "Components"
- }
- }
- PropName "Components"
- }
- Name "Configuration"
- CurrentDlgPage "Solver"
- ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] "
- }
- PropName "ConfigurationSets"
- }
- BlockDefaults {
- ForegroundColor "black"
- BackgroundColor "white"
- DropShadow off
- NamePlacement "normal"
- FontName "Helvetica"
- FontSize 10
- FontWeight "normal"
- FontAngle "normal"
- ShowName on
- BlockRotation 0
- BlockMirror off
- }
- AnnotationDefaults {
- HorizontalAlignment "center"
- VerticalAlignment "middle"
- ForegroundColor "black"
- BackgroundColor "white"
- DropShadow off
- FontName "Helvetica"
- FontSize 10
- FontWeight "normal"
- FontAngle "normal"
- UseDisplayTextAsClickCallback off
- }
- LineDefaults {
- FontName "Helvetica"
- FontSize 9
- FontWeight "normal"
- FontAngle "normal"
- }
- BlockParameterDefaults {
- Block {
- BlockType Inport
- Port "1"
- UseBusObject off
- BusObject "BusObject"
- BusOutputAsStruct off
- PortDimensions "-1"
- VarSizeSig "Inherit"
- SampleTime "-1"
- OutMin "[]"
- OutMax "[]"
- DataType "auto"
- OutDataType "fixdt(1,16,0)"
- OutScaling "[]"
- OutDataTypeStr "Inherit: auto"
- LockScale off
- SignalType "auto"
- SamplingMode "auto"
- LatchByDelayingOutsideSignal off
- LatchInputForFeedbackSignals off
- Interpolate on
- }
- Block {
- BlockType SubSystem
- ShowPortLabels "FromPortIcon"
- Permissions "ReadWrite"
- PermitHierarchicalResolution "All"
- TreatAsAtomicUnit off
- CheckFcnCallInpInsideContextMsg off
- SystemSampleTime "-1"
- RTWFcnNameOpts "Auto"
- RTWFileNameOpts "Auto"
- RTWMemSecFuncInitTerm "Inherit from model"
- RTWMemSecFuncExecute "Inherit from model"
- RTWMemSecDataConstants "Inherit from model"
- RTWMemSecDataInternal "Inherit from model"
- RTWMemSecDataParameters "Inherit from model"
- SimViewingDevice off
- DataTypeOverride "UseLocalSettings"
- MinMaxOverflowLogging "UseLocalSettings"
- }
- }
- System {
- Name "TableLibrary"
- Location [193, 302, 773, 562]
- Open on
- ModelBrowserVisibility off
- ModelBrowserWidth 200
- ScreenColor "white"
- PaperOrientation "landscape"
- PaperPositionMode "auto"
- PaperType "usletter"
- PaperUnits "inches"
- TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
- TiledPageScale 1
- ShowPageBoundaries off
- ZoomFactor "100"
- ReportName "simulink-default.rpt"
- SIDHighWatermark 8
- Block {
- BlockType SubSystem
- Name "Tabular Expression"
- SID 1
- Ports [1]
- Position [70, 32, 235, 98]
- CopyFcn "TTdiag Copy"
- DeleteFcn "TTdiag Delete"
- OpenFcn "TTdiag Open Simulink"
- MinAlgLoopOccurrences off
- PropExecContextOutsideSubsystem off
- RTWSystemCode "Auto"
- FunctionWithSeparateData off
- Opaque off
- RequestExecContextInheritance off
- MaskHideContents off
- MaskDescription "Table Block"
- MaskDisplay "port_label('input',1,'Input');\ntext(0.5,0.6,'Tabular Expression', 'horizontalAlignment', 'ce"
- "nter')\ncolor('red')\ntext(0.5,0.4,'Not Checked', 'horizontalAlignment', 'center')"
- MaskIconFrame on
- MaskIconOpaque on
- MaskIconRotate "none"
- MaskPortRotate "default"
- MaskIconUnits "normalized"
- System {
- Name "Tabular Expression"
- Location [433, 447, 931, 747]
- Open off
- ModelBrowserVisibility off
- ModelBrowserWidth 200
- ScreenColor "white"
- PaperOrientation "landscape"
- PaperPositionMode "auto"
- PaperType "usletter"
- PaperUnits "inches"
- TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
- TiledPageScale 1
- ShowPageBoundaries off
- ZoomFactor "100"
- Block {
- BlockType Inport
- Name "In1"
- SID 2
- Position [110, 103, 140, 117]
- IconDisplay "Port number"
- OutDataType "fixdt(1, 16)"
- OutScaling "2^0"
- }
- }
- }
- }
+# MathWorks OPC Text Package
+Model {
+ Version 10.4
+ Description "Simulink model saved in R2021b"
}
+__MWOPC_PACKAGE_BEGIN__ R2021b
+__MWOPC_PART_BEGIN__ /[Content_Types].xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /_rels/.rels
+
+
+
+
+
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /metadata/coreProperties.xml
+
+
+ library
+ 2010-04-08T15:30:49Z
+ elesc
+ pesaraamarasekera
+ 2022-05-22T01:18:50Z
+ 24.0
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcoreProperties.xml
+
+
+ application/vnd.mathworks.simulink.model
+ Simulink Model
+ R2021b
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesExtension.xml
+
+
+ 14ca3fb9-c549-4327-959d-be9ebf62328f
+
+
+__MWOPC_PART_BEGIN__ /metadata/mwcorePropertiesReleaseInfo.xml
+
+
+
+ 9.11.0.1873467
+ R2021b
+ Update 3
+ Feb 03 2022
+ 2440358501
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/blockdiagram.xml.rels
+
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/_rels/configSetInfo.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/bddefaults.xml
+
+
+
+ center
+ middle
+
+
+
+
+
+
+
+
+
+
+ 1
+ off
+ Port number
+ off
+ []
+ []
+ Inherit: auto
+ off
+ off
+ inherit
+ -1
+ Inherit
+ -1
+ auto
+ auto
+ off
+ off
+ on
+
+
+ FromPortIcon
+ ReadWrite
+ All
+ off
+ off
+ Sample time
+ -1
+ Auto
+ Auto
+ Auto
+ void_void
+ off
+ off
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ Inherit from model
+ off
+ UseLocalSettings
+ AllNumericTypes
+ UseLocalSettings
+ off
+ off
+ NONE
+ off
+ expression
+ update diagram
+ off
+ off
+ on
+ off
+ off
+ off
+ 0
+ off
+ off
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/blockdiagram.xml
+
+
+
+ 9d540185-51f6-4fd1-b327-fe0353af8803
+ BlockLibrary
+ maci64
+
+ %<Auto>
+ %<Auto>
+ 206975269
+ %<AutoIncrement:24.0>
+
+
+ none
+
+
+ normal
+
+
+ warning
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSet0.xml
+
+
+
+ []
+
+
+
+ []
+
+ []
+ 0.0
+ 10.0
+ auto
+ on
+ auto
+ auto
+ 5
+ auto
+ 10*128*eps
+ 1000
+ 4
+ 1
+ auto
+ auto
+ 1
+ 1e-3
+ on
+ off
+ off
+ ode45
+ auto
+ auto
+ DisableAll
+ UseLocalSettings
+ Nonadaptive
+ TrustRegion
+ off
+ off
+ Fast
+ off
+ off
+ Unconstrained
+ Whenever possible
+ []
+ off
+ off
+ ode3
+
+
+ []
+
+ []
+ 1
+ [t, u]
+ xFinal
+ xInitial
+ on
+ 1000
+ off
+ off
+ off
+ off
+ Array
+ ModelDataLogs
+ on
+ off
+ on
+ on
+ off
+ on
+ off
+ streamout
+ on
+ off
+ xout
+ tout
+ yout
+ logsout
+ dsmout
+ RefineOutputTimes
+ []
+ out
+ 1
+ off
+ timeseries
+ out.mat
+ [-inf, inf]
+
+
+
+ BooleansAsBitfields |
+ PassReuseOutputArgsAs |
+ PassReuseOutputArgsThreshold |
+ ZeroExternalMemoryAtStartup |
+ ZeroInternalMemoryAtStartup |
+ OptimizeModelRefInitCode |
+ NoFixptDivByZeroProtection |
+ UseSpecifiedMinMax |
+ EfficientTunableParamExpr |
+
+
+ []
+ on
+ on
+ on
+ Tunable
+ off
+ off
+ off
+ off
+ double
+ off
+ off
+ on
+ on
+ off
+ off
+ on
+ off
+
+ on
+ off
+ uint_T
+ Same as modeled
+ on
+ 64
+ Structure reference
+ 12
+ 2147483647
+ on
+ 5
+ off
+ off
+ Native Integer
+ on
+ on
+ off
+ off
+ off
+ on
+ inf
+ Inherit from target
+ on
+ off
+ off
+ off
+ on
+ on
+ off
+ off
+ level2
+ Balanced
+ on
+ off
+ off
+ GradualUnderflow
+ off
+
+
+
+ UseOnlyExistingSharedCode |
+
+
+ []
+ error
+ none
+ none
+ none
+ error
+ none
+ UseLocalSettings
+ UseLocalSettings
+ UseLocalSettings
+ warning
+ warning
+ warning
+ warning
+ on
+ Classic
+ none
+ off
+ UseLocalSettings
+ warning
+ warning
+ none
+ error
+ warning
+ warning
+ warning
+ warning
+ error
+ error
+ error
+ none
+ warning
+ none
+ warning
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ none
+ none
+ none
+ none
+ none
+ none
+ warning
+ none
+ warning
+ warning
+ warning
+ error
+ none
+ error
+ none
+ warning
+ warning
+ UseLocalSettings
+ on
+ off
+ none
+ error
+ none
+ none
+ warning
+ warning
+ none
+ warning
+ error
+ warning
+ warning
+ error
+ none
+ warning
+ none
+ warning
+ ErrorLevel1
+ WarnAndRepair
+ none
+ warning
+ warning
+ error
+ error
+ none
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ warning
+ error
+ warning
+ warning
+ none
+ warning
+ warning
+ all
+ warning
+ on
+ warning
+ warning
+ off
+
+ none
+ off
+ warning
+ none
+
+
+ []
+
+ []
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ Undefined
+ Unspecified
+ 32
+ on
+ off
+ 32-bit Generic
+ 8
+ 16
+ 32
+ 32
+ 64
+ 32
+ 64
+ 32
+ 32
+ 32
+ Char
+ None
+ on
+ off
+ Undefined
+ Unspecified
+ 32
+ 32
+ 32
+ Specified
+ off
+ on
+ on
+ on
+ EmbeddedCoderHSP
+
+
+ []
+
+ []
+ IfOutOfDateOrStructuralChange
+ on
+ error
+ off
+ on
+ None
+ Multi
+ Infer from blocks in model
+
+ on
+ off
+ off
+ off
+
+
+ []
+
+ []
+
+
+
+
+ []
+
+
+
+
+
+
+ on
+ on
+ on
+ off
+ on
+ off
+ off
+ off
+ on
+ 50
+ on
+ on
+ on
+ 65536
+ off
+ []
+ NotSpecified
+ UseInterfaceOnly
+ off
+ None
+
+ generic
+ C
+ off
+ 200
+ 1024
+ off
+
+
+ mkl-dnn
+ on
+
+
+
+ IncludeHyperlinkInReport |
+ GenerateTraceInfo |
+ GenerateTraceReport |
+ GenerateTraceReportSl |
+ GenerateTraceReportSf |
+ GenerateTraceReportEml |
+ PortableWordSizes |
+ GenerateWebview |
+ GenerateCodeMetricsReport |
+ GenerateCodeReplacementReport |
+ GenerateMissedCodeReplacementReport |
+ GenerateErtSFunction |
+ CreateSILPILBlock |
+ CodeExecutionProfiling |
+ CodeProfilingSaveOptions |
+ CodeProfilingInstrumentation |
+ CodeStackProfiling |
+
+
+ grt.tlc
+ None
+ off
+ off
+
+ off
+ make_rtw
+ on
+ off
+
+ grt_default_tmf
+
+ off
+ on
+ off
+ []
+ off
+ off
+ off
+ off
+ off
+ off
+
+
+
+
+
+
+
+
+
+
+
+ Automatically locate an installed toolchain
+ Faster Builds
+ []
+ off
+ off
+ off
+ None
+ off
+ executionProfile
+ SummaryOnly
+ off
+ off
+ C
+ None
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ []
+
+ Off
+ 1024
+
+ -1
+ discrete
+ 200
+ off
+ 1024
+ on
+ on
+ on
+ off
+ 3.5
+
+
+ 0
+ none
+ on
+ 19.05
+ unspecified
+
+
+
+ IgnoreCustomStorageClasses |
+ IgnoreTestpoints |
+ InsertBlockDesc |
+ SFDataObjDesc |
+ SimulinkDataObjDesc |
+ DefineNamingRule |
+ SignalNamingRule |
+ ParamNamingRule |
+ InlinedPrmAccess |
+ CustomSymbolStr |
+ CustomSymbolStrGlobalVar |
+ CustomSymbolStrType |
+ CustomSymbolStrField |
+ CustomSymbolStrFcn |
+ CustomSymbolStrFcnArg |
+ CustomSymbolStrBlkIO |
+ CustomSymbolStrTmpVar |
+ CustomSymbolStrMacro |
+ ReqsInCode |
+ BlockCommentType |
+ InsertPolySpaceComments |
+ MATLABFcnDesc |
+ InternalIdentifier |
+ CustomSymbolStrModelFcn |
+ CustomSymbolStrUtil |
+ CustomSymbolStrEmxType |
+ CustomSymbolStrEmxFcn |
+ CustomUserTokenString |
+
+
+ []
+
+ off
+ on
+ Auto
+ on
+ off
+ 31
+ off
+ off
+ off
+ off
+ off
+ off
+ off
+ 1
+ 8
+ $R$N$M
+ $N$R$M_T
+ $N$M
+ $R$N$M$F
+ $R$N
+ rt$I$N$M
+ rtb_$N$M
+ $N$M
+ $R$N$M
+ $N$C
+ emxArray_$M$N
+ emx$M$N
+
+
+ None
+
+ None
+
+ None
+
+ off
+ off
+ on
+ BlockPathComment
+ on
+ off
+ off
+
+ Shortened
+ Literals
+ off
+ off
+ []
+ error
+
+
+
+ GeneratePreprocessorConditionals |
+ IncludeMdlTerminateFcn |
+ RemoveResetFunc |
+ SuppressErrorStatus |
+ ERTCustomFileBanners |
+ GenerateSampleERTMain |
+ GenerateTestInterfaces |
+ ModelStepFunctionPrototypeControlCompliant |
+ CPPClassGenCompliant |
+ PortableWordSizes |
+ PurelyIntegerCode |
+ PreserveStateflowLocalDataDimensions |
+ SupportComplex |
+ SupportAbsoluteTime |
+ SupportContinuousTime |
+ SupportNonInlinedSFcns |
+ GenerateAllocFcn |
+ ExistingSharedCode |
+ ParenthesesLevel |
+ ERTMultiwordTypeDef |
+ MultiwordTypeDef |
+ RemoveDisableFunc |
+
+
+ []
+ ansi_tfl_table_tmw.mat
+
+
+ NOT IN USE
+ C89/C90 (ANSI)
+ None
+ Auto
+ System defined
+ 2048
+ 256
+ on
+ off
+
+ off
+ off
+ on
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ off
+ Auto
+ off
+ on
+ rt_
+ on
+ Nonreusable function
+ off
+ on
+ on
+ on
+ on
+ off
+ off
+ off
+ Nominal
+ Nominal
+ Simulink.SoftwareTarget.GRTCustomization
+ off
+ on
+ off
+ off
+ on
+ off
+ on
+ on
+ []
+ []
+ 1,2,3,4,...
+ Size,Breakpoints,Table
+ Size,Breakpoints,Table
+ Column-major
+ error
+ $R$E
+ $R$E
+ $R_data
+
+ None |
+
+ off
+ off
+ off
+ off
+ 1000000
+ 0
+ ext_comm
+
+ Level1
+ off
+ off
+ off
+ off
+ off
+ Error
+
+
+
+
+ []
+ Simulink Coverage Configuration Component
+ []
+ Simulink Coverage
+ off
+ EntireSystem
+ on
+ off
+ /
+ covdata
+
+ dw
+
+
+ off
+ on
+ on
+ on
+ on
+ covCumulativeData
+ off
+ on
+ slcov_output/$ModelName$
+ $ModelName$_cvdata
+ on
+ off
+
+ off
+ on
+ 1e-05
+ 0.01
+ off
+ 0
+ 0
+ Masking
+
+
+ Configuration
+ Solver
+ [ 200, 74, 1080, 704 ]
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/configSetInfo.xml
+
+
+ Configuration
+
+
+__MWOPC_PART_BEGIN__ /simulink/libraryBrowser/_rels/slLibraryBrowser.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/libraryBrowser/slLibraryBrowser.xml
+Tabular Expression Table Block $bdroot/Tabular Expression TTdiag Open Simulink 0 70 32 235 98 Tabular@20@Expression.svg signal.in_signal:1 SubSystem
+__MWOPC_PART_BEGIN__ /simulink/libraryBrowser/Tabular@20@Expression.svg
+Input Tabular Expression Not Checked
+
+__MWOPC_PART_BEGIN__ /simulink/modelDictionary.xml
+
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/_rels/system_root.xml.rels
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_1.xml
+
+
+ [395, 327, 933, 805]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ Simulink
+
+ [110, 103, 140, 117]
+ -1
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/systems/system_root.xml
+
+
+ [155, 182, 775, 620]
+ [0.000000, 0.000000, 0.000000, 0.000000]
+ off
+ Deduce
+ simulink-default.rpt
+ 8
+ Simulink
+
+ [1]
+ [70, 32, 235, 98]
+ -1
+ TTdiag Copy
+ TTdiag Delete
+ TTdiag Open Simulink
+ off
+
+ port_label('input',1,'Input');
+text(0.5,0.6,'Tabular Expression', 'horizontalAlignment', 'center')
+color('red')
+text(0.5,0.4,'Not Checked', 'horizontalAlignment', 'center')
+ Table Block
+
+
+
+
+
+__MWOPC_PART_BEGIN__ /simulink/windowsInfo.xml
+
+
+
+ []
+
+
+
+
+__MWOPC_PACKAGE_END__
diff --git a/TableLibrary.mdl.r2010a b/TableLibrary.mdl.r2010a
new file mode 100644
index 0000000000000000000000000000000000000000..810af9743e135e8c77bce722864c7e9a2091a678
--- /dev/null
+++ b/TableLibrary.mdl.r2010a
@@ -0,0 +1,679 @@
+Library {
+ Name "TableLibrary"
+ Version 7.5
+ MdlSubVersion 0
+ SavedCharacterEncoding "UTF-8"
+ LibraryType "BlockLibrary"
+ SaveDefaultBlockParams on
+ ScopeRefreshTime 0.035000
+ OverrideScopeRefreshTime on
+ DisableAllScopes off
+ MaxMDLFileLineLength 120
+ Created "Thu Apr 8 11:30:49 2010"
+ Creator "elesc"
+ UpdateHistory "UpdateHistoryNever"
+ ModifiedByFormat "%"
+ LastModifiedBy "colin"
+ ModifiedDateFormat "%"
+ LastModifiedDate "Tue Sep 21 13:08:03 2010"
+ RTWModifiedTimeStamp 206975269
+ ModelVersionFormat "1.%"
+ ConfigurationManager "None"
+ SampleTimeColors off
+ SampleTimeAnnotations off
+ LibraryLinkDisplay "none"
+ WideLines off
+ ShowLineDimensions off
+ ShowPortDataTypes off
+ ShowLoopsOnError on
+ IgnoreBidirectionalLines off
+ ShowStorageClass off
+ ShowTestPointIcons on
+ ShowSignalResolutionIcons on
+ ShowViewerIcons on
+ SortedOrder off
+ ExecutionContextIcon off
+ ShowLinearizationAnnotations on
+ BlockNameDataTip off
+ BlockParametersDataTip off
+ BlockDescriptionStringDataTip off
+ ToolBar on
+ StatusBar on
+ BrowserShowLibraryLinks off
+ BrowserLookUnderMasks off
+ SimulationMode "normal"
+ LinearizationMsg "none"
+ Profile off
+ ParamWorkspaceSource "MATLABWorkspace"
+ RecordCoverage off
+ CovSaveName "covdata"
+ CovMetricSettings "dw"
+ CovNameIncrementing off
+ CovHtmlReporting on
+ CovForceBlockReductionOff on
+ covSaveCumulativeToWorkspaceVar on
+ CovSaveSingleToWorkspaceVar on
+ CovCumulativeReport off
+ CovReportOnPause on
+ CovModelRefEnable "Off"
+ CovExternalEMLEnable off
+ ExtModeBatchMode off
+ ExtModeEnableFloating on
+ ExtModeTrigType "manual"
+ ExtModeTrigMode "normal"
+ ExtModeTrigPort "1"
+ ExtModeTrigElement "any"
+ ExtModeTrigDuration 1000
+ ExtModeTrigDurationFloating "auto"
+ ExtModeTrigHoldOff 0
+ ExtModeTrigDelay 0
+ ExtModeTrigDirection "rising"
+ ExtModeTrigLevel 0
+ ExtModeArchiveMode "off"
+ ExtModeAutoIncOneShot off
+ ExtModeIncDirWhenArm off
+ ExtModeAddSuffixToVar off
+ ExtModeWriteAllDataToWs off
+ ExtModeArmWhenConnect on
+ ExtModeSkipDownloadWhenConnect off
+ ExtModeLogAll on
+ ExtModeAutoUpdateStatusClock on
+ ShowModelReferenceBlockVersion off
+ ShowModelReferenceBlockIO off
+ Array {
+ Type "Handle"
+ Dimension 1
+ Simulink.ConfigSet {
+ $ObjectID 1
+ Version "1.10.0"
+ Array {
+ Type "Handle"
+ Dimension 8
+ Simulink.SolverCC {
+ $ObjectID 2
+ Version "1.10.0"
+ StartTime "0.0"
+ StopTime "10.0"
+ AbsTol "auto"
+ FixedStep "auto"
+ InitialStep "auto"
+ MaxNumMinSteps "-1"
+ MaxOrder 5
+ ZcThreshold "auto"
+ ConsecutiveZCsStepRelTol "10*128*eps"
+ MaxConsecutiveZCs "1000"
+ ExtrapolationOrder 4
+ NumberNewtonIterations 1
+ MaxStep "auto"
+ MinStep "auto"
+ MaxConsecutiveMinStep "1"
+ RelTol "1e-3"
+ SolverMode "Auto"
+ Solver "ode45"
+ SolverName "ode45"
+ SolverJacobianMethodControl "auto"
+ ShapePreserveControl "DisableAll"
+ ZeroCrossControl "UseLocalSettings"
+ ZeroCrossAlgorithm "Nonadaptive"
+ AlgebraicLoopSolver "TrustRegion"
+ SolverResetMethod "Fast"
+ PositivePriorityOrder off
+ AutoInsertRateTranBlk off
+ SampleTimeConstraint "Unconstrained"
+ InsertRTBMode "Whenever possible"
+ }
+ Simulink.DataIOCC {
+ $ObjectID 3
+ Version "1.10.0"
+ Decimation "1"
+ ExternalInput "[t, u]"
+ FinalStateName "xFinal"
+ InitialState "xInitial"
+ LimitDataPoints on
+ MaxDataPoints "1000"
+ LoadExternalInput off
+ LoadInitialState off
+ SaveFinalState off
+ SaveCompleteFinalSimState off
+ SaveFormat "Array"
+ SaveOutput on
+ SaveState off
+ SignalLogging on
+ DSMLogging on
+ InspectSignalLogs off
+ SaveTime on
+ ReturnWorkspaceOutputs off
+ StateSaveName "xout"
+ TimeSaveName "tout"
+ OutputSaveName "yout"
+ SignalLoggingName "logsout"
+ DSMLoggingName "dsmout"
+ OutputOption "RefineOutputTimes"
+ OutputTimes "[]"
+ ReturnWorkspaceOutputsName "out"
+ Refine "1"
+ }
+ Simulink.OptimizationCC {
+ $ObjectID 4
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 7
+ Cell "BooleansAsBitfields"
+ Cell "PassReuseOutputArgsAs"
+ Cell "PassReuseOutputArgsThreshold"
+ Cell "ZeroExternalMemoryAtStartup"
+ Cell "ZeroInternalMemoryAtStartup"
+ Cell "OptimizeModelRefInitCode"
+ Cell "NoFixptDivByZeroProtection"
+ PropName "DisabledProps"
+ }
+ BlockReduction on
+ BooleanDataType on
+ ConditionallyExecuteInputs on
+ InlineParams off
+ UseIntDivNetSlope off
+ InlineInvariantSignals off
+ OptimizeBlockIOStorage on
+ BufferReuse on
+ EnhancedBackFolding off
+ StrengthReduction off
+ EnforceIntegerDowncast on
+ ExpressionFolding on
+ BooleansAsBitfields off
+ BitfieldContainerType "uint_T"
+ EnableMemcpy on
+ MemcpyThreshold 64
+ PassReuseOutputArgsAs "Structure reference"
+ ExpressionDepthLimit 2147483647
+ FoldNonRolledExpr on
+ LocalBlockOutputs on
+ RollThreshold 5
+ SystemCodeInlineAuto off
+ StateBitsets off
+ DataBitsets off
+ UseTempVars off
+ ZeroExternalMemoryAtStartup on
+ ZeroInternalMemoryAtStartup on
+ InitFltsAndDblsToZero off
+ NoFixptDivByZeroProtection off
+ EfficientFloat2IntCast off
+ EfficientMapNaN2IntZero on
+ OptimizeModelRefInitCode off
+ LifeSpan "inf"
+ MaxStackSize "Inherit from target"
+ BufferReusableBoundary on
+ SimCompilerOptimization "Off"
+ AccelVerboseBuild off
+ }
+ Simulink.DebuggingCC {
+ $ObjectID 5
+ Version "1.10.0"
+ RTPrefix "error"
+ ConsistencyChecking "none"
+ ArrayBoundsChecking "none"
+ SignalInfNanChecking "none"
+ SignalRangeChecking "none"
+ ReadBeforeWriteMsg "UseLocalSettings"
+ WriteAfterWriteMsg "UseLocalSettings"
+ WriteAfterReadMsg "UseLocalSettings"
+ AlgebraicLoopMsg "warning"
+ ArtificialAlgebraicLoopMsg "warning"
+ SaveWithDisabledLinksMsg "warning"
+ SaveWithParameterizedLinksMsg "warning"
+ CheckSSInitialOutputMsg on
+ UnderspecifiedInitializationDetection "Classic"
+ MergeDetectMultiDrivingBlocksExec "none"
+ CheckExecutionContextPreStartOutputMsg off
+ CheckExecutionContextRuntimeOutputMsg off
+ SignalResolutionControl "UseLocalSettings"
+ BlockPriorityViolationMsg "warning"
+ MinStepSizeMsg "warning"
+ TimeAdjustmentMsg "none"
+ MaxConsecutiveZCsMsg "error"
+ SolverPrmCheckMsg "warning"
+ InheritedTsInSrcMsg "warning"
+ DiscreteInheritContinuousMsg "warning"
+ MultiTaskDSMMsg "error"
+ MultiTaskCondExecSysMsg "error"
+ MultiTaskRateTransMsg "error"
+ SingleTaskRateTransMsg "none"
+ TasksWithSamePriorityMsg "warning"
+ SigSpecEnsureSampleTimeMsg "warning"
+ CheckMatrixSingularityMsg "none"
+ IntegerOverflowMsg "warning"
+ Int32ToFloatConvMsg "warning"
+ ParameterDowncastMsg "error"
+ ParameterOverflowMsg "error"
+ ParameterUnderflowMsg "none"
+ ParameterPrecisionLossMsg "warning"
+ ParameterTunabilityLossMsg "warning"
+ FixptConstUnderflowMsg "none"
+ FixptConstOverflowMsg "none"
+ FixptConstPrecisionLossMsg "none"
+ UnderSpecifiedDataTypeMsg "none"
+ UnnecessaryDatatypeConvMsg "none"
+ VectorMatrixConversionMsg "none"
+ InvalidFcnCallConnMsg "error"
+ FcnCallInpInsideContextMsg "Use local settings"
+ SignalLabelMismatchMsg "none"
+ UnconnectedInputMsg "warning"
+ UnconnectedOutputMsg "warning"
+ UnconnectedLineMsg "warning"
+ SFcnCompatibilityMsg "none"
+ UniqueDataStoreMsg "none"
+ BusObjectLabelMismatch "warning"
+ RootOutportRequireBusObject "warning"
+ AssertControl "UseLocalSettings"
+ EnableOverflowDetection off
+ ModelReferenceIOMsg "none"
+ ModelReferenceVersionMismatchMessage "none"
+ ModelReferenceIOMismatchMessage "none"
+ ModelReferenceCSMismatchMessage "none"
+ UnknownTsInhSupMsg "warning"
+ ModelReferenceDataLoggingMessage "warning"
+ ModelReferenceSymbolNameMessage "warning"
+ ModelReferenceExtraNoncontSigs "error"
+ StateNameClashWarn "warning"
+ SimStateInterfaceChecksumMismatchMsg "warning"
+ StrictBusMsg "Warning"
+ BusNameAdapt "WarnAndRepair"
+ NonBusSignalsTreatedAsBus "none"
+ LoggingUnavailableSignals "error"
+ BlockIODiagnostic "none"
+ }
+ Simulink.HardwareCC {
+ $ObjectID 6
+ Version "1.10.0"
+ ProdBitPerChar 8
+ ProdBitPerShort 16
+ ProdBitPerInt 32
+ ProdBitPerLong 32
+ ProdIntDivRoundTo "Undefined"
+ ProdEndianess "Unspecified"
+ ProdWordSize 32
+ ProdShiftRightIntArith on
+ ProdHWDeviceType "32-bit Generic"
+ TargetBitPerChar 8
+ TargetBitPerShort 16
+ TargetBitPerInt 32
+ TargetBitPerLong 32
+ TargetShiftRightIntArith on
+ TargetIntDivRoundTo "Undefined"
+ TargetEndianess "Unspecified"
+ TargetWordSize 32
+ TargetTypeEmulationWarnSuppressLevel 0
+ TargetPreprocMaxBitsSint 32
+ TargetPreprocMaxBitsUint 32
+ TargetHWDeviceType "Specified"
+ TargetUnknown off
+ ProdEqTarget on
+ }
+ Simulink.ModelReferenceCC {
+ $ObjectID 7
+ Version "1.10.0"
+ UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange"
+ CheckModelReferenceTargetMessage "error"
+ EnableParallelModelReferenceBuilds off
+ ParallelModelReferenceMATLABWorkerInit "None"
+ ModelReferenceNumInstancesAllowed "Multi"
+ PropagateVarSize "Infer from blocks in model"
+ ModelReferencePassRootInputsByReference on
+ ModelReferenceMinAlgLoopOccurrences off
+ PropagateSignalLabelsOutOfModel off
+ SupportModelReferenceSimTargetCustomCode off
+ }
+ Simulink.SFSimCC {
+ $ObjectID 8
+ Version "1.10.0"
+ SFSimEnableDebug on
+ SFSimOverflowDetection on
+ SFSimEcho on
+ SimBlas on
+ SimCtrlC on
+ SimExtrinsic on
+ SimIntegrity on
+ SimUseLocalCustomCode off
+ SimBuildMode "sf_incremental_build"
+ }
+ Simulink.RTWCC {
+ $BackupClass "Simulink.RTWCC"
+ $ObjectID 9
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 6
+ Cell "IncludeHyperlinkInReport"
+ Cell "GenerateTraceInfo"
+ Cell "GenerateTraceReport"
+ Cell "GenerateTraceReportSl"
+ Cell "GenerateTraceReportSf"
+ Cell "GenerateTraceReportEml"
+ PropName "DisabledProps"
+ }
+ SystemTargetFile "grt.tlc"
+ GenCodeOnly off
+ MakeCommand "make_rtw"
+ GenerateMakefile on
+ TemplateMakefile "grt_default_tmf"
+ GenerateReport off
+ SaveLog off
+ RTWVerbose on
+ RetainRTWFile off
+ ProfileTLC off
+ TLCDebug off
+ TLCCoverage off
+ TLCAssert off
+ ProcessScriptMode "Default"
+ ConfigurationMode "Optimized"
+ ConfigAtBuild off
+ RTWUseLocalCustomCode off
+ RTWUseSimCustomCode off
+ IncludeHyperlinkInReport off
+ LaunchReport off
+ TargetLang "C"
+ IncludeBusHierarchyInRTWFileBlockHierarchyMap off
+ IncludeERTFirstTime off
+ GenerateTraceInfo off
+ GenerateTraceReport off
+ GenerateTraceReportSl off
+ GenerateTraceReportSf off
+ GenerateTraceReportEml off
+ GenerateCodeInfo off
+ RTWCompilerOptimization "Off"
+ CheckMdlBeforeBuild "Off"
+ CustomRebuildMode "OnUpdate"
+ Array {
+ Type "Handle"
+ Dimension 2
+ Simulink.CodeAppCC {
+ $ObjectID 10
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 19
+ Cell "IgnoreCustomStorageClasses"
+ Cell "IgnoreTestpoints"
+ Cell "InsertBlockDesc"
+ Cell "SFDataObjDesc"
+ Cell "SimulinkDataObjDesc"
+ Cell "DefineNamingRule"
+ Cell "SignalNamingRule"
+ Cell "ParamNamingRule"
+ Cell "InlinedPrmAccess"
+ Cell "CustomSymbolStr"
+ Cell "CustomSymbolStrGlobalVar"
+ Cell "CustomSymbolStrType"
+ Cell "CustomSymbolStrField"
+ Cell "CustomSymbolStrFcn"
+ Cell "CustomSymbolStrFcnArg"
+ Cell "CustomSymbolStrBlkIO"
+ Cell "CustomSymbolStrTmpVar"
+ Cell "CustomSymbolStrMacro"
+ Cell "ReqsInCode"
+ PropName "DisabledProps"
+ }
+ ForceParamTrailComments off
+ GenerateComments on
+ IgnoreCustomStorageClasses on
+ IgnoreTestpoints off
+ IncHierarchyInIds off
+ MaxIdLength 31
+ PreserveName off
+ PreserveNameWithParent off
+ ShowEliminatedStatement off
+ IncAutoGenComments off
+ SimulinkDataObjDesc off
+ SFDataObjDesc off
+ IncDataTypeInIds off
+ MangleLength 1
+ CustomSymbolStrGlobalVar "$R$N$M"
+ CustomSymbolStrType "$N$R$M"
+ CustomSymbolStrField "$N$M"
+ CustomSymbolStrFcn "$R$N$M$F"
+ CustomSymbolStrFcnArg "rt$I$N$M"
+ CustomSymbolStrBlkIO "rtb_$N$M"
+ CustomSymbolStrTmpVar "$N$M"
+ CustomSymbolStrMacro "$R$N$M"
+ DefineNamingRule "None"
+ ParamNamingRule "None"
+ SignalNamingRule "None"
+ InsertBlockDesc off
+ SimulinkBlockComments on
+ EnableCustomComments off
+ InlinedPrmAccess "Literals"
+ ReqsInCode off
+ UseSimReservedNames off
+ }
+ Simulink.GRTTargetCC {
+ $BackupClass "Simulink.TargetCC"
+ $ObjectID 11
+ Version "1.10.0"
+ Array {
+ Type "Cell"
+ Dimension 17
+ Cell "GeneratePreprocessorConditionals"
+ Cell "IncludeMdlTerminateFcn"
+ Cell "CombineOutputUpdateFcns"
+ Cell "SuppressErrorStatus"
+ Cell "ERTCustomFileBanners"
+ Cell "GenerateSampleERTMain"
+ Cell "GenerateTestInterfaces"
+ Cell "ModelStepFunctionPrototypeControlCompliant"
+ Cell "CPPClassGenCompliant"
+ Cell "MultiInstanceERTCode"
+ Cell "PurelyIntegerCode"
+ Cell "SupportNonFinite"
+ Cell "SupportComplex"
+ Cell "SupportAbsoluteTime"
+ Cell "SupportContinuousTime"
+ Cell "SupportNonInlinedSFcns"
+ Cell "PortableWordSizes"
+ PropName "DisabledProps"
+ }
+ TargetFcnLib "ansi_tfl_table_tmw.mat"
+ TargetLibSuffix ""
+ TargetPreCompLibLocation ""
+ TargetFunctionLibrary "ANSI_C"
+ UtilityFuncGeneration "Auto"
+ ERTMultiwordTypeDef "System defined"
+ ERTCodeCoverageTool "None"
+ ERTMultiwordLength 256
+ MultiwordLength 2048
+ GenerateFullHeader on
+ GenerateSampleERTMain off
+ GenerateTestInterfaces off
+ IsPILTarget off
+ ModelReferenceCompliant on
+ ParMdlRefBuildCompliant on
+ CompOptLevelCompliant on
+ IncludeMdlTerminateFcn on
+ GeneratePreprocessorConditionals "Disable all"
+ CombineOutputUpdateFcns off
+ SuppressErrorStatus off
+ ERTFirstTimeCompliant off
+ IncludeFileDelimiter "Auto"
+ ERTCustomFileBanners off
+ SupportAbsoluteTime on
+ LogVarNameModifier "rt_"
+ MatFileLogging on
+ MultiInstanceERTCode off
+ SupportNonFinite on
+ SupportComplex on
+ PurelyIntegerCode off
+ SupportContinuousTime on
+ SupportNonInlinedSFcns on
+ SupportVariableSizeSignals off
+ EnableShiftOperators on
+ ParenthesesLevel "Nominal"
+ PortableWordSizes off
+ ModelStepFunctionPrototypeControlCompliant off
+ CPPClassGenCompliant off
+ AutosarCompliant off
+ UseMalloc off
+ ExtMode off
+ ExtModeStaticAlloc off
+ ExtModeTesting off
+ ExtModeStaticAllocSize 1000000
+ ExtModeTransport 0
+ ExtModeMexFile "ext_comm"
+ ExtModeIntrfLevel "Level1"
+ RTWCAPISignals off
+ RTWCAPIParams off
+ RTWCAPIStates off
+ GenerateASAP2 off
+ }
+ PropName "Components"
+ }
+ }
+ PropName "Components"
+ }
+ Name "Configuration"
+ CurrentDlgPage "Solver"
+ ConfigPrmDlgPosition " [ 200, 74, 1080, 704 ] "
+ }
+ PropName "ConfigurationSets"
+ }
+ BlockDefaults {
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ NamePlacement "normal"
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ ShowName on
+ BlockRotation 0
+ BlockMirror off
+ }
+ AnnotationDefaults {
+ HorizontalAlignment "center"
+ VerticalAlignment "middle"
+ ForegroundColor "black"
+ BackgroundColor "white"
+ DropShadow off
+ FontName "Helvetica"
+ FontSize 10
+ FontWeight "normal"
+ FontAngle "normal"
+ UseDisplayTextAsClickCallback off
+ }
+ LineDefaults {
+ FontName "Helvetica"
+ FontSize 9
+ FontWeight "normal"
+ FontAngle "normal"
+ }
+ BlockParameterDefaults {
+ Block {
+ BlockType Inport
+ Port "1"
+ UseBusObject off
+ BusObject "BusObject"
+ BusOutputAsStruct off
+ PortDimensions "-1"
+ VarSizeSig "Inherit"
+ SampleTime "-1"
+ OutMin "[]"
+ OutMax "[]"
+ DataType "auto"
+ OutDataType "fixdt(1,16,0)"
+ OutScaling "[]"
+ OutDataTypeStr "Inherit: auto"
+ LockScale off
+ SignalType "auto"
+ SamplingMode "auto"
+ LatchByDelayingOutsideSignal off
+ LatchInputForFeedbackSignals off
+ Interpolate on
+ }
+ Block {
+ BlockType SubSystem
+ ShowPortLabels "FromPortIcon"
+ Permissions "ReadWrite"
+ PermitHierarchicalResolution "All"
+ TreatAsAtomicUnit off
+ CheckFcnCallInpInsideContextMsg off
+ SystemSampleTime "-1"
+ RTWFcnNameOpts "Auto"
+ RTWFileNameOpts "Auto"
+ RTWMemSecFuncInitTerm "Inherit from model"
+ RTWMemSecFuncExecute "Inherit from model"
+ RTWMemSecDataConstants "Inherit from model"
+ RTWMemSecDataInternal "Inherit from model"
+ RTWMemSecDataParameters "Inherit from model"
+ SimViewingDevice off
+ DataTypeOverride "UseLocalSettings"
+ MinMaxOverflowLogging "UseLocalSettings"
+ }
+ }
+ System {
+ Name "TableLibrary"
+ Location [193, 302, 773, 562]
+ Open on
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ ReportName "simulink-default.rpt"
+ SIDHighWatermark 8
+ Block {
+ BlockType SubSystem
+ Name "Tabular Expression"
+ SID 1
+ Ports [1]
+ Position [70, 32, 235, 98]
+ CopyFcn "TTdiag Copy"
+ DeleteFcn "TTdiag Delete"
+ OpenFcn "TTdiag Open Simulink"
+ MinAlgLoopOccurrences off
+ PropExecContextOutsideSubsystem off
+ RTWSystemCode "Auto"
+ FunctionWithSeparateData off
+ Opaque off
+ RequestExecContextInheritance off
+ MaskHideContents off
+ MaskDescription "Table Block"
+ MaskDisplay "port_label('input',1,'Input');\ntext(0.5,0.6,'Tabular Expression', 'horizontalAlignment', 'ce"
+ "nter')\ncolor('red')\ntext(0.5,0.4,'Not Checked', 'horizontalAlignment', 'center')"
+ MaskIconFrame on
+ MaskIconOpaque on
+ MaskIconRotate "none"
+ MaskPortRotate "default"
+ MaskIconUnits "normalized"
+ System {
+ Name "Tabular Expression"
+ Location [433, 447, 931, 747]
+ Open off
+ ModelBrowserVisibility off
+ ModelBrowserWidth 200
+ ScreenColor "white"
+ PaperOrientation "landscape"
+ PaperPositionMode "auto"
+ PaperType "usletter"
+ PaperUnits "inches"
+ TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000]
+ TiledPageScale 1
+ ShowPageBoundaries off
+ ZoomFactor "100"
+ Block {
+ BlockType Inport
+ Name "In1"
+ SID 2
+ Position [110, 103, 140, 117]
+ IconDisplay "Port number"
+ OutDataType "fixdt(1, 16)"
+ OutScaling "2^0"
+ }
+ }
+ }
+ }
+}
diff --git a/demo_1.slx b/demo_1.slx
new file mode 100644
index 0000000000000000000000000000000000000000..aba118964349cdc219326733f6a25b7c27ad38b0
Binary files /dev/null and b/demo_1.slx differ
diff --git a/demo_table.cvc b/demo_table.cvc
new file mode 100644
index 0000000000000000000000000000000000000000..b36de2417eadba8f2587ebdc695365e114965b21
--- /dev/null
+++ b/demo_table.cvc
@@ -0,0 +1,13 @@
+x:REAL;
+ECHO "begin1";
+PUSH;
+QUERY (NOT ( (x>1) AND (x<1) ) AND
+NOT ( (x>1) AND (x = 1) ) AND
+NOT ( (x<1) AND (x = 1) ));
+POP;
+ECHO "end1";
+ECHO "begin2";
+PUSH;
+QUERY ((x>1) OR (x<1) OR (x = 1));
+POP;
+ECHO "end2";
diff --git a/f.cvc b/f.cvc
new file mode 100644
index 0000000000000000000000000000000000000000..d0499af6b3c14d090175a9a1f4e53bfc07467958
--- /dev/null
+++ b/f.cvc
@@ -0,0 +1,24 @@
+x:REAL;
+y:REAL;
+ECHO "begin1";
+PUSH;
+QUERY (NOT ( (y<0) AND (y = 0) ) AND
+NOT ( (y<0) AND (y>0) ) AND
+NOT ( (y = 0) AND (y>0) ));
+POP;
+ECHO "end1";
+ECHO "begin2";
+PUSH;
+QUERY ((y<0) OR (y = 0) OR (y>0));
+POP;
+ECHO "end2";
+ECHO "begin3";
+PUSH;
+QUERY (NOT ( (x<=1) AND (x>1) ));
+POP;
+ECHO "end3";
+ECHO "begin4";
+PUSH;
+QUERY ((x<=1) OR (x>1));
+POP;
+ECHO "end4";
diff --git a/jin_ex.cvc b/jin_ex.cvc
new file mode 100644
index 0000000000000000000000000000000000000000..29a8da1a34783cab3d30d1aad55e411ac7f42433
--- /dev/null
+++ b/jin_ex.cvc
@@ -0,0 +1,26 @@
+x:REAL;
+y:REAL;
+ECHO "begin1";
+PUSH;
+QUERY (NOT ( (y<0) AND (y = 0) ) AND
+NOT ( (y<0) AND (y>0) ) AND
+NOT ( (y = 0) AND (y>0) ));
+POP;
+ECHO "end1";
+ECHO "begin2";
+PUSH;
+QUERY ((y<0) OR (y = 0) OR (y>0));
+POP;
+ECHO "end2";
+ECHO "begin3";
+PUSH;
+QUERY (NOT ( (x<0) AND (x = 0) ) AND
+NOT ( (x<0) AND (x>0) ) AND
+NOT ( (x = 0) AND (x>0) ));
+POP;
+ECHO "end3";
+ECHO "begin4";
+PUSH;
+QUERY ((x<0) OR (x = 0) OR (x>0));
+POP;
+ECHO "end4";
diff --git a/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.l b/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.l
new file mode 100644
index 0000000000000000000000000000000000000000..3eb60f9c3227aba8749ff462030b31e5a45d76f9
Binary files /dev/null and b/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.l differ
diff --git a/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.mat b/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.mat
new file mode 100644
index 0000000000000000000000000000000000000000..f809256696de2312b68179d163ffd1eea90e0ffc
Binary files /dev/null and b/slprj/_jitprj/sqY5Getm4iZJ4IFucNwUcyB.mat differ
diff --git a/slprj/_sfprj/EMLReport/sqY5Getm4iZJ4IFucNwUcyB.mat b/slprj/_sfprj/EMLReport/sqY5Getm4iZJ4IFucNwUcyB.mat
new file mode 100644
index 0000000000000000000000000000000000000000..6a37be6757b3b860a74d6f62ecf79d41d24e647d
Binary files /dev/null and b/slprj/_sfprj/EMLReport/sqY5Getm4iZJ4IFucNwUcyB.mat differ
diff --git a/slprj/_sfprj/precompile/BowI5YMW1AWxfhCwnohcRB.mat b/slprj/_sfprj/precompile/BowI5YMW1AWxfhCwnohcRB.mat
new file mode 100644
index 0000000000000000000000000000000000000000..148b09956bc7513f2afc536367c87d45e30f6086
Binary files /dev/null and b/slprj/_sfprj/precompile/BowI5YMW1AWxfhCwnohcRB.mat differ
diff --git a/slprj/_sfprj/untitled/_self/sfun/info/binfo.mat b/slprj/_sfprj/untitled/_self/sfun/info/binfo.mat
new file mode 100644
index 0000000000000000000000000000000000000000..336edac76297b834169276be76029183443c0a01
Binary files /dev/null and b/slprj/_sfprj/untitled/_self/sfun/info/binfo.mat differ
diff --git a/slprj/_sfprj/untitled/amsi_serial.mat b/slprj/_sfprj/untitled/amsi_serial.mat
new file mode 100644
index 0000000000000000000000000000000000000000..ca5b1b9f6cca2e3496f19472637c8b7d679b0991
Binary files /dev/null and b/slprj/_sfprj/untitled/amsi_serial.mat differ
diff --git a/untitled1.slx b/untitled1.slx
new file mode 100644
index 0000000000000000000000000000000000000000..8d1da3e040d6538399728da1317d358859e411a9
Binary files /dev/null and b/untitled1.slx differ