text:
package com.suscipio_solutions.consecro_mud.Items.BasicTech;
import com.suscipio_solutions.consecro_mud.Common.interfaces.CMMsg;
import com.suscipio_solutions.consecro_mud.Items.interfaces.Armor;
import com.suscipio_solutions.consecro_mud.Items.interfaces.RawMaterial;
import com.suscipio_solutions.consecro_mud.Items.interfaces.Wearable;
import com.suscipio_solutions.consecro_mud.Libraries.interfaces.GenericBuilder;
import com.suscipio_solutions.consecro_mud.MOBS.interfaces.MOB;
import com.suscipio_solutions.consecro_mud.core.CMClass;
import com.suscipio_solutions.consecro_mud.core.CMLib;
import com.suscipio_solutions.consecro_mud.core.CMProps;
import com.suscipio_solutions.consecro_mud.core.CMath;
import com.suscipio_solutions.consecro_mud.core.interfaces.Environmental;
import com.suscipio_solutions.consecro_mud.core.interfaces.ItemPossessor;
import com.suscipio_solutions.consecro_mud.core.interfaces.Physical;
import com.suscipio_solutions.consecro_mud.core.interfaces.Tickable;

public class GenTickerShield extends StdElecItem implements Armor
{

	@Override public String ID(){	return "GenTickerShield";}

	short layer=0;
	short layerAttributes=0;
	String readableText="";

	public GenTickerShield()
	{
		super();
		setName("a personal field generator");
		basePhyStats.setWeight(2);
		setDisplayText("a personal field generator sits here.");
		setDescription("");
		baseGoldValue=2500;
		basePhyStats().setLevel(1);
		recoverPhyStats();
		setMaterial(RawMaterial.RESOURCE_STEEL);
		super.activate(true);
		super.setRawProperLocationBitmap(Wearable.WORN_ABOUT_BODY);
		super.setPowerCapacity(100);
		super.setPowerRemaining(100);
	}

	protected String fieldOnStr(MOB viewerM) { return "A field surrounds <O-NAME>."; }

	protected String fieldDeadStr(MOB viewerM) { return "The around <S-NAME> flickers and dies out as <S-HE-SHE> fade(s) back into view."; }

	@Override public TechType getTechType() { return TechType.PERSONAL_SHIELD; }

	@Override
	public void setOwner(ItemPossessor owner)
	{
		final ItemPossessor prevOwner=super.owner;
		super.setOwner(owner);
		if((prevOwner != owner)&&(owner!=null))
		{
			if(!CMLib.threads().isTicking(this, Tickable.TICKID_ELECTRONICS))
				CMLib.threads().startTickDown(this, Tickable.TICKID_ELECTRONICS, 1);
		}
	}

	@Override
	public boolean tick(Tickable ticking, int tickID)
	{
		if(!super.tick(ticking, tickID))
			return false;
		if(activated() && (tickID==Tickable.TICKID_ELECTRONICS))
		{
			if(!amWearingAt(Wearable.IN_INVENTORY))
			setPowerRemaining(powerRemaining()-1);
			if(powerRemaining()<=0)
			{
				setPowerRemaining(0);
				if(owner() instanceof MOB)
				{
					final MOB mob=(MOB)owner();
					final CMMsg msg=CMClass.getMsg(mob, this, null,CMMsg.MSG_OK_VISUAL,CMMsg.TYP_DEACTIVATE|CMMsg.MASK_ALWAYS,CMMsg.MSG_OK_VISUAL,fieldDeadStr(mob));
					if(mob.location()!=null)
						mob.location().send(mob, msg);
				}
				else
					activate(false);
			}
		}
		return !amDestroyed();
	}

	@Override
	public boolean okMessage(Environmental myHost, CMMsg msg)
	{
		if(!super.okMessage(myHost, msg))
			return false;
		if(msg.amITarget(owner()) && (owner() instanceof MOB))
		{
			final MOB mob=(MOB)owner();
			switch(msg.targetMinor())
			{
			case CMMsg.TYP_REMOVE:
			case CMMsg.TYP_DROP:
				if(activated())
					msg.addTrailerMsg(CMClass.getMsg(mob, this, null,CMMsg.MSG_OK_VISUAL,CMMsg.TYP_DEACTIVATE|CMMsg.MASK_ALWAYS,CMMsg.MSG_OK_VISUAL,fieldDeadStr(msg.source())));
				break;
			}
		}
		return true;
	}

	@Override
	public SizeDeviation getSizingDeviation(MOB mob)
	{
		return SizeDeviation.FITS;
	}

	@Override
	public void executeMsg(Environmental host, CMMsg msg)
	{
		if(msg.amITarget(this))
		{
			switch(msg.targetMinor())
			{
			case CMMsg.TYP_LOOK:
				super.executeMsg(host, msg);
				if(CMLib.flags().canBeSeenBy(this, msg.source()))
				{
					msg.source().tell(L("@x1 is currently @x2 and is at @x3% power.",name(),(activated()?"activated":"deactivated"),""+Math.round(CMath.div(powerRemaining(),powerCapacity())*100.0)));
				}
				return;
			case CMMsg.TYP_ACTIVATE:
			{
				if((msg.source().location()!=null)&&(!CMath.bset(msg.targetMajor(), CMMsg.MASK_CNTRLMSG)))
					msg.source().location().show(msg.source(), this, owner(), CMMsg.MSG_OK_VISUAL, fieldOnStr(null));
				this.activate(true);
				final Physical P=owner();
				if(P!=null)
				{
					P.recoverPhyStats();
					if(P instanceof MOB)
					{
						((MOB)P).recoverCharStats();
						((MOB)P).recoverMaxState();
					}
				}
				break;
			}
			case CMMsg.TYP_DEACTIVATE:
			{
				if((msg.source().location()!=null)&&(!CMath.bset(msg.targetMajor(), CMMsg.MASK_CNTRLMSG)))
					msg.source().location().show(msg.source(), this, owner(), CMMsg.MSG_OK_VISUAL, fieldDeadStr(null));
				this.activate(false);
				final Physical P=owner();
				if(P!=null)
				{
					P.recoverPhyStats();
					if(P instanceof MOB)
					{
						((MOB)P).recoverCharStats();
						((MOB)P).recoverMaxState();
					}
				}
				break;
			}
			}
		}
		else if(msg.amITarget(owner()) && (owner() instanceof MOB) && (!amWearingAt(Wearable.IN_INVENTORY)))
		{
			switch(msg.targetMinor())
			{
			case CMMsg.TYP_LOOK:
				super.executeMsg(host, msg);
				if(CMLib.flags().canBeSeenBy(owner(), msg.source()) &&(activated())&&(powerRemaining()>0))
					msg.source().tell(msg.source(),this,owner(),fieldOnStr(msg.source()));
				return;
			}
		}
		super.executeMsg(host, msg);
	}

	@Override public short getClothingLayer(){return layer;}
	@Override public void setClothingLayer(short newLayer){layer=newLayer;}
	@Override public short getLayerAttributes(){return layerAttributes;}
	@Override public void setLayerAttributes(short newAttributes){layerAttributes=newAttributes;}

	@Override
	public boolean canWear(MOB mob, long where)
	{
		if(where==0) return (whereCantWear(mob)==0);
		if((rawProperLocationBitmap()&where)!=where)
			return false;
		return mob.freeWearPositions(where,getClothingLayer(),getLayerAttributes())>0;
	}

	@Override public boolean isGeneric(){return true;}

	@Override
	public String text()
	{
		return CMLib.coffeeMaker().getPropertiesStr(this,false);
	}

	@Override public String readableText(){return readableText;}
	@Override public void setReadableText(String text){readableText=text;}

	@Override
	public void setMiscText(String newText)
	{
		miscText="";
		CMLib.coffeeMaker().setPropertiesStr(this,newText,false);
		recoverPhyStats();
	}

	private final static String[] MYCODES={"POWERCAP","ACTIVATED","POWERREM","MANUFACTURER","LAYER","LAYERATTRIB"};
	@Override
	public String getStat(String code)
	{
		if(CMLib.coffeeMaker().getGenItemCodeNum(code)>=0)
			return CMLib.coffeeMaker().getGenItemStat(this,code);
		switch(getCodeNum(code))
		{
		case 0: return ""+powerCapacity();
		case 1: return ""+activated();
		case 2: return ""+powerRemaining();
		case 3: return ""+getManufacturerName();
		case 4: return ""+getClothingLayer();
		case 5: return ""+getLayerAttributes();
		default:
			return CMProps.getStatCodeExtensionValue(getStatCodes(), xtraValues, code);
		}
	}
	@Override
	public void setStat(String code, String val)
	{
		if(CMLib.coffeeMaker().getGenItemCodeNum(code)>=0)
			CMLib.coffeeMaker().setGenItemStat(this,code,val);
		else
		switch(getCodeNum(code))
		{
		case 0: setPowerCapacity(CMath.s_parseLongExpression(val)); break;
		case 1: activate(CMath.s_bool(val)); break;
		case 2: setPowerRemaining(CMath.s_parseLongExpression(val)); break;
		case 3: setManufacturerName(val); break;
		case 4: setClothingLayer((short)CMath.s_parseIntExpression(val)); break;
		case 5: setLayerAttributes((short)CMath.s_parseListLongExpression(Armor.LAYERMASK_DESCS,val)); break;
		default:
			CMProps.setStatCodeExtensionValue(getStatCodes(), xtraValues, code, val);
			break;
		}
	}
	@Override
	protected int getCodeNum(String code)
	{
		for(int i=0;i<MYCODES.length;i++)
			if(code.equalsIgnoreCase(MYCODES[i])) return i;
		return -1;
	}
	private static String[] codes=null;
	@Override
	public String[] getStatCodes()
	{
		if(codes!=null) return codes;
		final String[] MYCODES=CMProps.getStatCodesList(GenTickerShield.MYCODES,this);
		final String[] superCodes=GenericBuilder.GENITEMCODES;
		codes=new String[superCodes.length+MYCODES.length];
		int i=0;
		for(;i<superCodes.length;i++)
			codes[i]=superCodes[i];
		for(int x=0;x<MYCODES.length;i++,x++)
			codes[i]=MYCODES[x];
		return codes;
	}
	@Override
	public boolean sameAs(Environmental E)
	{
		if(!(E instanceof GenTickerShield)) return false;
		final String[] theCodes=getStatCodes();
		for(int i=0;i<theCodes.length;i++)
			if(!E.getStat(theCodes[i]).equals(getStat(theCodes[i])))
				return false;
		return true;
	}
}


text:
<?php

namespace Tonis\ErrorHandler;

use Monolog\Handler\TestHandler;
use Monolog\Logger;
use Zend\Diactoros\Response;
use Zend\Diactoros\ServerRequestFactory;

/**
 * @covers \Tonis\ErrorHandler\ErrorHandler
 */
class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
{
    public function testInvokeProxiesToLogger()
    {
        $ex       = new \RuntimeException('foo');
        $test     = new TestHandler();
        $request  = ServerRequestFactory::fromGlobals();
        $response = new Response();
        $logger   = new Logger('default', [$test]);
        $error    = new ErrorHandler($logger);

        $response = $error(
            $ex,
            $request,
            $response,
            function ($request, $response) {
                $response->getBody()->write('complete');
                return $response;
            }
        );

        $this->assertSame('complete', $response->getBody()->__toString());
        $this->assertCount(1, $test->getRecords());
    }
}

redpajama_set_name: RedPajamaGithub


text:
//
//  Created by Ian Copland on 2016-01-20
//
//  The MIT License (MIT)
//
//  Copyright (c) 2016 Tag Games Limited
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//  THE SOFTWARE.
//

@import Foundation;

NS_ASSUME_NONNULL_BEGIN

/*!
 A callback for serialising containers. This will be called for each element in the
 container and expects a json type to be returned which can be included in the
 output serialised container.

 @param element An element found in the container which is currently being serialised.
        This can be of any type.

 @return The serialised element. This must be a valid JSON type, i.e, NSNumber,
         NSString, NSArray, NSDictionary or NSNull.
 */
typedef _Nonnull id (^SCSerialiseElementCallback)(id element);

/*!
 A callback for deserialising containers. This will be called for each element in the
 JSON container and expects the deserialised type to be returned which can be included
 in the output deserialised container.

 @param element An element found in the container which is currently being deserialised.
        This must be a valid JSON type, i.e, NSNumber, NSString, NSArray, NSDictionary or NSNull.

 @return The deserialised element. This can be any type.
 */
typedef _Nonnull id (^SCDeserialiseElementCallback)(id element);

/*!
 A convenience class which provides serialisation and deserialisation of
 non-standard types to JSON format.

 This is stateless and is therefore thread-safe.

 @author Ian Copland
 */
@interface SCJsonSerialisation : NSObject

/*!
 Serialises a date object to string.

 @param date The date object to be serialised.

 @return The serialised date as a string.
 */
+ (NSString *)serialiseDate:(NSDate *)date;

/*!
 Serialised a list to a Json compatible NSArray. A callback is provided for
 serialising each element in the input list.

 @param list The list to be deserialised.
 @param elementCallback The callback for serialising the elements in the list.

 @return The serialised list.
 */
+ (NSArray *)serialiseList:(NSArray *)list elementCallback:(SCSerialiseElementCallback)elementCallback;

/*!
 Serialised a map to a Json compatible NSDictionary. A callback is provided for
 serialising each element in the input map.

 @param map The map to be deserialised.
 @param elementCallback The callback for serialising the elements in the map.

 @return The serialised map.
 */
+ (NSDictionary *)serialiseMap:(NSDictionary *)map elementCallback:(SCSerialiseElementCallback)elementCallback;

/*!
 Deserialises a date string to a NSDate object. If the string is not a valid
 date string then this will error.

 @param dateString The date string to be deserialised.

 @return The serialised date as a string.
 */
+ (NSDate *)deserialiseDate:(NSString *)dateString;

/*!
 Deserialised a list from a Json compatible NSArray. A callback is provided for
 deserialising each element in the NSArray.

 @param array The Json compatible NSArray to be deserialised.
 @param elementCallback The callback for deserialising the elements in the array.

 @return The deserialised list.
 */
+ (NSArray *)deserialiseList:(NSArray *)array elementCallback:(SCDeserialiseElementCallback)elementCallback;

/*!
 Deserialised a map from a Json compatible NSDictionary. A callback is provided for
 deserialising each element in the NSDictionary.

 @param dictionary The Json compatible NSDictionary to be deserialised.
 @param elementCallback The callback for deserialising the elements in the dictionary.

 @return The deserialised map.
 */
+ (NSDictionary *)deserialiseMap:(NSDictionary *)dictionary elementCallback:(SCDeserialiseElementCallback)elementCallback;

@end

NS_ASSUME_NONNULL_END


text:
class TtsExtensionLoaderChromeOs
    : public ProfileKeyedService,
      public extensions::EventRouter::Observer {
 public:
  static TtsExtensionLoaderChromeOs* GetInstance(Profile* profile);

  // Returns true if the extension was not previously loaded and is now
  // loading. This class will call
  // ExtensionTtsController::RetrySpeakingQueuedUtterances when the
  // extension finishes loading.
  bool LoadTtsExtension();

  // Implementation of extensions::EventRouter::Observer.
  virtual void OnListenerAdded(const extensions::EventListenerInfo& details)
      OVERRIDE;

 private:
  // The state of TTS for this profile.
  enum TtsState {
    TTS_NOT_LOADED,
    TTS_LOAD_REQUESTED,
    TTS_LOADING,
    TTS_LOADED
  };

  explicit TtsExtensionLoaderChromeOs(Profile* profile);
  virtual ~TtsExtensionLoaderChromeOs() {}

  bool IsTtsLoadedInThisProfile();

  Profile* profile_;
  TtsState tts_state_;

  friend class TtsExtensionLoaderChromeOsFactory;

  DISALLOW_COPY_AND_ASSIGN(TtsExtensionLoaderChromeOs);
};

#endif  // CHROME_BROWSER_SPEECH_EXTENSION_API_TTS_EXTENSION_LOADER_CHROMEOS_H_


text:
package io.rong.models;

import io.rong.util.GsonUtil;

//图文消息
public class ImgTextMessage extends Message {

	private String content;
	private String title;
	private String imageUri;
	private String extra;
	private String url;

	public ImgTextMessage(String content, String title, String imageUri,
			String extra, String url) {
		this(content, title, imageUri, extra);
		this.url = url;
	}

	public ImgTextMessage(String content, String title, String imageUri) {
		this.type = "RC:ImgTextMsg";
		this.content = content;
		this.title = title;
		this.imageUri = imageUri;
	}

	public ImgTextMessage(String content, String title, String imageUri,
			String extra) {
		this(content, title, imageUri);
		this.extra = extra;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getImageUri() {
		return imageUri;
	}

	public void setImageUri(String imageUri) {
		this.imageUri = imageUri;
	}

	public String getExtra() {
		return extra;
	}

	public void setExtra(String extra) {
		this.extra = extra;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	@Override
	public String toString() {
		return GsonUtil.toJson(this, ImgTextMessage.class);
	}
}


text:
<resources>
    <string name="app_name">大象金融</string>
    <string name="thread_test">线程测试</string>
    <string name="self_stock">自选股</string>
    <string name="information">资讯</string>
    <string name="exchange">交易</string>
    <string name="quotes">行情</string>
</resources>


text:
package com.authlete.common.dto;

import org.junit.Test;
import com.google.gson.Gson;
import com.google.gson.JsonParseException;
import com.neovisionaries.security.Digest;
import static org.junit.Assert.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class AuthzDetailsElementTest
{
    private AuthzDetailsElement deserialize(String json)
    {
        return AuthzDetailsElement.fromJson(json);
    }

    private void verify(
            AuthzDetailsElement element, String type, String[] locations,
            String[] actions, String[] dataTypes, String identifier,
            String[] privileges, String otherFields)
    {
        assertNotNull(element);

        verifyType(       element, type);
        verifyLocations(  element, locations);
        verifyActions(    element, actions);
        verifyDataTypes(  element, dataTypes);
        verifyIdentifier( element, identifier);
        verifyPrivileges( element, privileges);
        verifyOtherFields(element, otherFields);
    }

    private void verifyType(AuthzDetailsElement element, String type)
    {
        if (type == null)
        {
            assertNull(element.getType());
        }
        else
        {
            assertEquals(type, element.getType());
        }
    }

    private void verifyLocations(AuthzDetailsElement element, String[] locations)
    {
        if (locations == null)
        {
            assertNull(element.getLocations());
        }
        else
        {
            assertArrayEquals(locations, element.getLocations());
        }
    }

    private void verifyActions(AuthzDetailsElement element, String[] actions)
    {
        if (actions == null)
        {
            assertNull(element.getActions());
        }
        else
        {
            assertArrayEquals(actions, element.getActions());
        }
    }

    private void verifyDataTypes(AuthzDetailsElement element, String[] dataTypes)
    {
        if (dataTypes == null)
        {
            assertNull(element.getDataTypes());
        }
        else
        {
            assertArrayEquals(dataTypes, element.getDataTypes());
        }
    }

    private void verifyIdentifier(AuthzDetailsElement element, String identifier)
    {
        if (identifier == null)
        {
            assertNull(element.getIdentifier());
        }
        else
        {
            assertEquals(identifier, element.getIdentifier());
        }
    }

    private void verifyPrivileges(AuthzDetailsElement element, String[] privileges)
    {
        if (privileges == null)
        {
            assertNull(element.getPrivileges());
        }
        else
        {
            assertArrayEquals(privileges, element.getPrivileges());
        }
    }

    private void verifyOtherFields(AuthzDetailsElement element, String otherFields)
    {
        if (otherFields == null)
        {
            assertNull(element.getOtherFields());
            return;
        }

        String actualOtherFields = element.getOtherFields();
        assertNotNull(actualOtherFields);

        String actualDigest   = digestJson(actualOtherFields);
        String expectedDigest = digestJson(otherFields);

        if (actualDigest.equals(expectedDigest))
        {
            return;
        }

        String message = "Digests of otherFields don't match.\n"
                       + "\tActual   = " + actualOtherFields + "\n"
                       + "\tExpected = " + otherFields
                       ;

        fail(message);
    }

    private String digestJson(String json)
    {
        try
        {
            return Digest.getInstanceSHA256().updateJson(json).digestAsString();
        }
        catch (IOException e)
        {
            return null;
        }
    }

    @Test
    public void test00()
    {
        verify(deserialize("{}"), null, null, null, null, null, null, null);
    }

    @Test
    public void test01()
    {
        String json =
            "{" +
            "  \"type\":\"my_type\"," +
            "  \"locations\": [\"loc0\", \"loc1\"], " +
            "  \"actions\": [\"act0\", \"act1\"], " +
            "  \"datatypes\": [\"dty0\", \"dty1\"], " +
            "  \"identifier\": \"my_id\", " +
            "  \"privileges\": [\"prv0\", \"prv1\"]" +
            "}";

        verify(deserialize(json),
            "my_type",
            new String[] { "loc0", "loc1" },
            new String[] { "act0", "act1" },
            new String[] { "dty0", "dty1" },
            "my_id",
            new String[] { "prv0", "prv1" },
            null
        );
    }

    @Test
    public void test02()
    {
        String otherProps =
            "  \"prop0\": \"a\",\n" +
            "  \"prop1\": [\"b\", \"c\"],\n" +
            "  \"prop2\": {\n" +
            "    \"sub0\": \"d\",\n" +
            "    \"sub1\": [\"e\", \"f\"]\n" +
            "  }\n";

        String json =
            "{\n" +
            "  \"type\": \"my_type\",\n" +
            otherProps +
            "}";

        verify(deserialize(json),
            "my_type",
            null,
            null,
            null,
            null,
            null,
            "{\n" + otherProps + "}"
        );
    }

    @Test
    public void test03()
    {
        String json =
            "{\n" +
            "  \"prop0\": \"a\",\n" +
            "  \"prop1\": [\"b\", \"c\"],\n" +
            "  \"prop2\": {\n" +
            "    \"sub0\": \"d\",\n" +
            "    \"sub1\": [\"e\", \"f\"]\n" +
            "  }\n" +
            "}";

        AuthzDetailsElement element = deserialize(json);

        Map<?,?> map = element.getOtherFieldsAsMap();

        // prop0
        assertTrue(map.containsKey("prop0"));
        assertEquals("a", map.get("prop0"));

        // prop1
        assertTrue(map.containsKey("prop1"));
        List<String> expectedList = new ArrayList<String>();
        expectedList.add("b");
        expectedList.add("c");
        assertEquals(expectedList, map.get("prop1"));

        // prop2
        assertTrue(map.containsKey("prop2"));
        Map<String, Object> expectedMap = new HashMap<String, Object>();
        expectedMap.put("sub0", "d");
        expectedList.clear();
        expectedList.add("e");
        expectedList.add("f");
        expectedMap.put("sub1", expectedList);
        assertEquals(expectedMap, map.get("prop2"));
    }

    @Test
    public void test04()
    {
        AuthzDetailsElement element = new AuthzDetailsElement();

        String json = element.toJson();
        Map<?,?> map = new Gson().fromJson(json, Map.class);

        // type
        assertFalse(map.containsKey("type"));

        // locations
        assertFalse(map.containsKey("locations"));

        // actions
        assertFalse(map.containsKey("actions"));

        // datatypes
        assertFalse(map.containsKey("datatypes"));

        // identifier
        assertFalse(map.containsKey("identifier"));

        // privileges
        assertFalse(map.containsKey("privileges"));
    }

    @Test
    public void test05()
    {
        String otherFields =
            "{\n" +
            "  \"prop0\": \"a\",\n" +
            "  \"prop1\": [\"b\", \"c\"]\n" +
            "}";

        AuthzDetailsElement element = new AuthzDetailsElement()
            .setType("my_type")
            .setLocations(new String[]{"loc0", "loc1"})
            .setActions(new String[]{"act0", "act1"})
            .setDataTypes(new String[]{"dty0", "dty1"})
            .setIdentifier("my_id")
            .setPrivileges(new String[]{"prv0", "prv1"})
            .setOtherFields(otherFields)
            ;

        String json = element.toJson();
        Map<?,?> map = new Gson().fromJson(json, Map.class);

        // type
        assertTrue(map.containsKey("type"));
        assertEquals("my_type", map.get("type"));

        // locations
        assertTrue(map.containsKey("locations"));
        List<String> locations = new ArrayList<String>();
        locations.add("loc0");
        locations.add("loc1");
        assertEquals(locations, map.get("locations"));

        // actions
        assertTrue(map.containsKey("actions"));
        List<String> actions = new ArrayList<String>();
        actions.add("act0");
        actions.add("act1");
        assertEquals(actions, map.get("actions"));

        // datatypes
        assertTrue(map.containsKey("datatypes"));
        List<String> datatypes = new ArrayList<String>();
        datatypes.add("dty0");
        datatypes.add("dty1");
        assertEquals(datatypes, map.get("datatypes"));

        // identifier
        assertTrue(map.containsKey("identifier"));
        assertEquals("my_id", map.get("identifier"));

        // privileges
        assertTrue(map.containsKey("privileges"));
        List<String> privileges = new ArrayList<String>();
        privileges.add("prv0");
        privileges.add("prv1");
        assertEquals(privileges, map.get("privileges"));

        // Other fields
        assertTrue(map.containsKey("prop0"));
        assertEquals("a", map.get("prop0"));

        assertTrue(map.containsKey("prop1"));
        List<String> prop1 = new ArrayList<String>();
        prop1.add("b");
        prop1.add("c");
        assertEquals(prop1, map.get("prop1"));
    }

    @Test(expected = JsonParseException.class)
    public void test06()
    {
        deserialize("{\"locations\":false}");
    }
}


text:
import java.util.List;
import lombok.experimental.Builder;
class BuilderComplex {
  public static @java.lang.SuppressWarnings("all") class VoidBuilder<T extends Number> {
    private T number;
    private int arg2;
    private String arg3;
    private BuilderComplex selfRef;
    @java.lang.SuppressWarnings("all") VoidBuilder() {
      super();
    }
    public @java.lang.SuppressWarnings("all") VoidBuilder<T> number(final T number) {
      this.number = number;
      return this;
    }
    public @java.lang.SuppressWarnings("all") VoidBuilder<T> arg2(final int arg2) {
      this.arg2 = arg2;
      return this;
    }
    public @java.lang.SuppressWarnings("all") VoidBuilder<T> arg3(final String arg3) {
      this.arg3 = arg3;
      return this;
    }
    public @java.lang.SuppressWarnings("all") VoidBuilder<T> selfRef(final BuilderComplex selfRef) {
      this.selfRef = selfRef;
      return this;
    }
    public @java.lang.SuppressWarnings("all") void execute() {
      BuilderComplex.<T>testVoidWithGenerics(number, arg2, arg3, selfRef);
    }
    public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
      return (((((((("BuilderComplex.VoidBuilder(number=" + this.number) + ", arg2=") + this.arg2) + ", arg3=") + this.arg3) + ", selfRef=") + this.selfRef) + ")");
    }
  }
  BuilderComplex() {
    super();
  }
  private static @Builder(buildMethodName = "execute") <T extends Number>void testVoidWithGenerics(T number, int arg2, String arg3, BuilderComplex selfRef) {
  }
  public static @java.lang.SuppressWarnings("all") <T extends Number>VoidBuilder<T> builder() {
    return new VoidBuilder<T>();
  }
}


text:
using System;

public static class Program {
    static ImmutableCustomType ImmutableProperty { get; set; }

    public static void Main (string[] args) {
        var ict = new ImmutableCustomType(2);
        var ictCopy = ict;

        Console.WriteLine("{0} {1}", ict, ictCopy);

        ict.Naughty(1);

        Console.WriteLine("{0} {1}", ict, ictCopy);

        ImmutableProperty = new ImmutableCustomType(3);

        Console.WriteLine("{0}", ImmutableProperty);

        ImmutableProperty.Naughty(4);

        Console.WriteLine("{0}", ImmutableProperty);
    }
}

public struct ImmutableCustomType {
    public readonly int Value;

    public ImmutableCustomType (int value) {
        Value = value;
    }

    public void Naughty (int newValue) {
        this = new ImmutableCustomType(newValue);
    }

    public override string ToString () {
        return String.Format("{0}", Value);
    }
}


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>SerialSessionImpl xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />

View Javadoc

1
20  package org.apache.mina.transport.serial;
21
22  import gnu.io.SerialPort;
23  import gnu.io.SerialPortEvent;
24  import gnu.io.SerialPortEventListener;
25
26  import java.io.IOException;
27  import java.io.InputStream;
28  import java.io.OutputStream;
29  import java.util.TooManyListenersException;
30
31  import org.apache.mina.core.session.AbstractIoSession;
32  import org.apache.mina.core.filterchain.DefaultIoFilterChain;
33  import org.apache.mina.core.service.DefaultTransportMetadata;
34  import org.apache.mina.util.ExceptionMonitor;
35  import org.apache.mina.core.buffer.IoBuffer;
36  import org.apache.mina.core.filterchain.IoFilterChain;
37  import org.apache.mina.core.service.IoHandler;
38  import org.apache.mina.core.service.IoProcessor;
39  import org.apache.mina.core.service.IoService;
40  import org.apache.mina.core.service.IoServiceListenerSupport;
41  import org.apache.mina.core.service.TransportMetadata;
42  import org.apache.mina.core.write.WriteRequest;
43
44  import org.slf4j.Logger;
45  import org.slf4j.LoggerFactory;
46
47  /**
48   * An imlpementation of {@link SerialSession}.
49   *
50   * @author <a href="http://mina.apache.org">Apache MINA Project</a>
51   */
52  class SerialSessionImpl extends AbstractIoSession implements
53          SerialSession, SerialPortEventListener {
54
55      static final TransportMetadata METADATA =
56          new DefaultTransportMetadata(
57                  "rxtx", "serial", false, true, SerialAddress.class,
58                  SerialSessionConfig.class, IoBuffer.class);
59
60      private final SerialSessionConfig config = new DefaultSerialSessionConfig();
61      private final IoProcessor<SerialSessionImpl> processor = new SerialIoProcessor();
62      private final IoHandler ioHandler;
63      private final IoFilterChain filterChain;
64      private final SerialConnector service;
65      private final IoServiceListenerSupport serviceListeners;
66      private final SerialAddress address;
67      private final SerialPort port;
68      private final Logger log;
69
70      private InputStream inputStream;
71      private OutputStream outputStream;
72
73      SerialSessionImpl(
74              SerialConnector service, IoServiceListenerSupport serviceListeners,
75              SerialAddress address, SerialPort port) {
76          this.service = service;
77          this.serviceListeners = serviceListeners;
78          ioHandler = service.getHandler();
79          filterChain = new DefaultIoFilterChain(this);
80          this.port = port;
81          this.address = address;
82
83          log = LoggerFactory.getLogger(SerialSessionImpl.class);
84      }
85
86      public SerialSessionConfig getConfig() {
87          return config;
88      }
89
90      public IoFilterChain getFilterChain() {
91          return filterChain;
92      }
93
94      public IoHandler getHandler() {
95          return ioHandler;
96      }
97
98      public TransportMetadata getTransportMetadata() {
99          return METADATA;
100     }
101
102     public SerialAddress getLocalAddress() {
103         return null; // not applicable
104     }
105
106     public SerialAddress getRemoteAddress() {
107         return address;
108     }
109
110     @Override
111     public SerialAddress getServiceAddress() {
112         return (SerialAddress) super.getServiceAddress();
113     }
114
115     public IoService getService() {
116         return service;
117     }
118
119     public void setDTR(boolean dtr) {
120         port.setDTR(dtr);
121     }
122
123     public boolean isDTR() {
124         return port.isDTR();
125     }
126
127     public void setRTS(boolean rts) {
128         port.setRTS(rts);
129     }
130
131     public boolean isRTS() {
132         return port.isRTS();
133     }
134
135     /**
136      * start handling streams
137      *
138      * @throws IOException
139      * @throws TooManyListenersException
140      */
141     void start() throws IOException, TooManyListenersException {
142         inputStream = port.getInputStream();
143         outputStream = port.getOutputStream();
144         ReadWorker w = new ReadWorker();
145         w.start();
146         port.addEventListener(this);
147         service.getIdleStatusChecker0().addSession(this);
148         try {
149             getService().getFilterChainBuilder().buildFilterChain(getFilterChain());
150             serviceListeners.fireSessionCreated(this);
151         } catch (Throwable e) {
152             getFilterChain().fireExceptionCaught(e);
153             processor.remove(this);
154         }
155     }
156
157     private final Object writeMonitor = new Object();
158     private WriteWorker writeWorker;
159
160     private class WriteWorker extends Thread {
161         @Override
162         public void run() {
163             while (isConnected() && !isClosing()) {
164                 flushWrites();
165
166                 // wait for more data
167                 synchronized (writeMonitor) {
168                     try {
169                         writeMonitor.wait();
170                     } catch (InterruptedException e) {
171                         log.error("InterruptedException", e);
172                     }
173                 }
174             }
175         }
176     }
177
178     private void flushWrites() {
179         for (; ;) {
180             WriteRequest req = getCurrentWriteRequest();
181             if (req == null) {
182                 req = getWriteRequestQueue().poll(this);
183                 if (req == null) {
184                     break;
185                 }
186             }
187
188             IoBuffer buf = (IoBuffer) req.getMessage();
189             if (buf.remaining() == 0) {
190                 setCurrentWriteRequest(null);
191                 buf.reset();
192                 this.getFilterChain().fireMessageSent(req);
193                 continue;
194             }
195
196             int writtenBytes = buf.remaining();
197             try {
198                 outputStream.write(buf.array(), buf.position(), writtenBytes);
199                 buf.position(buf.position() + writtenBytes);
200
201                 // increase written bytes
202                 increaseWrittenBytes(writtenBytes, System.currentTimeMillis());
203
204                 setCurrentWriteRequest(null);
205                 buf.reset();
206
207                 // fire the message sent event
208                 getFilterChain().fireMessageSent(req);
209             } catch (IOException e) {
210                 this.getFilterChain().fireExceptionCaught(e);
211             }
212
213         }
214     }
215
216     private final Object readReadyMonitor = new Object();
217
218     private class ReadWorker extends Thread {
219         @Override
220         public void run() {
221             while (isConnected() && !isClosing()) {
222                 synchronized (readReadyMonitor) {
223                     try {
224                         readReadyMonitor.wait();
225                     } catch (InterruptedException e) {
226                         log.error("InterruptedException", e);
227                     }
228                     if (isClosing() || !isConnected()) {
229                         break;
230                     }
231                     int dataSize;
232                     try {
233                         dataSize = inputStream.available();
234                         byte[] data = new byte[dataSize];
235                         int readBytes = inputStream.read(data);
236
237                         if (readBytes > 0) {
238                             IoBuffer buf = IoBuffer
239                                     .wrap(data, 0, readBytes);
240                             buf.put(data, 0, readBytes);
241                             buf.flip();
242                             getFilterChain().fireMessageReceived(
243                                     buf);
244                         }
245                     } catch (IOException e) {
246                         getFilterChain().fireExceptionCaught(
247                                 e);
248                     }
249                 }
250             }
251         }
252     }
253
254     public void serialEvent(SerialPortEvent evt) {
255         if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
256             synchronized (readReadyMonitor) {
257                 readReadyMonitor.notifyAll();
258             }
259         }
260     }
261
262     @Override
263     public IoProcessor<SerialSessionImpl> getProcessor() {
264         return processor;
265     }
266
267     private class SerialIoProcessor implements IoProcessor<SerialSessionImpl> {
268         public void add(SerialSessionImpl session) {
269             // It's already added when the session is constructed.
270         }
271
272         public void flush(SerialSessionImpl session) {
273             if (writeWorker == null) {
274                 writeWorker = new WriteWorker();
275                 writeWorker.start();
276             } else {
277                 synchronized (writeMonitor) {
278                     writeMonitor.notifyAll();
279                 }
280             }
281         }
282
283         public void remove(SerialSessionImpl session) {
284             try {
285                 inputStream.close();
286             } catch (IOException e) {
287                 ExceptionMonitor.getInstance().exceptionCaught(e);
288             }
289             try {
290                 outputStream.close();
291             } catch (IOException e) {
292                 ExceptionMonitor.getInstance().exceptionCaught(e);
293             }
294
295             port.close();
296             flush(session);
297             synchronized (readReadyMonitor) {
298                 readReadyMonitor.notifyAll();
299             }
300
301             serviceListeners.fireSessionDestroyed(SerialSessionImpl.this);
302         }
303
304         public void updateTrafficControl(SerialSessionImpl session) {
305             throw new UnsupportedOperationException();
306         }
307
308         public void dispose() {
309             // Nothing to dispose
310         }
311
312         public boolean isDisposed() {
313             return false;
314         }
315
316         public boolean isDisposing() {
317             return false;
318         }
319     }
320 }

This page was automatically generated by Maven


text:
// This file is automatically generated.

package adila.db;

/*
 * Kyocera Hydro ICON
 *
 * DEVICE: C6730
 * MODEL: C6730
 */
final class c6730_c6730 {
    public static final String DATA = "Kyocera|Hydro ICON|";
}


text:
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using Microsoft.MixedReality.Toolkit.Utilities;
using UnityEngine;

namespace Microsoft.MixedReality.Toolkit.Examples.Demos.EyeTracking
{
    /// <summary>
    /// A game object with this script attached will follow the main camera's position.
    /// This is particularly useful for secondary cameras or sound sources to follow the user around.
    /// </summary>
    [AddComponentMenu("Scripts/MRTK/Examples/MoveWithCamera")]
    public class MoveWithCamera : MonoBehaviour
    {
        /// <summary>
        /// The GameObject mimics the camera's movement while keeping a given offset.
        /// </summary>
        [SerializeField]
        private Vector3 offsetToCamera = Vector3.zero;

        private void Update()
        {
            gameObject.transform.position = CameraCache.Main.transform.position + offsetToCamera;
            gameObject.transform.rotation = CameraCache.Main.transform.rotation;
        }
    }
}


text:
using namespace std;
using namespace Eigen;
using Eigen::VectorXd;
using Eigen::MatrixXd;
#endif //TERM2_NOTES_KALMANFILTER_H


text:
require 'acts_as_list'
require 'acts-as-taggable-on'
require 'action_view/dependency_tracker'
require 'active_model_serializers'
require 'awesome_nested_set'
require 'bourbon'
require 'cancan'
require 'dragonfly'
require 'jquery-rails'
require 'jquery-ui-rails'
require 'kaminari'
require 'non-stupid-digest-assets'
require 'ransack'
require 'request_store'
require 'responders'
require 'simple_form'
require 'select2-rails'
require 'turbolinks'
require 'userstamp'

# Require globally used Alchemy mixins
require_relative './ability_helper'
require_relative './admin/locale'
require_relative './auth_accessors'
require_relative './cache_digests/template_tracker'
require_relative './config'
require_relative './configuration_methods'
require_relative './controller_actions'
require_relative './errors'
require_relative './essence'
require_relative './filetypes'
require_relative './forms/builder'
require_relative './hints'
require_relative './i18n'
require_relative './logger'
require_relative './modules'
require_relative './name_conversions'
require_relative './on_page_layout'
require_relative './on_page_layout/callbacks_runner'
require_relative './page_layout'
require_relative './paths'
require_relative './permissions'
require_relative './picture_attributes'
require_relative './sass_support'
require_relative './ssl_protection'
require_relative './resource'
require_relative './tinymce'
require_relative './touching'

# Require hacks
require_relative './kaminari/scoped_pagination_url_helper'

module Alchemy
  class Engine < Rails::Engine
    isolate_namespace Alchemy
    engine_name 'alchemy'
    config.mount_at = '/'

    initializer 'alchemy.dependency_tracker' do
      [:erb, :slim, :haml].each do |handler|
        ActionView::DependencyTracker.register_tracker(handler, CacheDigests::TemplateTracker)
      end
    end

    initializer 'alchemy.non_digest_assets' do
      NonStupidDigestAssets.whitelist += [/^tinymce\//]
    end

    # We need to reload each essence class in development mode on every request,
    # so it can register itself as essence relation on Page and Element models
    #
    # @see lib/alchemy/essence.rb:71
    config.to_prepare do
      unless Rails.configuration.cache_classes
        essences = File.join(File.dirname(__FILE__), '../../app/models/alchemy/essence_*.rb')
        Dir.glob(essences).each { |essence| load(essence) }
      end
    end

    config.after_initialize do
      require_relative './userstamp'
    end
  end
end


text:
/**
 * Internationalization: french language
 *
 * Depends on jWYSIWYG, $.wysiwyg.i18n
 *
 * By: Tom Barbette <mappam0@gmail.com>
 *
 */
(function ($) {
	if (undefined === $.wysiwyg) {
		throw "lang.fr.js depends on $.wysiwyg";
	}
	if (undefined === $.wysiwyg.i18n) {
		throw "lang.fr.js depends on $.wysiwyg.i18n";
	}

	$.wysiwyg.i18n.lang.fr = {
		controls: {
			"Bold": "Gras",
			"Colorpicker": "Choisir une couleur",
			"Copy": "Copier",
			"Create link": "Créer un lien",
			"Cut": "Couper",
			"Decrease font size": "Diminuer la taille du texte",
			"Fullscreen": "Plein écran",
			"Header 1": "Titre 1",
			"Header 2": "Titre 2",
			"Header 3": "Titre 3",
			"View source code": "Voir le code source",
			"Increase font size": "Augmenter la taille du texte",
			"Indent": "Augmenter le retrait",
			"Insert Horizontal Rule": "Insérer une règle horyzontale",
			"Insert image": "Insérer une image",
			"Insert Ordered List": "Insérer une liste ordonnée",
			"Insert table": "Insérer un tableau",
			"Insert Unordered List": "Insérer une liste",
			"Italic": "Italique",
			"Justify Center": "Centré",
			"Justify Full": "Justifié",
			"Justify Left": "Aligné à gauche",
			"Justify Right": "Aligné à droite",
			"Left to Right": "Gauche à droite",
			"Outdent": "Réduire le retrait",
			"Paste": "Coller",
			"Redo": "Restaurer",
			"Remove formatting": "Supprimer le formatage",
			"Right to Left": "Droite à gauche",
			"Strike-through": "Barré",
			"Subscript": "Indice",
			"Superscript": "Exposant",
			"Underline": "Souligné",
			"Undo": "Annuler"
		},

		dialogs: {
			// for all
			"Apply": "Appliquer",
			"Cancel": "Annuler",

			colorpicker: {
				"Colorpicker": "Choisir une couleur",
				"Color": "Couleur"
			},

			image: {
				"Insert Image": "Insérer une image",
				"Preview": "Prévisualiser",
				"URL": "URL",
				"Title": "Titre",
				"Description": "Description",
				"Width": "Largeur",
				"Height": "Hauteur",
				"Original W x H": "L x H originale",
				"Float": "",
				"None": "",
				"Left": "",
				"Right": ""
			},

			link: {
				"Insert Link": "Insérer un lien",
				"Link URL": "URL du lien",
				"Link Title": "Titre du lien",
				"Link Target": "Cible du lien"
			},

			table: {
				"Insert table": "Insérer un tableau",
				"Count of columns": "Nombre de colonnes",
				"Count of rows": "Nombre de lignes"
			}
		}
	};
})(jQuery);


text:
/**
 * @author ejrbuss
 * @date 2017
 *
 * RDPS
 *
 * Code entry point for the rdp sender demo. This file is responsible for
 * parsing command line options and calling the appropriate functions from the
 * rdp library.
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "rdp/rdp.h"

void rdps_test();

static const char* usage =
"Sender Demo usage:\n\n"
"  rdps [options] <IP> <port> <receiver IP> <receiver port> <file>\n\n";

int main(int argc, char** argv) {

    enum {sender_ip, sender_port, receiver_ip, receiver_port, sender_file_name};
    char* args[4];
    int arg = 0;
    int i;

    if(argc == 1) {
        printf("%s%s", rdp_logo, usage);
    }
    for(i = 1; i < argc; i++) {
        rdp_opt(argv[i]);
        if(rdp_opt_cmp("-h") || rdp_opt_cmp("--help")) {
            rdp_exit(EXIT_SUCCESS,
                "%s%s"
                "Sends a file to rdpr.\n"
                "Options:\n"
                "  -h --help    display this message\n"
                "  -v --version display version\n"
                "  -d --debug   enable debug printing\n"
                "  -t --test    run tests\n\n",
                rdp_logo, usage
            );
        }
        if(rdp_opt_cmp("-v") || rdp_opt_cmp("--version")) {
            rdp_exit(EXIT_SUCCESS, "%s", rdp_version);
        }
        if(rdp_opt_cmp("-d") || rdp_opt_cmp("--debug")) {
            rdp_debug(); continue;
        }
        if(rdp_opt_cmp("-t") || rdp_opt_cmp("--test")) {
            rdps_test(); exit(EXIT_SUCCESS);
        }
        rdp_log("found arg: %s", argv[i]);
        args[arg++] = argv[i];
    }

    // Test arguments
    switch(arg) {
        case 0: rdp_exit(EXIT_FAILURE, "Missing required argument IP\n%s", usage);
        case 1: rdp_exit(EXIT_FAILURE, "Missing required argument port\n%s", usage);
        case 2: rdp_exit(EXIT_FAILURE, "Missing required argument receiver IP\n%s", usage);
        case 3: rdp_exit(EXIT_FAILURE, "Missing required argument receiver port\n%s", usage);
        case 4: rdp_exit(EXIT_FAILURE, "Missing required argument file\n%s", usage);
        default: break;
    }

    // Open filestream
    rdp_filestream_open(args[sender_file_name], "r");
    // Configure network
    rdp_sender(
        args[sender_ip],
        args[sender_port],
        args[receiver_ip],
        args[receiver_port]
    );
    // Open connection
    rdp_sender_connect();
    // Send file
    rdp_sender_send();
    // Close connection
    rdp_sender_disconnect();
    // Close filestream
    rdp_filestream_close();
    // Print stats
    rdp_sender_stats();

    return EXIT_SUCCESS;
}

void rdps_test() {
    rdp_filestream_open("send/test.dat", "r");
    rdp_sender("192.168.1.100", "9002", "10.10.1.100", "9001");
    rdp_sender_connect();
    rdp_sender_send();
    rdp_sender_disconnect();
    rdp_filestream_close();
    rdp_sender_stats();
}


text:
package topo

import (
	"encoding/json"
	"flag"
	"os"
	"os/user"
	"path"
	"sync"
	"time"

	"golang.org/x/net/context"
	"vitess.io/vitess/go/vt/proto/vtrpc"
	"vitess.io/vitess/go/vt/vterrors"

	"vitess.io/vitess/go/trace"
	"vitess.io/vitess/go/vt/log"
)

// This file contains utility methods and definitions to lock
// keyspaces and shards.

var (
	// DefaultLockTimeout is a good value to use as a default for
	// locking a shard / keyspace.
	// Now used only for unlock operations
	defaultLockTimeout = 30 * time.Second

	// Deprecated
	// LockTimeout is the command line flag that introduces a shorter
	// timeout for locking topology structures.
	deprecatedLockTimeout = flag.Duration("lock_timeout", defaultLockTimeout, "deprecated: timeout for acquiring topology locks, use remote_operation_timeout")

	// RemoteOperationTimeout is used for operations where we have to
	// call out to another process.
	// Used for RPC calls (including topo server calls)
	RemoteOperationTimeout = flag.Duration("remote_operation_timeout", 30*time.Second, "time to wait for a remote operation")
)

// Lock describes a long-running lock on a keyspace or a shard.
// It needs to be public as we JSON-serialize it.
type Lock struct {
	// Action and the following fields are set at construction time.
	Action   string
	HostName string
	UserName string
	Time     string

	// Status is the current status of the Lock.
	Status string
}

// newLock creates a new Lock.
func newLock(action string) *Lock {
	l := &Lock{
		Action:   action,
		HostName: "unknown",
		UserName: "unknown",
		Time:     time.Now().Format(time.RFC3339),
		Status:   "Running",
	}
	if h, err := os.Hostname(); err == nil {
		l.HostName = h
	}
	if u, err := user.Current(); err == nil {
		l.UserName = u.Username
	}
	return l
}

// ToJSON returns a JSON representation of the object.
func (l *Lock) ToJSON() (string, error) {
	data, err := json.MarshalIndent(l, "", "  ")
	if err != nil {
		return "", vterrors.Wrapf(err, "cannot JSON-marshal node")
	}
	return string(data), nil
}

// lockInfo is an individual info structure for a lock
type lockInfo struct {
	lockDescriptor LockDescriptor
	actionNode     *Lock
}

// locksInfo is the structure used to remember which locks we took
type locksInfo struct {
	// mu protects the following members of the structure.
	// Safer to be thread safe here, in case multiple go routines
	// lock different things.
	mu sync.Mutex

	// info contans all the locks we took. It is indexed by
	// keyspace (for keyspaces) or keyspace/shard (for shards).
	info map[string]*lockInfo
}

// Context glue
type locksKeyType int

var locksKey locksKeyType

// LockKeyspace will lock the keyspace, and return:
// - a context with a locksInfo structure for future reference.
// - an unlock method
// - an error if anything failed.
//
// We lock a keyspace for the following operations to be guaranteed
// exclusive operation:
// * changing a keyspace sharding info fields (is this one necessary?)
// * changing a keyspace 'ServedFrom' field (is this one necessary?)
// * resharding operations:
//   * horizontal resharding: includes changing the shard's 'ServedType',
//     as well as the associated horizontal resharding operations.
//   * vertical resharding: includes changing the keyspace 'ServedFrom'
//     field, as well as the associated vertical resharding operations.
//   * 'vtctl SetShardServedTypes' emergency operations
//   * 'vtctl SetShardTabletControl' emergency operations
//   * 'vtctl SourceShardAdd' and 'vtctl SourceShardDelete' emergency operations
// * keyspace-wide schema changes
func (ts *Server) LockKeyspace(ctx context.Context, keyspace, action string) (context.Context, func(*error), error) {
	i, ok := ctx.Value(locksKey).(*locksInfo)
	if !ok {
		i = &locksInfo{
			info: make(map[string]*lockInfo),
		}
		ctx = context.WithValue(ctx, locksKey, i)
	}
	i.mu.Lock()
	defer i.mu.Unlock()

	// check that we're not already locked
	if _, ok = i.info[keyspace]; ok {
		return nil, nil, vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "lock for keyspace %v is already held", keyspace)
	}

	// lock
	l := newLock(action)
	lockDescriptor, err := l.lockKeyspace(ctx, ts, keyspace)
	if err != nil {
		return nil, nil, err
	}

	// and update our structure
	i.info[keyspace] = &lockInfo{
		lockDescriptor: lockDescriptor,
		actionNode:     l,
	}
	return ctx, func(finalErr *error) {
		i.mu.Lock()
		defer i.mu.Unlock()

		if _, ok := i.info[keyspace]; !ok {
			if *finalErr != nil {
				log.Errorf("trying to unlock keyspace %v multiple times", keyspace)
			} else {
				*finalErr = vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "trying to unlock keyspace %v multiple times", keyspace)
			}
			return
		}

		err := l.unlockKeyspace(ctx, ts, keyspace, lockDescriptor, *finalErr)
		if *finalErr != nil {
			if err != nil {
				// both error are set, just log the unlock error
				log.Errorf("unlockKeyspace(%v) failed: %v", keyspace, err)
			}
		} else {
			*finalErr = err
		}
		delete(i.info, keyspace)
	}, nil
}

// CheckKeyspaceLocked can be called on a context to make sure we have the lock
// for a given keyspace.
func CheckKeyspaceLocked(ctx context.Context, keyspace string) error {
	// extract the locksInfo pointer
	i, ok := ctx.Value(locksKey).(*locksInfo)
	if !ok {
		return vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "keyspace %v is not locked (no locksInfo)", keyspace)
	}
	i.mu.Lock()
	defer i.mu.Unlock()

	// find the individual entry
	_, ok = i.info[keyspace]
	if !ok {
		return vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "keyspace %v is not locked (no lockInfo in map)", keyspace)
	}

	// TODO(alainjobart): check the lock server implementation
	// still holds the lock. Will need to look at the lockInfo struct.

	// and we're good for now.
	return nil
}

// lockKeyspace will lock the keyspace in the topology server.
// unlockKeyspace should be called if this returns no error.
func (l *Lock) lockKeyspace(ctx context.Context, ts *Server, keyspace string) (LockDescriptor, error) {
	log.Infof("Locking keyspace %v for action %v", keyspace, l.Action)

	ctx, cancel := context.WithTimeout(ctx, *RemoteOperationTimeout)
	defer cancel()

	span := trace.NewSpanFromContext(ctx)
	span.StartClient("TopoServer.LockKeyspaceForAction")
	span.Annotate("action", l.Action)
	span.Annotate("keyspace", keyspace)
	defer span.Finish()

	keyspacePath := path.Join(KeyspacesPath, keyspace)
	j, err := l.ToJSON()
	if err != nil {
		return nil, err
	}
	return ts.globalCell.Lock(ctx, keyspacePath, j)
}

// unlockKeyspace unlocks a previously locked keyspace.
func (l *Lock) unlockKeyspace(ctx context.Context, ts *Server, keyspace string, lockDescriptor LockDescriptor, actionError error) error {
	// Detach from the parent timeout, but copy the trace span.
	// We need to still release the lock even if the parent
	// context timed out.
	// Note that we are not using the user provided RemoteOperationTimeout
	// here because it is possible that that timeout is too short.
	ctx = trace.CopySpan(context.TODO(), ctx)
	ctx, cancel := context.WithTimeout(ctx, defaultLockTimeout)
	defer cancel()

	span := trace.NewSpanFromContext(ctx)
	span.StartClient("TopoServer.UnlockKeyspaceForAction")
	span.Annotate("action", l.Action)
	span.Annotate("keyspace", keyspace)
	defer span.Finish()

	// first update the actionNode
	if actionError != nil {
		log.Infof("Unlocking keyspace %v for action %v with error %v", keyspace, l.Action, actionError)
		l.Status = "Error: " + actionError.Error()
	} else {
		log.Infof("Unlocking keyspace %v for successful action %v", keyspace, l.Action)
		l.Status = "Done"
	}
	return lockDescriptor.Unlock(ctx)
}

// LockShard will lock the shard, and return:
// - a context with a locksInfo structure for future reference.
// - an unlock method
// - an error if anything failed.
//
// We are currently only using this method to lock actions that would
// impact each-other. Most changes of the Shard object are done by
// UpdateShardFields, which is not locking the shard object. The
// current list of actions that lock a shard are:
// * all Vitess-controlled re-parenting operations:
//   * InitShardMaster
//   * PlannedReparentShard
//   * EmergencyReparentShard
// * operations that we don't want to conflict with re-parenting:
//   * DeleteTablet when it's the shard's current master
//
func (ts *Server) LockShard(ctx context.Context, keyspace, shard, action string) (context.Context, func(*error), error) {
	i, ok := ctx.Value(locksKey).(*locksInfo)
	if !ok {
		i = &locksInfo{
			info: make(map[string]*lockInfo),
		}
		ctx = context.WithValue(ctx, locksKey, i)
	}
	i.mu.Lock()
	defer i.mu.Unlock()

	// check that we're not already locked
	mapKey := keyspace + "/" + shard
	if _, ok = i.info[mapKey]; ok {
		return nil, nil, vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "lock for shard %v/%v is already held", keyspace, shard)
	}

	// lock
	l := newLock(action)
	lockDescriptor, err := l.lockShard(ctx, ts, keyspace, shard)
	if err != nil {
		return nil, nil, err
	}

	// and update our structure
	i.info[mapKey] = &lockInfo{
		lockDescriptor: lockDescriptor,
		actionNode:     l,
	}
	return ctx, func(finalErr *error) {
		i.mu.Lock()
		defer i.mu.Unlock()

		if _, ok := i.info[mapKey]; !ok {
			if *finalErr != nil {
				log.Errorf("trying to unlock shard %v/%v multiple times", keyspace, shard)
			} else {
				*finalErr = vterrors.Errorf(vtrpc.Code_INTERNAL, "trying to unlock shard %v/%v multiple times", keyspace, shard)
			}
			return
		}

		err := l.unlockShard(ctx, ts, keyspace, shard, lockDescriptor, *finalErr)
		if *finalErr != nil {
			if err != nil {
				// both error are set, just log the unlock error
				log.Warningf("unlockShard(%s/%s) failed: %v", keyspace, shard, err)
			}
		} else {
			*finalErr = err
		}
		delete(i.info, mapKey)
	}, nil
}

// CheckShardLocked can be called on a context to make sure we have the lock
// for a given shard.
func CheckShardLocked(ctx context.Context, keyspace, shard string) error {
	// extract the locksInfo pointer
	i, ok := ctx.Value(locksKey).(*locksInfo)
	if !ok {
		return vterrors.Errorf(vtrpc.Code_INTERNAL, "shard %v/%v is not locked (no locksInfo)", keyspace, shard)
	}
	i.mu.Lock()
	defer i.mu.Unlock()

	// func the individual entry
	mapKey := keyspace + "/" + shard
	li, ok := i.info[mapKey]
	if !ok {
		return vterrors.Errorf(vtrpc.Code_INTERNAL, "shard %v/%v is not locked (no lockInfo in map)", keyspace, shard)
	}

	// Check the lock server implementation still holds the lock.
	return li.lockDescriptor.Check(ctx)
}

// lockShard will lock the shard in the topology server.
// UnlockShard should be called if this returns no error.
func (l *Lock) lockShard(ctx context.Context, ts *Server, keyspace, shard string) (LockDescriptor, error) {
	log.Infof("Locking shard %v/%v for action %v", keyspace, shard, l.Action)

	ctx, cancel := context.WithTimeout(ctx, *RemoteOperationTimeout)
	defer cancel()

	span := trace.NewSpanFromContext(ctx)
	span.StartClient("TopoServer.LockShardForAction")
	span.Annotate("action", l.Action)
	span.Annotate("keyspace", keyspace)
	span.Annotate("shard", shard)
	defer span.Finish()

	shardPath := path.Join(KeyspacesPath, keyspace, ShardsPath, shard)
	j, err := l.ToJSON()
	if err != nil {
		return nil, err
	}
	return ts.globalCell.Lock(ctx, shardPath, j)
}

// unlockShard unlocks a previously locked shard.
func (l *Lock) unlockShard(ctx context.Context, ts *Server, keyspace, shard string, lockDescriptor LockDescriptor, actionError error) error {
	// Detach from the parent timeout, but copy the trace span.
	// We need to still release the lock even if the parent context timed out.
	// Note that we are not using the user provided RemoteOperationTimeout
	// here because it is possible that that timeout is too short.
	ctx = trace.CopySpan(context.TODO(), ctx)
	ctx, cancel := context.WithTimeout(ctx, defaultLockTimeout)
	defer cancel()

	span := trace.NewSpanFromContext(ctx)
	span.StartClient("TopoServer.UnlockShardForAction")
	span.Annotate("action", l.Action)
	span.Annotate("keyspace", keyspace)
	span.Annotate("shard", shard)
	defer span.Finish()

	// first update the actionNode
	if actionError != nil {
		log.Infof("Unlocking shard %v/%v for action %v with error %v", keyspace, shard, l.Action, actionError)
		l.Status = "Error: " + actionError.Error()
	} else {
		log.Infof("Unlocking shard %v/%v for successful action %v", keyspace, shard, l.Action)
		l.Status = "Done"
	}
	return lockDescriptor.Unlock(ctx)
}


text:
<?php

namespace Godart\DdprixBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Godart\ChassisBundle\Entity\Chassis;
use Godart\DdprixBundle\Entity\Ddprix;

class DefaultController extends Controller
{
    public function indexAction($name)
    {
        return $this->render('GodartDdprixBundle:Default:index.html.twig', array('name' => $name));
    }

     public function testAction()
    {
        $em= $this->getDoctrine()->getManager();
        $ddprix =  new Ddprix();

        $chassis1 = new Chassis();
        $chassis2 = new Chassis();
        $chassis1->setDesignation('chassis lie22');
        $chassis2->setDesignation('chassis lie23');

        $chassis1->setDdprix($ddprix);
        $chassis2->setDdprix($ddprix);
        $em->persist($ddprix);
        $em->persist($chassis1);
        $em->persist($chassis2);
        $em->flush();

        return $this->render('GodartDdprixBundle:Default:index.html.twig', array('name' => $ddprix->getDesignation()));

    }
        public function DisplayallchassisAction($id){
        // on affiche tout les modéles de chassis.
        //$id contient le numéro de la demande de prix.car on devra la transmettre au sous routine
        //on va également prendre la liste des chassis correspondant.
        $em = $this->getDoctrine()->getManager();
        $chassisREP = $em->getRepository('GodartChassisBundle:Chassis');
        //
        $liste_chassis = $chassisREP->findByTemplate(TRUE);// on prend le ddprix

        return $this->render('GodartDdprixBundle:Default:Displayallchassis.html.twig', array('id' => $id ,'liste_chassis' => $liste_chassis));
        }

    public function DisplayDdprixAction($id){
        // ici on retourne la vue avec la ddprix complete
        $em = $this->getDoctrine()->getManager();
        $ddprixREP = $em->getRepository('GodartDdprixBundle:Ddprix');
        //
        $ddprix = $ddprixREP->find($id);// on prend le ddprix
         $liste_chassis = $ddprix->getChassis();     // on prend la liste des chassis associés

        return $this->render('GodartDdprixBundle:Default:DisplayDdprix.html.twig', array('ddprix' => $ddprix,'listechassis' => $liste_chassis));
                                    }

        public function addChassistoDdprixAction($id,$idchassis){
        // on lie le chassis avec le Ddprix.
        //$id : numero de la ddprix
        //$chassis : numero du chassis theme
        //On va commencer par prendre le correspondant
         // on le copie dans un nouvelle objet chassis
        $em = $this->getDoctrine()->getManager();
        $chassisREP = $em->getRepository('GodartChassisBundle:Chassis');
        $chassistemplate = $chassisREP->find($idchassis);
        $chassis = new Chassis(); // on peut creer l'objet chassis

        $chassis = clone $chassistemplate; //On le clone avec la template
        $chassis->setTemplate(false); // Ce n'est pas une template donc on le false
        // ici on n'a un nouvel objet chassis
        //occupons nous mintenant de la ddprix

        $DdprixREP = $em->getRepository('GodartDdprixBundle:Ddprix');
        $Ddprix = $DdprixREP->find($id); // on prend le Ddprix

        $em->persist($chassis); // on persiste notre nouveau chassis
        $chassis->setDdprix($Ddprix);

        $em->flush(); // on sauve tout cela dans la base de donné.

        // Ensuite on retourne bien gentiment dans la vue de la ddprix selectionnee
        return $this->render('GodartDdprixBundle:Default:voir.html.twig', array('id' => $id));

        }

    public function voirAction($id){

        return $this->render('GodartDdprixBundle:Default:voir.html.twig', array('id' => $id));

                                            }
}


text:
<?xml version="1.0" encoding="utf-8"?>
<geo:GeodesyML gml:id="TASH00UZB" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:geo="urn:xml-gov-au:icsm:egeodesy:0.4" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <geo:siteLog gml:id="tash_20161025.log">
        <geo:formInformation>
            <geo:preparedBy>Markus Bradke</geo:preparedBy>
            <geo:datePrepared>2016-10-25</geo:datePrepared>
            <geo:reportType>UPDATE</geo:reportType>
        </geo:formInformation>
        <geo:siteIdentification>
            <geo:siteName>Tashkent</geo:siteName>
            <geo:fourCharacterID>TASH</geo:fourCharacterID>
            <geo:monumentInscription></geo:monumentInscription>
            <geo:iersDOMESNumber>12327M001</geo:iersDOMESNumber>
            <geo:cdpNumber></geo:cdpNumber>
            <geo:monumentDescription codeSpace="urn:ga-gov-au:monument-description-type">PILLAR</geo:monumentDescription>
            <geo:monumentFoundation>BEDROCK</geo:monumentFoundation>
            <geo:markerDescription></geo:markerDescription>
            <geo:dateInstalled>2001-10-04T00:00:00Z</geo:dateInstalled>
            <geo:geologicCharacteristic codeSpace="urn:ga-gov-au:geologic-characteristic-type"></geo:geologicCharacteristic>
            <geo:bedrockType></geo:bedrockType>
            <geo:bedrockCondition></geo:bedrockCondition>
            <geo:fractureSpacing></geo:fractureSpacing>
            <geo:faultZonesNearby codeSpace="urn:ga-gov-au:fault-zones-type"></geo:faultZonesNearby>
            <geo:notes></geo:notes>
        </geo:siteIdentification>
        <geo:siteLocation>
            <geo:city>Tashkent</geo:city>
            <geo:state></geo:state>
            <geo:countryCodeISO codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_CountryTypeCode" codeListValue="Uzbekistan" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">Uzbekistan</geo:countryCodeISO>
            <geo:tectonicPlate codeSpace="urn:ga-gov-au:plate-type">EURASIAN</geo:tectonicPlate>
            <geo:approximatePositionITRF>
                <geo:cartesianPosition>
                    <gml:Point gml:id="itrf_cartesian" srsName="EPSG:7789">
                        <gml:pos>1695945.1994 4487138.5684 4190140.6931</gml:pos>
                    </gml:Point>
                </geo:cartesianPosition>
                <geo:geodeticPosition>
                    <gml:Point gml:id="itrf_geodetic" srsName="EPSG:7912">
                        <gml:pos>41.32805 69.2955666667 439.7</gml:pos>
                    </gml:Point>
                </geo:geodeticPosition>
            </geo:approximatePositionITRF>
            <geo:notes></geo:notes>
        </geo:siteLocation>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-1">
                <geo:notes>original elevation cutoff setting is 0.5</geo:notes>
                <geo:manufacturerSerialNumber>1101</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="AOA BENCHMARK ACT" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">AOA BENCHMARK ACT</geo:igsModelCode>
                <geo:satelliteSystem>GPS</geo:satelliteSystem>
                <geo:firmwareVersion>3.3.32.2N</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2001-10-04T00:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2003-06-03T00:00:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2001-10-04T00:00:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-2">
                <geo:notes>original elevation cutoff setting is 0.5</geo:notes>
                <geo:manufacturerSerialNumber>1133</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="AOA BENCHMARK ACT" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">AOA BENCHMARK ACT</geo:igsModelCode>
                <geo:satelliteSystem>GPS</geo:satelliteSystem>
                <geo:firmwareVersion>3.3.32.2N</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2003-06-03T00:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2004-02-10T00:00:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2003-06-03T00:00:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-3">
                <geo:notes>original elevation cutoff setting is 0.5</geo:notes>
                <geo:manufacturerSerialNumber>1134</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="AOA BENCHMARK ACT" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">AOA BENCHMARK ACT</geo:igsModelCode>
                <geo:satelliteSystem>GPS</geo:satelliteSystem>
                <geo:firmwareVersion>3.3.32.2N</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2004-02-10T00:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2010-05-22T00:00:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2004-02-10T00:00:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-4">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL</geo:satelliteSystem>
                <geo:firmwareVersion>3.1.7</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2010-09-14T00:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2011-12-20T11:52:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2010-09-14T00:00:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-5">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL</geo:satelliteSystem>
                <geo:firmwareVersion>3.3.5</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2011-12-20T11:52:00Z</geo:dateInstalled>
                <geo:dateRemoved>2012-03-26T08:15:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2011-12-20T11:52:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-6">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL</geo:satelliteSystem>
                <geo:firmwareVersion>3.4.1b3</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2012-03-26T08:15:00Z</geo:dateInstalled>
                <geo:dateRemoved>2012-06-12T09:15:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2012-03-26T08:15:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-7">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL</geo:satelliteSystem>
                <geo:firmwareVersion>3.4.4b0</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2012-06-12T09:15:00Z</geo:dateInstalled>
                <geo:dateRemoved>2012-10-25T10:00:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2012-06-12T09:15:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-8">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL+SBAS</geo:satelliteSystem>
                <geo:firmwareVersion>3.4.4b0</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2012-10-25T10:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2013-01-08T13:03:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2012-10-25T10:00:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-9">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL+SBAS</geo:satelliteSystem>
                <geo:firmwareVersion>3.4.7</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2013-01-08T13:04:00Z</geo:dateInstalled>
                <geo:dateRemoved>2013-09-05T15:00:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2013-01-08T13:04:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-10">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL+QZSS+SBAS</geo:satelliteSystem>
                <geo:firmwareVersion>3.4.7</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2013-09-05T15:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2015-09-15T13:29:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2013-09-05T15:00:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-11">
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL+QZSS+SBAS</geo:satelliteSystem>
                <geo:firmwareVersion>3.5.10</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2015-09-15T13:29:00Z</geo:dateInstalled>
                <geo:dateRemoved>2016-10-25T08:52:00Z</geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2015-09-15T13:29:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssReceiver>
            <geo:GnssReceiver gml:id="gnss-receiver-12">
                <geo:notes>enables tracking of E01/E02</geo:notes>
                <geo:manufacturerSerialNumber>200</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSReceiverTypeCode" codeListValue="JAVAD TRE_G3TH DELTA" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAVAD TRE_G3TH DELTA</geo:igsModelCode>
                <geo:satelliteSystem>GPS+GLO+GAL+QZSS+SBAS</geo:satelliteSystem>
                <geo:firmwareVersion>3.6.7</geo:firmwareVersion>
                <geo:elevationCutoffSetting>0.0</geo:elevationCutoffSetting>
                <geo:dateInstalled>2016-10-25T08:52:00Z</geo:dateInstalled>
                <geo:dateRemoved></geo:dateRemoved>
                <geo:temperatureStabilization xsi:nil="true"></geo:temperatureStabilization>
            </geo:GnssReceiver>
            <geo:dateInserted>2016-10-25T08:52:00Z</geo:dateInserted>
        </geo:gnssReceiver>
        <geo:gnssAntenna>
            <geo:GnssAntenna gml:id="gnss-antenna-1">
                <geo:manufacturerSerialNumber>374</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSAntennaTypeCode" codeListValue="AOAD/M_T NONE" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">AOAD/M_T        NONE</geo:igsModelCode>
                <geo:antennaReferencePoint codeSpace="urn:ga-gov-au:antenna-reference-point-type">BPA</geo:antennaReferencePoint>
                <geo:marker-arpUpEcc.>0.046</geo:marker-arpUpEcc.>
                <geo:marker-arpNorthEcc.>0.0</geo:marker-arpNorthEcc.>
                <geo:marker-arpEastEcc.>0.0</geo:marker-arpEastEcc.>
                <geo:alignmentFromTrueNorth>0.0</geo:alignmentFromTrueNorth>
                <geo:antennaRadomeType codeSpace="urn:igs-org:gnss-radome-model-code">NONE</geo:antennaRadomeType>
                <geo:radomeSerialNumber></geo:radomeSerialNumber>
                <geo:antennaCableType></geo:antennaCableType>
                <geo:antennaCableLength>60.0</geo:antennaCableLength>
                <geo:dateInstalled>2001-10-04T00:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2003-06-03T00:00:00Z</geo:dateRemoved>
            </geo:GnssAntenna>
            <geo:dateInserted>2001-10-04T00:00:00Z</geo:dateInserted>
        </geo:gnssAntenna>
        <geo:gnssAntenna>
            <geo:GnssAntenna gml:id="gnss-antenna-2">
                <geo:manufacturerSerialNumber>504</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSAntennaTypeCode" codeListValue="AOAD/M_T NONE" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">AOAD/M_T        NONE</geo:igsModelCode>
                <geo:antennaReferencePoint codeSpace="urn:ga-gov-au:antenna-reference-point-type">BPA</geo:antennaReferencePoint>
                <geo:marker-arpUpEcc.>0.046</geo:marker-arpUpEcc.>
                <geo:marker-arpNorthEcc.>0.0</geo:marker-arpNorthEcc.>
                <geo:marker-arpEastEcc.>0.0</geo:marker-arpEastEcc.>
                <geo:alignmentFromTrueNorth>0.0</geo:alignmentFromTrueNorth>
                <geo:antennaRadomeType codeSpace="urn:igs-org:gnss-radome-model-code">NONE</geo:antennaRadomeType>
                <geo:radomeSerialNumber></geo:radomeSerialNumber>
                <geo:antennaCableType></geo:antennaCableType>
                <geo:antennaCableLength>60.0</geo:antennaCableLength>
                <geo:dateInstalled>2003-06-03T00:00:00Z</geo:dateInstalled>
                <geo:dateRemoved>2010-09-13T00:00:00Z</geo:dateRemoved>
            </geo:GnssAntenna>
            <geo:dateInserted>2003-06-03T00:00:00Z</geo:dateInserted>
        </geo:gnssAntenna>
        <geo:gnssAntenna>
            <geo:GnssAntenna gml:id="gnss-antenna-3">
                <geo:manufacturerSerialNumber>328</geo:manufacturerSerialNumber>
                <geo:igsModelCode codeList="http://xml.gov.au/icsm/geodesyml/codelists/antenna-receiver-codelists.xml#GeodesyML_GNSSAntennaTypeCode" codeListValue="JAV_RINGANT_G3T NONE" codeSpace="urn:xml-gov-au:icsm:egeodesy:0.4">JAV_RINGANT_G3T NONE</geo:igsModelCode>
                <geo:antennaReferencePoint codeSpace="urn:ga-gov-au:antenna-reference-point-type">BAM</geo:antennaReferencePoint>
                <geo:marker-arpUpEcc.>0.1206</geo:marker-arpUpEcc.>
                <geo:marker-arpNorthEcc.>0.0</geo:marker-arpNorthEcc.>
                <geo:marker-arpEastEcc.>0.0</geo:marker-arpEastEcc.>
                <geo:alignmentFromTrueNorth>0.0</geo:alignmentFromTrueNorth>
                <geo:antennaRadomeType codeSpace="urn:igs-org:gnss-radome-model-code">NONE</geo:antennaRadomeType>
                <geo:radomeSerialNumber></geo:radomeSerialNumber>
                <geo:antennaCableType></geo:antennaCableType>
                <geo:antennaCableLength xsi:nil="true"></geo:antennaCableLength>
                <geo:dateInstalled>2010-09-14T00:00:00Z</geo:dateInstalled>
                <geo:dateRemoved></geo:dateRemoved>
            </geo:GnssAntenna>
            <geo:dateInserted>2010-09-14T00:00:00Z</geo:dateInserted>
        </geo:gnssAntenna>
        <geo:frequencyStandard>
            <geo:FrequencyStandard gml:id="frequency-standard-1">
                <geo:standardType codeSpace="urn:ga-gov-au:frequency-standard-type">EXTERNAL RUBIDIUM</geo:standardType>
                <geo:inputFrequency>5.0</geo:inputFrequency>
                <gml:validTime>
                    <gml:TimePeriod gml:id="frequency-standard-1--time-period-1">
                        <gml:beginPosition>2003-05-15</gml:beginPosition>
                        <gml:endPosition></gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:notes></geo:notes>
            </geo:FrequencyStandard>
            <geo:dateInserted>2003-05-15</geo:dateInserted>
        </geo:frequencyStandard>
        <geo:collocationInformation>
            <geo:CollocationInformation gml:id="instrumentation-type-1">
                <geo:instrumentationType codeSpace="urn:ga-gov-au:instrumentation-type">PRARE</geo:instrumentationType>
                <geo:status codeSpace="urn:ga-gov-au:status-type">PERMANENT</geo:status>
                <gml:validTime>
                    <gml:TimePeriod gml:id="instrumentation-type-1--time-period-2">
                        <gml:beginPosition>2001-10-04</gml:beginPosition>
                        <gml:endPosition></gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:notes>original date unknown, set to first GNSS
observation</geo:notes>
            </geo:CollocationInformation>
            <geo:dateInserted>2001-10-04</geo:dateInserted>
        </geo:collocationInformation>
        <geo:humiditySensor>
            <geo:HumiditySensor gml:id="humidity-sensor-1">
                <geo:type codeSpace="urn:ga-gov-au:humidity-sensor-type">HMP 45</geo:type>
                <geo:manufacturer>VAISALA</geo:manufacturer>
                <geo:serialNumber></geo:serialNumber>
                <geo:heightDiffToAntenna>0.0</geo:heightDiffToAntenna>
                <geo:calibrationDate></geo:calibrationDate>
                <gml:validTime>
                    <gml:TimePeriod gml:id="humidity-sensor-1--time-period-1">
                        <gml:beginPosition>2001-10-04</gml:beginPosition>
                        <gml:endPosition>2008-04-08</gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:dataSamplingInterval>600.0</geo:dataSamplingInterval>
                <geo:accuracy-percentRelativeHumidity>2.0</geo:accuracy-percentRelativeHumidity>
                <geo:aspiration>NATURAL</geo:aspiration>
            </geo:HumiditySensor>
            <geo:dateInserted>2001-10-04</geo:dateInserted>
        </geo:humiditySensor>
        <geo:humiditySensor>
            <geo:HumiditySensor gml:id="humidity-sensor-2">
                <geo:type codeSpace="urn:ga-gov-au:humidity-sensor-type">HMP45A-P</geo:type>
                <geo:notes>The humidity sensor is part of a Vaisala
PTU200 meteo station</geo:notes>
                <geo:manufacturer>Vaisala</geo:manufacturer>
                <geo:serialNumber>B3110013</geo:serialNumber>
                <geo:heightDiffToAntenna>-2.65</geo:heightDiffToAntenna>
                <geo:calibrationDate>2006-08-02</geo:calibrationDate>
                <gml:validTime>
                    <gml:TimePeriod gml:id="humidity-sensor-2--time-period-2">
                        <gml:beginPosition>2008-04-09</gml:beginPosition>
                        <gml:endPosition></gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:dataSamplingInterval>300.0</geo:dataSamplingInterval>
                <geo:accuracy-percentRelativeHumidity>1.5</geo:accuracy-percentRelativeHumidity>
                <geo:aspiration>NATURAL</geo:aspiration>
            </geo:HumiditySensor>
            <geo:dateInserted>2008-04-09</geo:dateInserted>
        </geo:humiditySensor>
        <geo:pressureSensor>
            <geo:PressureSensor gml:id="pressure-sensor-1">
                <geo:type codeSpace="urn:ga-gov-au:pressure-sensor-type">PTB100-B</geo:type>
                <geo:manufacturer>VAISALA</geo:manufacturer>
                <geo:serialNumber></geo:serialNumber>
                <geo:heightDiffToAntenna>0.0</geo:heightDiffToAntenna>
                <geo:calibrationDate></geo:calibrationDate>
                <gml:validTime>
                    <gml:TimePeriod gml:id="pressure-sensor-1--time-period-3">
                        <gml:beginPosition>2001-10-04</gml:beginPosition>
                        <gml:endPosition>2008-04-08</gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:dataSamplingInterval>600.0</geo:dataSamplingInterval>
                <geo:accuracy-hPa>0.5</geo:accuracy-hPa>
            </geo:PressureSensor>
            <geo:dateInserted>2001-10-04</geo:dateInserted>
        </geo:pressureSensor>
        <geo:pressureSensor>
            <geo:PressureSensor gml:id="pressure-sensor-2">
                <geo:type codeSpace="urn:ga-gov-au:pressure-sensor-type">PTU200</geo:type>
                <geo:manufacturer>Vaisala</geo:manufacturer>
                <geo:serialNumber>B3110013</geo:serialNumber>
                <geo:heightDiffToAntenna>-3.7</geo:heightDiffToAntenna>
                <geo:calibrationDate>2006-08-02</geo:calibrationDate>
                <gml:validTime>
                    <gml:TimePeriod gml:id="pressure-sensor-2--time-period-4">
                        <gml:beginPosition>2008-04-09</gml:beginPosition>
                        <gml:endPosition></gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:dataSamplingInterval>300.0</geo:dataSamplingInterval>
                <geo:accuracy-hPa>0.0</geo:accuracy-hPa>
            </geo:PressureSensor>
            <geo:dateInserted>2008-04-09</geo:dateInserted>
        </geo:pressureSensor>
        <geo:temperatureSensor>
            <geo:TemperatureSensor gml:id="temperature-sensor-1">
                <geo:type codeSpace="urn:ga-gov-au:temperature-sensor-type">PT100</geo:type>
                <geo:manufacturer>TimeTech GmbH</geo:manufacturer>
                <geo:serialNumber></geo:serialNumber>
                <geo:heightDiffToAntenna>0.0</geo:heightDiffToAntenna>
                <geo:calibrationDate></geo:calibrationDate>
                <gml:validTime>
                    <gml:TimePeriod gml:id="temperature-sensor-1--time-period-5">
                        <gml:beginPosition>2001-10-04</gml:beginPosition>
                        <gml:endPosition>2008-04-08</gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:dataSamplingInterval>600.0</geo:dataSamplingInterval>
                <geo:accuracy-degreesCelcius>0.25</geo:accuracy-degreesCelcius>
                <geo:aspiration>NATURAL</geo:aspiration>
            </geo:TemperatureSensor>
            <geo:dateInserted>2001-10-04</geo:dateInserted>
        </geo:temperatureSensor>
        <geo:temperatureSensor>
            <geo:TemperatureSensor gml:id="temperature-sensor-2">
                <geo:type codeSpace="urn:ga-gov-au:temperature-sensor-type">HMP45A-P</geo:type>
                <geo:notes>The temperature sensor is part of a Vaisala
PTU200 meteo station</geo:notes>
                <geo:manufacturer>Vaisala</geo:manufacturer>
                <geo:serialNumber>B3110013</geo:serialNumber>
                <geo:heightDiffToAntenna>-2.65</geo:heightDiffToAntenna>
                <geo:calibrationDate>2006-08-02</geo:calibrationDate>
                <gml:validTime>
                    <gml:TimePeriod gml:id="temperature-sensor-2--time-period-6">
                        <gml:beginPosition>2008-04-09</gml:beginPosition>
                        <gml:endPosition></gml:endPosition>
                    </gml:TimePeriod>
                </gml:validTime>
                <geo:dataSamplingInterval>300.0</geo:dataSamplingInterval>
                <geo:accuracy-degreesCelcius>0.1</geo:accuracy-degreesCelcius>
                <geo:aspiration>NATURAL</geo:aspiration>
            </geo:TemperatureSensor>
            <geo:dateInserted>2008-04-09</geo:dateInserted>
        </geo:temperatureSensor>
        <geo:siteContact gml:id="agency-1">
            <gmd:MD_SecurityConstraints>
                <gmd:classification gco:nilReason="missing"/>
            </gmd:MD_SecurityConstraints>
            <gmd:CI_ResponsibleParty>
                <gmd:individualName>
                    <gco:CharacterString>Yusufjon Tillayev</gco:CharacterString>
                </gmd:individualName>
                <gmd:organisationName>
                    <gco:CharacterString>Academy of sciences of Uzbekistan</gco:CharacterString>
                </gmd:organisationName>
                <gmd:contactInfo>
                    <gmd:CI_Contact>
                        <gmd:phone>
                            <gmd:CI_Telephone>
                                <gmd:voice>
                                    <gco:CharacterString></gco:CharacterString>
                                </gmd:voice>
                                <gmd:facsimile>
                                    <gco:CharacterString>00998-712-36-0037</gco:CharacterString>
                                </gmd:facsimile>
                            </gmd:CI_Telephone>
                        </gmd:phone>
                        <gmd:address>
                            <gmd:CI_Address>
                                <gmd:deliveryPoint>
                                    <gco:CharacterString>Institute of Astronomy
Astronomicheskaja 33
Tashkent 700052
Republic of Uzbekistan</gco:CharacterString>
                                </gmd:deliveryPoint>
                                <gmd:city>
                                    <gco:CharacterString></gco:CharacterString>
                                </gmd:city>
                                <gmd:postalCode>
                                    <gco:CharacterString></gco:CharacterString>
                                </gmd:postalCode>
                                <gmd:country>
                                    <gco:CharacterString></gco:CharacterString>
                                </gmd:country>
                                <gmd:electronicMailAddress>
                                    <gco:CharacterString>yusuf@astrin.uzsci.net</gco:CharacterString>
                                </gmd:electronicMailAddress>
                            </gmd:CI_Address>
                        </gmd:address>
                    </gmd:CI_Contact>
                </gmd:contactInfo>
                <gmd:role>
                    <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact"></gmd:CI_RoleCode>
                </gmd:role>
            </gmd:CI_ResponsibleParty>
        </geo:siteContact>
        <geo:siteMetadataCustodian gml:id="agency-2">
            <gmd:MD_SecurityConstraints>
                <gmd:classification gco:nilReason="missing"/>
            </gmd:MD_SecurityConstraints>
            <gmd:CI_ResponsibleParty>
                <gmd:individualName>
                    <gco:CharacterString>Markus Bradke</gco:CharacterString>
                </gmd:individualName>
                <gmd:organisationName>
                    <gco:CharacterString>Helmholtz-Zentrum Potsdam
Deutsches GeoForschungsZentrum GFZ</gco:CharacterString>
                </gmd:organisationName>
                <gmd:contactInfo>
                    <gmd:CI_Contact>
                        <gmd:phone>
                            <gmd:CI_Telephone>
                                <gmd:voice>
                                    <gco:CharacterString>(+49)331-288-1182</gco:CharacterString>
                                </gmd:voice>
                                <gmd:facsimile>
                                    <gco:CharacterString>(+49)331-288-1759</gco:CharacterString>
                                </gmd:facsimile>
                            </gmd:CI_Telephone>
                        </gmd:phone>
                        <gmd:address>
                            <gmd:CI_Address>
                                <gmd:deliveryPoint>
                                    <gco:CharacterString>Telegrafenberg A17
14473 Potsdam / Germany</gco:CharacterString>
                                </gmd:deliveryPoint>
                                <gmd:city>
                                    <gco:CharacterString></gco:CharacterString>
                                </gmd:city>
                                <gmd:postalCode>
                                    <gco:CharacterString></gco:CharacterString>
                                </gmd:postalCode>
                                <gmd:country>
                                    <gco:CharacterString></gco:CharacterString>
                                </gmd:country>
                                <gmd:electronicMailAddress>
                                    <gco:CharacterString>bradke@gfz-potsdam.de</gco:CharacterString>
                                </gmd:electronicMailAddress>
                            </gmd:CI_Address>
                        </gmd:address>
                    </gmd:CI_Contact>
                </gmd:contactInfo>
                <gmd:role>
                    <gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact"></gmd:CI_RoleCode>
                </gmd:role>
            </gmd:CI_ResponsibleParty>
        </geo:siteMetadataCustodian>
        <geo:moreInformation>
            <geo:dataCenter>CDDIS</geo:dataCenter>
            <geo:dataCenter>IGN</geo:dataCenter>
            <geo:urlForMoreInformation></geo:urlForMoreInformation>
            <geo:siteMap></geo:siteMap>
            <geo:siteDiagram></geo:siteDiagram>
            <geo:horizonMask></geo:horizonMask>
            <geo:monumentDescription></geo:monumentDescription>
            <geo:sitePictures></geo:sitePictures>
            <geo:notes></geo:notes>
            <geo:antennaGraphicsWithDimensions></geo:antennaGraphicsWithDimensions>
            <geo:insertTextGraphicFromAntenna></geo:insertTextGraphicFromAntenna>
            <geo:DOI codeSpace="urn:ga-gov-au:self.moreInformation-type">TODO</geo:DOI>
        </geo:moreInformation>
    </geo:siteLog>
</geo:GeodesyML>