<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:kml="http://earth.google.com/kml/2.1"
    elementFormDefault="qualified"
    xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">

    <xs:import namespace="http://earth.google.com/kml/2.1" schemaLocation="kml21.xsd"/>


    <xs:annotation>
        <xs:documentation>
            <![CDATA[Zulu Web Service (ZWS) 10.0 schema]]>
        </xs:documentation>
    </xs:annotation>

    <xs:simpleType name="typeLayer">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Имя слоя, включая название карты]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string"/>
    </xs:simpleType>

    <xs:simpleType name="typeModeNum">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Порядковый номер режима в структуре слоя]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:integer"/>
    </xs:simpleType>


    <xs:simpleType name="typeNodeIdx">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Номер точки перелома]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:integer"/>
    </xs:simpleType>

    <xs:simpleType name="typeSegmentIdx">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Номер сегмента (нумерация c нуля)]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:integer"/>
    </xs:simpleType>




    <xs:simpleType name="typeFieldType">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Тип поля]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="unknown"/>
            <xs:enumeration value="string"/>
            <xs:enumeration value="integer"/>
            <xs:enumeration value="boolean"/>
            <xs:enumeration value="float"/>
            <xs:enumeration value="money"/>
            <xs:enumeration value="date"/>
            <xs:enumeration value="datetime"/>
            <xs:enumeration value="time"/>
            <xs:enumeration value="blob"/>
            <xs:enumeration value="memo"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="typeNetToolsModelType">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Тип гидравлической модели]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="thermo"/>
            <xs:enumeration value="hydro"/>
            <xs:enumeration value="steam"/>
            <xs:enumeration value="gas"/>
            <xs:enumeration value="drain"/>            
        </xs:restriction>
    </xs:simpleType>    


    <xs:simpleType name="typeNetToolsTaskStatusType">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Статус гидравлического расчета]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="stopped"/>
            <xs:enumeration value="finished"/>
            <xs:enumeration value="stopping"/>
            <xs:enumeration value="process"/>                        
        </xs:restriction>
    </xs:simpleType>    
    

    <xs:simpleType name="typeIDtype">
        <xs:restriction base="xs:string">
            <xs:enumeration value="TypeID"/>
            <xs:enumeration value="BaseID"/>
        </xs:restriction>
    </xs:simpleType>


    <xs:simpleType name="typeSpatialOperator">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Условие сравнения пространственных объектов между собой]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="Equals"/>
            <xs:enumeration value="Disjoint"/>
            <xs:enumeration value="Intersects"/>
            <xs:enumeration value="Crosses"/>
            <xs:enumeration value="Touches"/>
            <xs:enumeration value="Within"/>
            <xs:enumeration value="Contains"/>
            <xs:enumeration value="Overlaps"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeFlag">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Yes"/>
            <xs:enumeration value="No"/>
        </xs:restriction>
    </xs:simpleType>



    <xs:complexType name="typeSnapTo">
        <xs:attribute name="scale" type="xs:double"/>
        <xs:attribute name="snapToNode" type="typeFlag" default="No"/>
        <xs:attribute name="snapToEnd" type="typeFlag" default="No"/>
        <xs:attribute name="snapToAny" type="typeFlag" default="No"/>
    </xs:complexType>



    <xs:simpleType name="typeStateFlag">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Undefined"/>
            <xs:enumeration value="On"/>
            <xs:enumeration value="Off"/>
            <xs:enumeration value="ForwardOn"/>
            <xs:enumeration value="ForwardOff"/>
            <xs:enumeration value="Break"/>
            <xs:enumeration value="NotWork"/>
        </xs:restriction>
    </xs:simpleType>


    <xs:simpleType name="typeGraphType">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Тип графического объекта]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="Undefined"/>
            <xs:enumeration value="Point"/>
            <xs:enumeration value="Line"/>
            <xs:enumeration value="Area"/>
            <xs:enumeration value="Text"/>
            <xs:enumeration value="Multipoint"/>
        </xs:restriction>
    </xs:simpleType>


    <xs:simpleType name="typeCRS">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Система координат]]>
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="EPSG:3857"/>
            <xs:enumeration value="EPSG:4326"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeListOfIntegers">
        <xs:list itemType="xs:integer"/>
    </xs:simpleType>

    <xs:complexType name="typeSampleImage">
        <xs:all>
            <xs:element name="Width" type="xs:integer"/>
            <xs:element name="Height" type="xs:integer" minOccurs="0"/>
            <xs:element name="Transparent" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="SpaceX" type="xs:integer" minOccurs="0" default="0"/>
            <xs:element name="SpaceY" type="xs:integer" minOccurs="0" default="0"/>
            <xs:element name="Angle" type="xs:double" minOccurs="0" default="0"/>
            <xs:element name="BkColor" type="xs:integer" minOccurs="0" default="16777215"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeBoundingBox">
        <xs:attribute name="CRS" type="typeCRS"/>
        <xs:attribute name="minx" type="xs:double"/>
        <xs:attribute name="miny" type="xs:double"/>
        <xs:attribute name="maxx" type="xs:double"/>
        <xs:attribute name="maxy" type="xs:double"/>
    </xs:complexType>



    <xs:annotation>
        <xs:documentation>
            <![CDATA[List of ZWS requests]]>
        </xs:documentation>
    </xs:annotation>


    <xs:element name="zulu-server">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Command">
                    <xs:complexType>
                        <xs:choice>
                            <xs:element name="GetLayerList" type="typeGetLayerList">
                                <xs:annotation>
                                    <xs:documentation>
                                        <![CDATA[Возвращает список опубликованных слоев]]>
                                    </xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="SelectElemByXY" type="typeSelectElemByXY">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает данные объекта по заданным координатам]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetElemsByID" type="typeGetElemsByID">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает данные объектов слоя по заданному списку ID]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerAddSymbol" type="typeLayerAddSymbol">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Добавляет в слой символьный объект]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="IntersectElemByLayer" type="typeIntersectElemByLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Пересекает объект слоя с объектами другого слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="UpdateElemAttributes" type="typeUpdateElemAttributes">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Обновляет атрибуты объекта слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="SetElemState" type="typeSetElemState">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Устанавливает режим объекта слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="NetworkRecalc" type="typeLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Выполняет переключения на сети в соответствии с состоянием запорной арматуры]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="NetworkAnalyzeSwitch" type="typeNetworkAnalyzeSwitch">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Выполняет анализ заданных переключений на сети]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerTypes" type="typeGetLayerTypes">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает структуру типов слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerBounds" type="typeGetForLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает габариты слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerBaseInfo" type="typeGetLayerBaseInfo">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает описание базы данных слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                          <xs:element name="GetLayerFieldBlobList" type="typeGetLayerFieldBlobList">
                            <xs:annotation>
                              <xs:documentation><![CDATA[Возвращает список файлов, содержащихся в галерее указанного поля]]></xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="DeleteLayerFieldBlobItem" type="typeGetLayerFieldBlobList">
                            <xs:annotation>
                              <xs:documentation><![CDATA[Удаляет файл, содержащихся в галерее указанного поля]]></xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="GetLayerQuickSearchList" type="typeGetForLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список шаблонов слоя для быстрого поиска]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                          <xs:element name="LayerAddRecord" type="typeLayerAddRecord">
                            <xs:annotation>
                              <xs:documentation><![CDATA[Добавляет пустую запись для указанного объекта]]></xs:documentation>
                            </xs:annotation>
                          </xs:element>                          
                          <xs:element name="LayerQuickSearch" type="typeLayerQuickSearch">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Выполняет быстрый поиск для слоя по указанному шаблону]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerQueryByExample" type="typeLayerQueryByExample">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Выполняет запрос к слою]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerTile" type="typeGetLayerTile">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает тайл слоя с заданными параметрами]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerFindConnected" type="typeLayerFindConnected">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список объектов сети, связанных с заданным ID]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerFindConnectedDownstream"
                                type="typeLayerFindConnected">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список объектов сети, связанных с заданным ID по направлению ввода ребер]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerFindConnectedUpstream"
                                type="typeLayerFindConnected">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список объектов сети, связанных с заданным ID против направления ввода ребер]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerFindDisconnected" type="typeLayerFindConnected">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список объектов сети, не связанных с заданным ID]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerFindWay" type="typeLayerFindWay">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Поиск кратчайшего пути по сети слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerFindLoops" type="typeLayerFindWay">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает элементы сети, входящие в кольца графа]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerExecSQL" type="typeLayerExecSQL">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Выполняет SQL запрос к слою]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerThemes" type="typeGetForLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список тематических раскрасок слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerLabels" type="typeGetForLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список вариантов надписей слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerBases" type="typeGetForLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список семантических баз слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerDeleteElement" type="typeLayerDeleteElement">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Удаляет объект слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerExcludeSymbol" type="typeLayerExcludeSymbol">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Исключает из слоя узловой объект, объединяя в один объект два связанных с ними участка]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerInsertSymbol" type="typeLayerInsertSymbol">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Разбивает на два участок сети узловым объектом ]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerMoveElement" type="typeLayerMoveElement">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Перемещает объект слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerAddPolyline" type="typeLayerAddPolyline">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Добавляет в слой линейный объект]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerAddPolygon" type="typeLayerAddPolygon">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Добавляет в слой площадной объект]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerUpdateGeometry" type="typeLayerUpdateGeometry">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[         ]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerIntersectByRadius"
                                type="typeLayerIntersectByRadius">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает данные объектов слоя, попавших в окрестность заданного радиуса]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerIntersectByBox" type="typeLayerIntersectByBox">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает данные объектов слоя, попавших в заданную прямоугольную область]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerIntersectByPolygon"
                                type="typeLayerIntersectByPolygon">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает данные объектов слоя, попавших в область, заданную полигоном]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetZMMapList">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список описателей карт сервера]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetZMMap" type="typeGetZMMap">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает описатель карты с сервера]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="DeleteZMMap" type="typeGetZMMap">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Удаляет описатель карты с сервера]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerGetIncidentElements"
                                type="typeLayerGetIncidentElements">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список объектов, связанных с данным ID]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerUpdateCount" type="typeGetForLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает временную метку слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerReadCustomData" type="typeLayerReadCustomData">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает пользовательские данные слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="TrackingGetLayerList">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список слоев трекинга]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerBatchEdit" type="typeLayerBatchEdit">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Групповые операции редактирования объектов]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerMoveNode" type="typeLayerMoveNode">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Перемещение узла элемента]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerDeleteNode" type="typeLayerDeleteNode">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Удаление узла элемента]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerInsertNode" type="typeLayerInsertNode">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Добавляет новую точку перелома в полилинию или полигон линейного или площадного объекта]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerMoveGroup" type="typeLayerMoveGroup">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Перемещает группу объектов слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerDeleteGroup" type="typeLayerDeleteGroup">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Удаляет группу объектов слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerThemeUpdate" type="typeLayerThemeUpdate">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Обновляет тематические раскраски слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerLabelUpdate" type="typeLayerLabelUpdate">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Обновляет варианты надписей (бирки) слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerLabelUpdateCache"
                                type="typeLayerLabelUpdateCache">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Обновляет варианты надписей (бирки) слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerGetSwitchingNodes"
                                type="typeLayerGetSwitchingNodes">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Поиск отсекающих устройств для заданного объекта сети]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="GetLayerCapabilities" type="typeGetLayerCapabilities">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает набор свойств, которые поддерживает слой]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="LayerLastGeometryChangesDate" type="typeGetForLayer">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает дату и время последнего изменения геометрии слоя]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>                                                      
                            <xs:element name="TrackingRegisterDevice" type="typeTrackingRegisterDevice">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Регистрирует устройство на сервере трекинга]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>

                            <xs:element name="TrackingGetInfoByXY" type="typeTrackingGetInfoByXY">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Получает информацию со слоя трекинга по указанным координатам]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>

                            <xs:element name="TrackingSetPosition" type="typeTrackingSetPosition">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Передаёт информацию о текущем местоположении и времени на сервер]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>

                            <xs:element name="TrackingGetVector" type="typeTrackingGetVector">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает векторные данные слоя трекинга]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>                            
                            
                            <xs:element name="NetToolsTaskRun" type="typeNetToolsTaskRun">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Запускает одну из задач гидравлического расчета]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            
                            <xs:element name="NetToolsTaskTerminate" type="typeNetToolsTaskHandle">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Заверашает задачу гидравлического расчета с заданным идентификатором сессии]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            
                            <xs:element name="NetToolsTaskGetStatus" type="typeNetToolsTaskHandle">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает текущий статус задачи гидравлического расчета с заданным идентификатором сессии]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            
                            <xs:element name="NetToolsTaskStop" type="typeNetToolsTaskHandle">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Прерывает задачу гидравлического расчета с заданным идентификатором сессии]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            
                            <xs:element name="NetToolsTaskGetErrors" type="typeNetToolsTaskHandle">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает список ошибок и предупреждений задачи гидравлического расчета с заданным идентификатором сессии]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            
                            <xs:element name="NetToolsGetSourcesTree" type="typeNetToolsGetSourcesTree">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Возвращает дерево источников инженерной сети]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            
                            <xs:element name="NetToolsCreateNetwork" type="typeNetToolsCreateNetwork">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Создает слой инженерной сети]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>        
                            
                            <xs:element name="NetToolsSelectSubNetwork" type="typeNetToolsSelectSubNetwork">
                                <xs:annotation>
                                    <xs:documentation><![CDATA[Выделяет подсеть в слое инженерной сети]]></xs:documentation>
                                </xs:annotation>
                            </xs:element>        
                            
                        </xs:choice>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
          
          
    
    <xs:complexType name="typeNetToolsCreateNetwork">             
        <xs:all>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="UserName" type="xs:string"/>
            <xs:element name="Path" type="xs:string"/>
            <xs:element name="Model" type="typeNetToolsModelType"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeNetToolsTaskRun">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Model" type="typeNetToolsModelType"/>
            <!--Номер задачи-->
            <!--Тепловая сеть: 1 - наладка, 2 - поверка, 3 - конструкторский, 6 - надежность-->
            <!--Водопровод: 1 - поверка, 2 - конструкторский-->            
            <!--Газовая сеть: 1 - поверка, 2 - конструкторский-->
            <!--Канализация: 1 - поверка, 2 - конструкторский-->
            <xs:element name="Task" type="xs:integer"/>
            <xs:element name="Settings">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Sources" type="typeListOfIntegers"/>                        
                        <!--Тепловая сеть. Учет тепловых потерь. 0 - без учета, 1 - по нормотивным потерям, 2 - по изоляции]]-->
                        <xs:element name="HeatLoss" type="xs:integer"/>
                        <!--Тепловая сеть. Учет утечек]]-->                        
                        <xs:element name="Leaks" type="xs:boolean"/>
                        <!--Тепловая сеть наладка]]-->
                        <!--С учетом открытой ГВС]]-->
                        <xs:element name="DHW" type="xs:boolean"/>          
                        <!--Гашение избыточнокго напора: no - шайбами, yes - соплом]]-->
                        <xs:element name="Nozzle" type="xs:boolean"/>
                        <!--Тепловая сеть поверка]]-->
                        <!--Сопла и шайбы из наладки]]-->
                        <xs:element name="UseAdjusted" type="xs:boolean"/>                                               
                        <!-- Конструкторский для всех сетей]]-->                                                         
                        <xs:element name="SubnetID" type="xs:integer"/>                                               
                    </xs:all>
                </xs:complexType>
            </xs:element>            
        </xs:all>
    </xs:complexType>

    
    <xs:complexType name="typeNetToolsGetSourcesTree">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Model" type="typeNetToolsModelType"/>
            <xs:element name="ElemID" type="xs:integer"/>            
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeNetToolsSelectSubNetwork">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Model" type="typeNetToolsModelType"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeNetToolsTaskHandle">
        <xs:all>
            <xs:element name="TaskHandle" type="xs:string"/>
        </xs:all>
    </xs:complexType>       


    <xs:annotation>
        <xs:documentation>
            <![CDATA[List of ZWS responses]]>
        </xs:documentation>
    </xs:annotation>


    <xs:element name="zwsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element name="GetLayerList" type="typeGetLayerListResponse"/>
                    <xs:element name="SelectElemByXY" type="typeSelectElemByXYResponse"/>
                    <xs:element name="GetElemsByID" type="typeSelectElemByXYResponse"/>
                    <xs:element name="LayerAddSymbol"/>
                    <xs:element name="LayerAddPolygon"/>
                    <xs:element name="LayerAddPolyline"/>
                    <xs:element name="IntersectElemByLayer" type="typeIntersectElemByLayerResponse"/>
                    <xs:element name="UpdateElemAttributes"/>
                    <xs:element name="SetElemState"/>
                    <xs:element name="NetworkRecalc" type="typeNetworkRecalcResponse"/>
                    <xs:element name="NetworkAnalyzeSwitch" type="typeNetworkAnalyzeSwitchResponse"/>
                    <xs:element name="GetLayerTypes" type="typeGetLayerTypesResponse"/>
                    <xs:element name="GetLayerBounds" type="typeGetLayerBoundsResponse"/>
                    <xs:element name="GetLayerBaseInfo" type="typeGetLayerBaseInfoResponse"/>
                    <xs:element name="LayerAddRecord"/>
                    <xs:element name="LayerQueryByExample" type="typeLayerQueryByExampleResponse"/>
                    <xs:element name="LayerFindConnected" type="typeLayerFindConnectedResponse"/>
                    <xs:element name="LayerFindConnectedUpsteram" type="typeLayerFindConnectedResponse"/>
                    <xs:element name="LayerFindConnectedDownsteram" type="typeLayerFindConnectedResponse"/>
                    <xs:element name="LayerFindDisconnected" type="typeLayerFindConnectedResponse"/>
                    <xs:element name="LayerFindWay" type="typeLayerFindConnectedResponse"/>
                    <xs:element name="LayerFindLoops" type="typeLayerFindConnectedResponse"/>
                    <xs:element name="LayerExecSQL" type="typeLayerExecSQLResponse"/>
                    <xs:element name="GetLayerThemes" type="typeGetLayerThemesResponse"/>
                    <xs:element name="GetLayerLabels" type="typeGetLayerLabelsResponse"/>
                    <xs:element name="GetLayerBases" type="typeGetLayerBasesResponse"/>
                    <xs:element name="GetLayerQuickSearchList" type="typeGetLayerQuickSearchListResponse"/>
                    <xs:element name="LayerQuickSearch" type="typeLayerQuickSearchResponse"/>
                    <xs:element name="LayerDeleteElement"/>
                    <xs:element name="LayerMoveElement"/>
                    <xs:element name="LayerIntersectByRadius" type="typeSelectElemByXYResponse"/>
                    <xs:element name="LayerIntersectByBox" type="typeSelectElemByXYResponse"/>
                    <xs:element name="LayerIntersectByPolygon" type="typeSelectElemByXYResponse"/>
                    <xs:element name="GetZMMapList" type="typeGetZMMapListResponse"/>
                    <xs:element name="DeleteZMMap"/>
                    <xs:element name="LayerGetIncidentElements" type="typeIntersectElemByLayerResponse"/>
                    <xs:element name="TrackingGetLayerList" type="typeGetLayerListResponse"/>
                    <xs:element name="LayerBatchEdit" type="typeLayerBatchEditResponse"/>
                    <xs:element name="LayerUpdateGeometry"/>
                    <xs:element name="LayerMoveNode"/>
                    <xs:element name="LayerDeleteNode"/>
                    <xs:element name="LayerInsertNode"/>
                    <xs:element name="LayerGetSwitchingNodes" type="typeIntersectElemByLayerResponse"/>
                    <xs:element name="GetLayerCapabilities" type="typeGetLayerCapabilitiesResponse"/>
                    <xs:element name="LayerLastGeometryChangesDate" type="typeLayerLastGeometryChangesDateResponse"/>
                    <xs:element name="TrackingRegisterDevice"/>
                    <xs:element name="TrackingSetPosition"/>
                    <xs:element name="TrackingGetInfoByXY" type="typeTrackingGetInfoByXYResponse"/>
                    <xs:element name="TrackingGetVector" type="typeTrackingGetVectorResponse"/>
                    <xs:element name="GetLayerFieldBlobList" type="typeGetLayerFieldBlobListResponse"/>
                    <xs:element name="DeleteLayerFieldBlobList"/>
                    <xs:element name="NetToolsTaskRun" type="typeNetToolsTaskRunResponse"/>                        
                    <xs:element name="NetToolsTaskTerminate" type = "typeNetToolsResponse"/>                        
                    <xs:element name="NetToolsTaskGetStatus" type="typeNetToolsTaskGetStatusResponse"/>                                            
                    <xs:element name="NetToolsTaskStop" type = "typeNetToolsResponse"/>                       
                    <xs:element name="NetToolsTaskGetErrors" type="typeNetToolsTaskGetErrorsResponse"/>                   
                    <xs:element name="NetToolsGetSourcesTree" type="typeNetToolsGetSourcesTreeResponse"/>                       
                    <xs:element name="NetToolsCreateNetwork" type="typeNetToolsCreateNetworkResponse"/>                    
                    <xs:element name="NetToolsSelectSubNetwork" type = "typeNetToolsResponse"/>                                            
                </xs:choice>
                <xs:element name="RetVal" type="xs:integer"/>
                <xs:element name="ErrorString" type="xs:string" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <xs:complexType name="typeNetToolsSourceNode">             
        <xs:all>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="ID" type="xs:integer"/>            
            <xs:element name="Node" type="typeNetToolsSourceNode"/>
        </xs:all>
    </xs:complexType>
    
    
    <xs:complexType name="typeNetToolsGetSourcesTreeResponse">                                  
        <xs:sequence>
            <xs:element name="Node" type="typeNetToolsSourceNode"/>            
        </xs:sequence>
    </xs:complexType>
    
    
    <xs:complexType name="typeNetToolsTaskRunResponse">
        <xs:all>
            <xs:element name="TaskHandle" type="xs:string" minOccurs="0"/>
         </xs:all>
    </xs:complexType>
           
    
    <xs:complexType name="typeNetToolsCreateNetworkResponse">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>            
        </xs:all>
    </xs:complexType>
    
    
    
    <xs:complexType name="typeNetToolsTaskGetStatusResponse">
        <xs:all>
            <xs:element name="TaskHandle" type="xs:string"/>
            <xs:element name="Status" type="typeNetToolsTaskStatusType"/>
        </xs:all>
    </xs:complexType>
    
    
    <xs:complexType name="typeNetToolsTaskGetErrorsResponse">
        <xs:all>
            <xs:element name="TaskHandle" type="xs:string" minOccurs="0"/>
            <xs:element name="Errors" minOccurs="0">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Count"  type="xs:integer"/>
                        <xs:element name="Err">                          
                        <xs:complexType>                            
                            <xs:sequence>
                                <xs:element name="Code" type="xs:integer"/>
                                <xs:element name="ElemID" type="xs:integer"/>
                                <xs:element name="Type" type="xs:integer"/>
                                <xs:element name="Param1" type="xs:double"/>
                                <xs:element name="Param2" type="xs:double"/>
                                <xs:element name="Name" type="xs:string"/>
                                <xs:element name="Text" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>
                        </xs:element>
                    </xs:all>                    
                </xs:complexType>
            </xs:element>
            
        </xs:all>
    </xs:complexType>
    
     
    
       
    <xs:complexType name="typeNetToolsResponse">
        <xs:all>
            <xs:element name="TaskHandle" type="xs:string"/>            
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeGeometry">
        <xs:choice>
            <xs:element name="KML">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Placemark" type="kml:PlacemarkType"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
            <xs:element name="KMLDOC" type="xs:string"/>
        </xs:choice>
    </xs:complexType>


    <xs:complexType name="typeGeometryLinks">
        <xs:sequence>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:4326"/>
            <xs:element name="coordinates" type="kml:CoordinatesType"/>
        </xs:sequence>
    </xs:complexType>


  <xs:complexType name="typeBook">    
    <xs:sequence>      
      <xs:element name="Record" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>          
          <xs:all>
            <xs:element name="Name" minOccurs="1" maxOccurs="1" type="xs:string"/>
            <xs:element name="Value" minOccurs="1" maxOccurs="1" type="xs:string"/>                                      
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Name" type="xs:string"/>
  </xs:complexType>



  <xs:complexType name="typeRecords">
        <xs:sequence>
            <xs:element name="BaseID" type="xs:integer" minOccurs="0" maxOccurs="1"/>
            <xs:element name="UserName" type="xs:string" minOccurs="0" maxOccurs="1"/>
            <xs:element name="QueryName" type="xs:string" minOccurs="0" maxOccurs="1"/>
            <xs:element name="Record" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Field" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="UserName" type="xs:string"/>
                                    <xs:element name="Type" type="typeFieldType"/>
                                    <xs:element name="Key" type="xs:boolean" minOccurs="0"/>
                                    <xs:element name="Readonly" type="xs:boolean" minOccurs="0"/>
                                    <xs:element name="Value" type="xs:string"/>
                                    <xs:element name="URL" type="xs:string" minOccurs="0"/>
                                    <xs:element name="Book" type="typeBook" minOccurs="0" maxOccurs="1"/>
                                    <xs:element name="Mandatory" type="xs:boolean" minOccurs="0"/>
                                    <xs:element name="Group" type="xs:string" minOccurs="0"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                 </xs:complexType>
             </xs:element>
        </xs:sequence>
    </xs:complexType>


    <xs:complexType name="typeGetZMMapListResponse">
        <xs:annotation>
            <xs:documentation>
                <![CDATA[Список карт, доступных на сервере]]>
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Map" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Name" type="xs:string"/>
                        <xs:element name="Id" type="xs:string"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="typeGetLayerListResponse">
        <xs:sequence>
            <xs:element name="Layer" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Name" type="xs:string"/>
                        <xs:element name="Title" type="xs:string"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>




    <xs:complexType name="typeLayerBatchEditResponse">
        <xs:sequence>
            <xs:element name="Added">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Layer" type="xs:string"/>
                                    <xs:element name="ID" type="xs:integer"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Deleted">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Layer" type="xs:string"/>
                                    <xs:element name="ID" type="xs:integer"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Modified">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Layer" type="xs:string"/>
                                    <xs:element name="ID" type="xs:integer"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>


    <xs:complexType name="typeGetLayerQuickSearchListResponse">
        <xs:sequence>
            <xs:element name="Layer" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Templates" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Template" type="xs:string" minOccurs="0"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>





    <xs:complexType name="typeTrackingGetInfoByXYResponse">
        <xs:sequence>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Info" type="xs:string"/>
                        <xs:element name="Geometry" type="typeGeometry"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>







    <xs:complexType name="typeSelectElemByXY">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="Scale" type="xs:double"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="GraphType" type="typeGraphType" minOccurs="0" default="Undefined"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="GeometryLinks" type="typeCRS" minOccurs="0" default="EPSG:4326"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="BookAsReference" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Hidden" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Modes" type="kml:CoordinatesType"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeSelectElemByXYResponse">
        <xs:sequence>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ElemID" type="xs:integer"/>
                        <xs:element name="TypeID" type="xs:integer"/>
                        <xs:element name="ModeNum" type="typeModeNum"/>
                        <xs:element name="GraphType" type="typeGraphType"/>
                        <xs:element name="Modes">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Mode" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                            <xs:all>
                                                <xs:element name="Index" type="xs:integer"/>
                                                <xs:element name="Title" type="xs:string"/>
                                                <xs:element name="SwitchState" type="typeStateFlag"
                                                  minOccurs="0"/>
                                            </xs:all>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Queries">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                            <xs:all>
                                                <xs:element name="BaseID" type="xs:integer"/>
                                                <xs:element name="Name" type="xs:string"/>
                                            </xs:all>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Records" type="typeRecords"/>
                        <xs:element name="Geometry" type="typeGeometry"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>


    <xs:complexType name="typeGetElemsByID">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="GeometryLinks" type="typeCRS" minOccurs="0" default="EPSG:4326"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="BookAsReference" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer" minOccurs="0"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerList">
        <xs:all>
            <xs:element name="Bases" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Themes" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Labels" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Types" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeIntersectElemByLayer">
        <xs:all>
            <xs:element name="Layer" type="xs:string"/>
            <xs:element name="Layer1" type="xs:string"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
            <xs:element name="Relation" type="typeSpatialOperator" minOccurs="0" default="Within"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeIntersectElemByLayerResponse">
        <xs:all>
            <xs:element name="Elements">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="ElemID" type="xs:integer"/>
                                    <xs:element name="Keys" type="typeListOfIntegers"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>



    <xs:complexType name="typeUpdateElemAttributes">
        <xs:sequence>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="QueryName" type="xs:string" minOccurs="0" maxOccurs="1"/>
                        <xs:element name="Key" minOccurs="1" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="Value" type="xs:string"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Field" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="Value" type="xs:string"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>


    <xs:complexType name="typeSetElemState">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
            <xs:element name="Type" type="xs:integer" minOccurs="0">
                <xs:annotation>
                    <xs:documentation><![CDATA[Номер типа в структуре слоя]]></xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Mode" type="xs:integer">
                <xs:annotation>
                    <xs:documentation><![CDATA[Порядковый номер режима в структуре слоя]]></xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeNetworkRecalcResponse">
        <xs:all>
            <xs:element name="Count" type="xs:integer"/>
            <xs:element name="Keys" type="typeListOfIntegers" minOccurs="0"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeNetworkAnalyzeSwitch">
        <xs:sequence>
            <xs:element name="Layer" type="typeLayer" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Sections" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="AllNodes" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Element" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ElemID" type="xs:integer"/>
                        <xs:element name="Mode" type="xs:integer"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
            <xs:element name="State" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ElemID" type="xs:integer"/>
                        <xs:element name="SwitchState" type="typeStateFlag"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>


    <xs:complexType name="typeNetworkAnalyzeSwitchResponse">
        <xs:all>
            <xs:element name="Count" type="xs:integer"/>
            <xs:element name="Elements" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Element">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="ElemID" type="xs:integer"/>
                                    <xs:element name="State" type="typeStateFlag"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerTypes">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerTypesResponse">
        <xs:all>
            <xs:element name="Types">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Type" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Id" type="xs:integer"/>
                                    <xs:element name="Title" type="xs:string"/>
                                    <xs:element name="GraphType" type="typeGraphType"/>
                                    <xs:element name="Tag" type="xs:integer"/>
                                    <xs:element name="Modes">
                                        <xs:complexType>
                                            <xs:sequence>
                                                <xs:element name="Mode" minOccurs="0"
                                                  maxOccurs="unbounded">
                                                  <xs:complexType>
                                                  <xs:all>
                                                  <xs:element name="Index" type="xs:integer"/>
                                                  <xs:element name="Title" type="xs:string"/>
                                                  <xs:element name="SwitchState"
                                                  type="typeStateFlag" minOccurs="0"/>
                                                  <xs:element name="Image" type="xs:string"
                                                  minOccurs="0"/>
                                                  </xs:all>
                                                  </xs:complexType>
                                                </xs:element>
                                            </xs:sequence>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>




    <xs:complexType name="typeGetLayerCapabilities">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerCapabilitiesResponse">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Capabilities">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="IdSearch" type="typeFlag" minOccurs="1" maxOccurs="1" default="No"/>
                         <xs:element name="Editor">
                           <xs:complexType>
                             <xs:all>
                               <xs:element name="WebNoEdit" type="typeFlag" minOccurs="1" maxOccurs="1" default="No"/>
                               <xs:element name="MobileGPSOnly" type="typeFlag" minOccurs="1" maxOccurs="1" default="No"/>
                            </xs:all>
                          </xs:complexType>
                        </xs:element>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerLastGeometryChangesDateResponse">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Date" type="xs:dateTime"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerBoundsResponse">
        <xs:all>
            <xs:element name="Bounds">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="BoundingBox" type="typeBoundingBox" maxOccurs="unbounded"
                        />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerBaseInfo">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="TypeID" type="xs:integer" minOccurs="0"/>
            <xs:element name="BaseID" type="xs:integer" minOccurs="0"/>
            <xs:element name="Queries" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="Forms" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerBaseInfoResponse">
        <xs:all>
            <xs:element name="Base">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="BaseID" type="xs:integer"/>
                        <xs:element name="UserName" type="xs:string"/>
                        <xs:element name="Queries">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Query">
                                        <xs:complexType>
                                            <xs:sequence>
                                                <xs:element name="Name" type="xs:string"
                                                  minOccurs="1" maxOccurs="1"/>
                                                <xs:element name="Fields">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="Field">
                                                  <xs:complexType>
                                                  <xs:all>
                                                  <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
                                                  <xs:element name="UserName" type="xs:string" minOccurs="1" maxOccurs="1"/>
                                                  <xs:element name="Type" type="typeFieldType" minOccurs="1" maxOccurs="1"/>
                                                  <xs:element name="Book" type="typeBook" minOccurs="0" maxOccurs="1"/>
                                                  </xs:all>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>
                                            </xs:sequence>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Forms">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Form">
                                        <xs:complexType>
                                            <xs:sequence>
                                                <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
                                                <xs:element name="QueryName" type="xs:string" minOccurs="1" maxOccurs="1"/>
                                                <xs:element name="Fields">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="Field">
                                                  <xs:complexType>
                                                  <xs:all>
                                                    <xs:element name="Name" type="xs:string"/>
                                                    <xs:element name="UserName" type="xs:string"/>
                                                    <xs:element name="Type" type="typeFieldType"/>
                                                    <xs:element name="Value" type="xs:string" minOccurs="0" maxOccurs="1"/>
                                                    <xs:element name="Book" type="typeBook" minOccurs="0" maxOccurs="1"/>
                                                  </xs:all>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>
                                            </xs:sequence>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerQuickSearch">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="MaxCount" type="xs:integer" minOccurs="0"/>
            <xs:element name="Skip" type="xs:integer" minOccurs="0"/>
            <xs:element name="Template" type="xs:string"/>
            <xs:element name="Query" type="xs:string"/>
            <xs:element name="BookAsReference" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>



  <xs:complexType name="typeLayerAddRecord">
    <xs:all>
      <xs:element name="Layer" type="typeLayer"/>
      <xs:element name="TypeID" type="xs:integer"/>
      <xs:element name="BaseID" type="xs:integer"/>
      <xs:element name="ElemID" type="xs:integer"/>
      <xs:element name="QueryName" type="xs:string"/>
    </xs:all>
  </xs:complexType>


  <xs:complexType name="typeLayerQueryByExample">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="MaxCount" type="xs:integer" minOccurs="0"/>
            <xs:element name="Skip" type="xs:integer" minOccurs="0"/>
            <xs:element name="TypeID" type="xs:integer" minOccurs="0"/>
            <xs:element name="BaseID" type="xs:integer" minOccurs="0"/>
            <xs:element name="QueryName" type="xs:string" minOccurs="0"/>
            <xs:element name="BookAsReference" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="IgnoreCase" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Fuzzy" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Fields">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Field" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="Value" type="xs:string"/>
                                    <xs:element name="Book" type="typeBook" minOccurs="0" maxOccurs="1"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerQueryByExampleResponse">
        <xs:all>
            <xs:element name="BaseID" type="xs:integer"/>
            <xs:element name="UserName" type="xs:string"/>
            <xs:element name="Records" type="typeRecords"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerQuickSearchResponse">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Records" type="typeRecords"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerTile">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="x" type="xs:integer"/>
            <xs:element name="y" type="xs:integer"/>
            <xs:element name="z" type="xs:integer"/>
            <xs:element name="Antialiasing" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ShowDirection" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Themes" type="typeListOfIntegers"/>
            <xs:element name="Labels" type="typeListOfIntegers"/>
            <xs:element name="Hidden" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="Modes" type="kml:CoordinatesType"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerFindConnected">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="FlagID" type="typeListOfIntegers"/>
            <xs:element name="IgnoreState" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerFindConnectedResponse">
        <xs:all>
            <xs:element name="Keys" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerFindWay">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="FlagID" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerExecSQL">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Query" type="xs:string"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerExecSQLResponse">
        <xs:all>
            <xs:element name="Records" type="typeRecords"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerThemesResponse">
        <xs:all>
            <xs:element name="Themes">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Theme" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="UserName" type="xs:string"/>
                                    <xs:element name="ID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeGetForLayer">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
        </xs:all>
    </xs:complexType>


  <xs:complexType name="typeGetLayerFieldBlobList">
    <xs:all>
      <xs:element name="Layer" type="typeLayer"/>
      <xs:element name="Keys" minOccurs="1" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Key" minOccurs="1" maxOccurs="unbounded">
              <xs:complexType>
                <xs:all>                  
                  <xs:element name="Name" minOccurs="1" maxOccurs="1" type="xs:string"/>
                  <xs:element name="Value"  minOccurs="1" maxOccurs="1" type="xs:string"/>
                </xs:all>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TypeID" type="xs:integer"/>
      <xs:element name="BaseID" type="xs:integer"/>
      <xs:element name="QueryName" type="xs:string"/>
      <xs:element name="Field"  minOccurs="1" maxOccurs="1" type="xs:string"/>
    </xs:all>
  </xs:complexType>

  
  <xs:complexType name="typeGetLayerFieldBlobListResponse">        
    <xs:sequence>
      <xs:element name="BlobItem" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:all>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="FullName" type="xs:string"/>
            <xs:element name="URL" type="xs:string"/>          
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:sequence>      
  </xs:complexType>


  <xs:complexType name="typeGetLayerLabelsResponse">
        <xs:all>
            <xs:element name="LabelLayers">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="LabelLayer" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="UserName" type="xs:string"/>
                                    <xs:element name="ID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeGetLayerBasesResponse">
        <xs:all>
            <xs:element name="Bases">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="typeGetLayerBaseInfoResponse" minOccurs="0"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeTrackingGetVectorResponse">
        <xs:all>
            <xs:element name="Geometry" type="typeGeometry"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerGetIncidentElements">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerReadCustomData">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Name" type="xs:string"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerDeleteElement">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerExcludeSymbol">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerInsertSymbol">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="Scale" type="xs:double"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="TypeID" type="xs:integer"/>
            <xs:element name="ModeNum" type="typeModeNum"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerMoveElement">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="X1" type="xs:double"/>
            <xs:element name="Y1" type="xs:double"/>
            <xs:element name="X2" type="xs:double"/>
            <xs:element name="Y2" type="xs:double"/>
            <xs:element name="Duplicate" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="CopyData" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="KeepConnected" type="typeFlag" minOccurs="0" default="Yes"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerMoveGroup">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="X1" type="xs:double"/>
            <xs:element name="Y1" type="xs:double"/>
            <xs:element name="X2" type="xs:double"/>
            <xs:element name="Y2" type="xs:double"/>
            <xs:element name="Duplicate" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="CopyData" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="KeepConnected" type="typeFlag" minOccurs="0" default="Yes"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerThemeUpdate">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ThemeID" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerLabelUpdate">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="LabelLayerID" type="typeListOfIntegers"/>
            <xs:element name="Overwrite" type="typeFlag" minOccurs="0" default="No"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerLabelUpdateCache">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="LabelLayerID" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerDeleteGroup">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="typeListOfIntegers"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerAddSymbol">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="TypeID" type="xs:integer"/>
            <xs:element name="ModeNum" type="typeModeNum"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="Angle" type="xs:double" minOccurs="0" default="0"/>
            <xs:element name="SnapTo" type="typeSnapTo"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerAddPolyline">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="TypeID" type="xs:integer"/>
            <xs:element name="ModeNum" type="typeModeNum"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="coordinates" type="kml:CoordinatesType"/>
            <xs:element name="SnapTo" type="typeSnapTo"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerAddPolygon">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="TypeID" type="xs:integer"/>
            <xs:element name="ModeNum" type="typeModeNum"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="coordinates" type="kml:CoordinatesType"/>
            <xs:element name="SnapTo" type="typeSnapTo"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerUpdateGeometry">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="coordinates" type="kml:CoordinatesType"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerMoveNode">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="SegmentIdx" type="typeSegmentIdx"/>
            <xs:element name="NodeIdx" type="typeNodeIdx"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="KeepConnected" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="SnapTo" type="typeSnapTo"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerInsertNode">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="SegmentIdx" type="typeSegmentIdx"/>
            <xs:element name="NodeIdx" type="typeNodeIdx"/>
            <xs:element name="CRS" type="typeCRS" minOccurs="0" maxOccurs="1" default="EPSG:3857"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeLayerDeleteNode">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="SegmentIdx" type="typeSegmentIdx"/>
            <xs:element name="NodeIdx" type="typeNodeIdx"/>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerGetSwitchingNodes">
        <xs:sequence>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="ElemID" type="xs:integer"/>
            <xs:element name="Isolate" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="State" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:all>
                        <xs:element name="ElemID" type="xs:integer"/>
                        <xs:element name="SwitchState" type="typeStateFlag"/>
                    </xs:all>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>


    <xs:complexType name="typeLayerBatchEdit">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="LayerAddSymbol" type="typeLayerAddSymbol" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerAddPolyline" type="typeLayerAddPolyline" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerAddPolygon" type="typeLayerAddPolygon" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerMoveNode" type="typeLayerMoveNode" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerDeleteNode" type="typeLayerDeleteNode" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerInsertNode" type="typeLayerInsertNode" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerMoveElement" type="typeLayerMoveElement" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerDeleteElement" type="typeLayerDeleteElement" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerExcludeSymbol" type="typeLayerExcludeSymbol" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerInsertSymbol" type="typeLayerInsertSymbol" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerMoveGroup" type="typeLayerMoveGroup" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="LayerDeleteGroup" type="typeLayerDeleteGroup" minOccurs="0"
                maxOccurs="unbounded"/>
        </xs:choice>
    </xs:complexType>


    <xs:complexType name="typeLayerIntersectByRadius">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="R" type="xs:double"/>
            <xs:element name="Relation" type="typeSpatialOperator" minOccurs="0"
                default="Intersects"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="BookAsReference" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerIntersectByBox">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="BoundingBox" type="typeBoundingBox"/>
            <xs:element name="Relation" type="typeSpatialOperator" minOccurs="0"
                default="Intersects"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="BookAsReference" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeLayerIntersectByPolygon">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="coordinates" type="kml:CoordinatesType"/>
            <xs:element name="Relation" type="typeSpatialOperator" minOccurs="0"
                default="Intersects"/>
            <xs:element name="Geometry" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Attr" type="typeFlag" minOccurs="0" default="Yes"/>
            <xs:element name="BookAsReference" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="ModeImage" type="typeSampleImage" minOccurs="0"/>
            <xs:element name="QueryList" type="typeFlag" minOccurs="0" default="No"/>
            <xs:element name="Queries" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Query" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="BaseID" type="xs:integer"/>
                                    <xs:element name="Name" type="xs:string"/>
                                    <xs:element name="TypeID" type="xs:integer"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeGetZMMap">
        <xs:all>
            <xs:element name="Id" type="xs:string" minOccurs="1" maxOccurs="1"/>
        </xs:all>
    </xs:complexType>





    <xs:complexType name="typeTrackingRegisterDevice">
        <xs:all>
            <xs:element name="Layer" type="typeLayer">
                <xs:annotation>
                    <xs:documentation>
                        <![CDATA[Слой трекинга для регистрации]]>
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DeviceID" type="xs:integer">
                <xs:annotation>
                    <xs:documentation>
                        <![CDATA[ID устройства]]>
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DeviceDescription" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        <![CDATA[Описание устройства]]>
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeTrackingGetInfoByXY">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Filter">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Time">
                            <xs:complexType>
                                <xs:attribute name="begin" type="xs:string" />
                                <xs:attribute name="end" type="xs:string" />
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="X" type="xs:double"/>
            <xs:element name="Y" type="xs:double"/>
            <xs:element name="CRS" type="typeCRS"/>
            <xs:element name="Scale" type="xs:double"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="typeTrackingSetPosition">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="DeviceID" type="xs:double"/>
            <xs:element name="Locations" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Location" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:all>
                                    <xs:element name="Lat" type="xs:double"/>
                                    <xs:element name="Lon" type="xs:double"/>
                                    <xs:element name="Alt" type="xs:double"/>
                                    <xs:element name="Speed" type="xs:double"/>
                                    <xs:element name="Bearing" type="xs:double"/>
                                    <xs:element name="Time" type="xs:string"/>
                                </xs:all>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


    <xs:complexType name="typeTrackingGetVector">
        <xs:all>
            <xs:element name="Layer" type="typeLayer"/>
            <xs:element name="Filter">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Time">
                            <xs:complexType>
                                <xs:attribute name="begin" type="xs:string" />
                                <xs:attribute name="end" type="xs:string" />
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>


</xs:schema>
