<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
  <head>
    <title>entry</title>
  </head>
  <body>

    <h1>entry</h1>

    <p>Создание примитива поля ввода текста и управление им.</p>
    


    <h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
    
    <pre>
      <strong>entry</strong> <em>имяПути параметры</em>
    </pre>
    
    <h2><a name=СТАНДАРТНЫЕ_ПАРАМЕТРЫ></a>СТАНДАРТНЫЕ ПАРАМЕТРЫ</h2>

    <ul>
      <li>-background</li>
      <li>-borderwidth</li>
      <li>-cursor</li>
      <li>-exportselection</li>
      <li>-font</li>
      <li>-foreground</li>
      <li>-highlightbackground</li>
      <li>-highlightcolor</li>
      <li>-highlightthickness</li>
      <li>-inserborderwidth</li>
      <li>-insertbackground</li>
      <li>-insertofftime</li>
      <li>-insertontime</li>
      <li>-insertwidth</li>
      <li>-justify</li>
      <li>-relief</li>
      <li>-selectbackground</li>
      <li>-selectborderwidth</li>
      <li>-selectforeground</li>
      <li>-takefocus</li>
      <li>-textvariable</li>
      <li>-xscrollcommand</li>
    </ul>

    <p>Подробное описание этих параметров приведено в <a
	href=options.html><strong>options</strong></a>.</p>

    <h2><a name=ДОПОЛНИТЕЛЬНЫЕ_ПАРАМЕТРЫ_ПРИМИТИВА></a>ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА</h2>

    <table>
	<tr><td>Имя параметра:</td><td><strong>-show</strong></td></tr>
	<tr><td>Имя в Базе:</td><td><strong>show</strong></td></tr>
	<tr><td>Класс в Базе:</td><td><strong>Show</strong></td></tr>
    </table>


    
    <p>Если этот параметр задан, то истинное содержимое поля не
      выводится на экране. Вместо этого каждый символ текста
      заменяется первым символом значения параметра
      <strong>-show</strong>, скажем *. Такая возможность полезна,
      например, при вводе в поле пароля. Если символы поля ввода были
      выделены и скопированы в другом месте, то выводиться будет
      скопированная информация, а не истинное содержимое поля
      ввода.</p>
    
    
    <table>
	<tr><td>Имя параметра:</td><td><strong>-state</strong></td></tr>
	<tr><td>Имя в Базе:</td><td><strong>state</strong></td></tr>
	<tr><td>Класс в Базе:</td><td><strong>State</strong></td></tr>
    </table>
    

    
    <p>Задает одно из двух состояний поля ввода:
      <strong>normal</strong> или
      <strong>disabled</strong>. Отключенное состояние указывает на
      то, что значение поля ввода нельзя изменить с помощью команд
      примитива. При этом курсор ввода в поле не отображается, даже
      если этот примитив оказался в фокусе ввода.</p>

    
    <table>
	<tr><td>Имя параметра:</td><td><strong>-width</strong></td></tr>
	<tr><td>Имя в Базе:</td><td><strong>width</strong></td></tr>
	<tr><td>Класс в Базе:</td><td><strong>Width</strong></td></tr>
    </table>
    
    
    <p>Задает желаемую ширину окна поля ввода в виде целого
      числа. Если введенное значение не положительно, то ширина поля
      устанавливается такой, чтобы в него в точности помещался текст
      его текущего значения.</p>

    
    <h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2> 
    
    <p>Команда <strong>entry</strong> создает новое окно (задаваемое
      аргументом <em>имяПути</em>) и превращает его в примитив поля
      ввода. Детали изображения кнопки, такие как ее цвета, шрифт и
      объемный вид, задаются с помощью описанных выше дополнительных
      параметров. Команда <strong>entry</strong> возвращает аргумент
      <em>имяПути</em>. В момент выполнения этой команды не должно
      существовать окна с именем <em>имяПути</em>, но должно
      существовать его родительское окно.</p>

    
    <p>Поле ввода представляет собой примитив, предназначенный для
      вывода одной строки текста и редактирования ее с помощью
      описываемых ниже команд примитива, которые по большей части
      сводятся к нажатию клавиш на клавиатуре и действиям с
      &quot;Мышью&quot;. При создании поля ввода его строка текста
      пуста. Часть содержимого поля можно выделить, совершив действия,
      описываемые ниже. Экспорт выделенного текста (см. описание
      параметра <strong>exportSelection</strong>) осуществляется по
      стандартному протоколу X11 для выделений; выделения в поле ввода
      имеют тип <strong>STRING</strong>. Поля ввода также подчиняются
      стандартным правилам Tk обращения с фокусом ввода.  Когда поле
      ввода находится в фокусе ввода, в нем изображается <em>курсор
      ввода</em> , который указывает, где будут вставляться вводимые
      символы.</p>

    
    <p>Поля ввода могут работать и с длинными строками, которые не
      помещаются полностью в окне примитива. С помощью описываемых
      ниже команд содержимое окна можно изменить. Поля ввода
      взаимодействуют с полосами прокрутки с помощью стандартного
      механизма <strong>xScrollCommand</strong> (подробно механизм
      взаимодействия описан при описании параметра
      <strong>xScrollCommand</strong>). Кроме того, они обеспечивают
      возможность сканирования (см. описание ниже).</p>

    
    <h2><a name=КОМАНДА_ПРИМИТИВА></a>КОМАНДА ПРИМИТИВА</h2>

    
    <p>Команда <strong>entry</strong> создает новую команду Tcl с именем
      <em>имяПути</em>. С помощью этой команды можно выполнять различные
      операции над примитивом. Ее общий вид </p>

    <pre>
      <strong>имяПути</strong> <em>параметр арг арг ...</em>
    </pre>

    <p><em>Параметр</em> и <em>арг</em>ументы уточняют поведение
      команды.</p>
    
    <p>Аргументами многих команд примитива поля ввода служат
      индексы. Индекс задает положение конкретного символа в строке
      поля ввода. Он может иметь один из следующих видов:
      
    <dl>
      <dt><em>число</em></dt>
      <dd>Задает номер символа в строке. Первый символ строки имеет
	номер &quot;0&quot;</dd>
      
      <dt><strong>anchor</strong></dt>

      <dd>Задает опорную точку выделения, которая используется
	командами примитива <strong>select from</strong> и
	<strong>select adjust</strong>.<dd>
	
      <dt><strong>end</strong></dt>

      <dd>Указывает положение символа непосредственно после последнего
	символа строки в поле ввода. Указание этого индекса
	равносильно указанию длины строки.</dd>
      
      <dt><strong>insert</strong></dt>

      <dd>Указывает на символ, находящийся непосредственно за курсором
	ввода.</dd>
      
      <dt><strong>sel.first</strong><dt>

      <dd>Указывает на первый из выделенных символов. Эта форма
	индекса недопустима, если выделение не расположено в окне поля
	ввода.</dd>
      
      <dt><strong>sel.last</strong></dt>

      <dd>Указывает на последний из выделенных символов. Эта форма
	индекса недопустима, если выделение не расположено в окне поля
	ввода.</dd>
      
      <dt>@<em>число</em></dt>

      <dd>В этом случае <em>число</em> трактуется как x-координата в
	окне поля ввода; указывает на символ с этой x-координатой.
	Например, &quot;<strong>@0</strong>&quot; указывает на самый левый
	символ в окне ввода.</dd>
    </dl>
    
    <p>Вместо любой из указанных форм можно использовать ее
      сокращение, например, &quot;<strong>e</strong>&quot; или
      &quot;<strong>sel.f</strong>&quot;. Как правило, значения
      индексов, выходящие за пределы допустимых, заменяются ближайшими
      допустимыми значениями.</p>

    
    <p>Примитивы поля ввода допускают следующие команды:</p>

    <dl>

      <dt><em>имяПути</em> <strong>bbox</strong> <em>индекс</em></dt>

      <dd>Возвращает список из четырех элементов, описывающий клетку,
	занимаемую символом, указанным параметром
	<em>индекс</em>. Первые два элемента списка задают x- и
	y-координаты верхнего левого угла клетки (в пикселях по
	отношению к примитиву), последние два элемента ширину и высоту
	символа (в пикселях). Клетка может находиться за пределами
	видимой части окна.</dd>

      <dd><em>имяПути</em> <strong>cget</strong> <em>параметр</em></dd>

      <dd>Возвращает текущее значение параметра конфигурации с именем
	<em>параметр</em>. <em>Параметр</em>может быть любым из
	параметров команды <strong>entry</strong>.</dd>

      <dt><em>имяПути</em> <strong>configure</strong> <em>параметр
	  значение параметр значение ...</em> </dt>

      <dd>Запрашивает значения параметров конфигурации примитива или
	изменяет их. Если <em>параметр</em> не указан, то возвращает
	список, содержащий значения всех допустимых в <em>имениПути</em>
	параметров (формат списка описан в
	<strong>Tk_ConfigureInfo</strong>). Если <em>параметр</em>
	задан, а его новое <em>значение</em> нет, то команда возвращает
	часть полного списка, относящуюся к указанному параметру. Если
	заданы одна или несколько пар <em>параметр-значение</em>, то
	указанным <em>параметр</em>ам примитива присваиваются новые
	<em>значения</em>. В этом случае команда возвращает пустую
	строку. <em>Параметр</em> может быть любым из параметров команды
	<strong>entry</strong>.</dd>

      <dt><em>имяПути</em> <strong>delete</strong> <em>первый
	  последний</em></dt>

      <dd>Удаляет один или несколько символов в поле ввода. Аргумент
	<em>первый</em> является индексом первого удаляемого символа, а
	аргумент <em>последний</em> представляет собой индекс символа,
	следующего непосредственно за последним удаляемым символом. По
	умолчанию значение аргумента <em>последний</em> на единицу
	больше значения аргумента <em>первый</em>, т.е. удаляется один
	символ. Команда возвращает пустую строку.</dd>

      <dt><em>имяПути</em> <strong>get</strong></dt>

      <dd>Возвращает строку содержимое поля ввода.</dd>

      <dt><em>имяПути</em> <strong>icursor</strong>
	<em>индекс</em></dt>

      <dd>Устанавливает курсор ввода непосредственно перед символом,
	заданным аргументом <em>индекс</em>. Возвращает пустую
	строку.</dd>

      <dt><em>имяПути</em> <strong>index</strong> <em>индекс</em></dt>

      <dd>Команда возвращает числовое значение индекса, заданного
	аргументом <em>индекс</em>.</dd>

      <dt><em>имяПути</em> <strong>insert</strong> <em>индекс
	  строка</em> </dt>

      <dd>Вставляет символы <em>строки</em> непосредственно перед
	символом, на который указывает аргумент <em>индекс</em>. Команда
	возвращает пустую строку.</dd>

      <dt><em>имяПути</em> <strong>scan</strong> <em>параметр
	  аргументы</em></dt>

      <dd><p>Осуществляет сканирование поля ввода. В зависимости от
	  значения <em>параметр</em>а может иметь две различные формы:</p>

	<dl>
	  <dt><em>имяПути</em> <strong>scan mark</strong> <em>x</em>
	  </dt>

	  <dd>Запоминает значение координаты x и текущее состояние
	    окна поля ввода; используется в сочетании с последующими
	    командами <strong>scan dragto</strong>. Обычно эта команда
	    связана с нажатием клавиши &quot;Мыши&quot; на
	    примитиве. Возвращает пустую строку.</dd>

	  <dt><em>имяПути</em> <strong>scan dragto</strong>
	    <em>x</em></dt>

	  <dd>Вычисляет разность между значением своего аргумента x и
	    значением аргумента x последней выполненной на данном
	    примитиве команды <strong>scan mark</strong>. Затем
	    переносит изображение примитива на расстояние, в 10 раз
	    превышающее вычисленную разность. Команда обычно связана с
	    событиями движения &quot;Мыши&quot; в примитиве и
	    используется для скоростного перетаскивания поля ввода в
	    окне. Возвращает пустую строку.</dd>
	</dl>
      </dd>
      

      <dt><em>имяПути</em> <strong>selection</strong> <em>параметр
	  аргумент</em> </dt>

      <dd><p>Производит размещение выделения в поле ввода. Команда может
	  иметь одну из описанных ниже форм.</p>

	<dl>
	  <dt><em>имяПути</em> <strong>selection adjust</strong>
	    <em>индекс</em></dt>

	  <dd>Определяет ближайший к указанному аргументом
	    <em>индекс</em> положению край выделения и устанавливает
	    новое значение этого края в <em>индекс</em> (т.е. элемент
	    с индексом <em>индекс</em> входит в выделение, а соседний
	    с ним нет). Противоположный край выделения становится
	    опорной точкой для последующих команд <strong>select
	      to</strong>. Если в текущий момент выделение в поле
	    отсутствует, то команда заводит новое выделение,
	    содержащее символы между указанным аргументом
	    <em>индекс</em> и последней установленной опорной точкой
	    выделения. Возвращает пустую строку.</dd>

	  <dt><em>имяПути</em> <strong>selection clear</strong></dt>

	  <dd> Очищает выделение в данном примитиве. Если выделение
	    отсутствует, то не производит никаких действий. Возвращает
	    пустую строку.</dd>

	  <dt><em>имяПути</em> <strong>selection from</strong>
	    <em>индекс</em> </dt>

	  <dd>Устанавливает опорную точку выделения непосредственно
	    перед символом, заданным аргументом
	    <em>индекс</em>. Текущего выделения команда не
	    меняет. Возвращает пустую строку.</dd>

	  <dt><em>имяПути</em> <strong>selection present</strong></dt>

	  <dd>Возвращает &quot;1&quot;, если в поле ввода имеется
	    выделение, в противном случае возвращает
	    &quot;0&quot;.</dd>

	  <dt><em>имяПути</em> <strong>selection range</strong>
	    <em>начало конец</em> </dt>

	  <dd>Выделяет символы между символом, указанным аргументом
	    <em>начало, и символом,</em> непосредственно
	    предшествующим указанному аргументом <em>конец.</em> Если
	    символ, указанный аргументом <em>конец,</em> совпадает с
	    символом, указанным аргументом <em>начало</em>, или
	    предшествует ему, то выделение становится пустым.</dd>

	  <dt><em>имяПути</em><strong>selection to</strong>
	    <em>индекс</em> </dt>

	  <dd>Если символ, указанный аргументом <em>индекс</em>,
	    предшествует опорной точке выделения, то команда выделяет
	    все символы между опорным символом выделения и символом,
	    указанным аргументом <em>индекс</em>, не включая опорный
	    символ. Если аргумент индекс указывает на опорный символ,
	    то команда ничего не делает. Если символ, указанный
	    аргументом <em>индекс</em>, следует за опорной точкой
	    выделения, то команда выделяет все символы между опорным
	    символом выделения и символом, указанным аргументом
	    <em>индекс</em>, не включая этот символ. Опорный символ
	    устанавливается последней выполненной на данном примитиве
	    командой <strong>select from</strong> или <strong>select
	      adjust</strong>. Если в текущий момент выделение в поле
	    отсутствует, то команда заводит новое выделение,
	    содержащее символы между указанным аргументом
	    <em>индекс</em> и последней установленной опорной точкой
	    выделения. Команда возвращает пустую строку.</dd>
	</dl>
      </dd>

      <dt><em>имяПути</em> <strong>xview</strong>
	<em>аргументы</em></dt>

      <dd><p>Используется для запроса горизонтального положения
	  информации, выведенной в поле ввода, и изменения этого
	  положения. Команда может иметь одну из следующих форм:</p>

	<dl>
	  <dt><em>имяПути</em> <strong>xview</strong></dt>

	  <dd>Возвращает список, состоящий из двух элементов. Каждый
	    из элементов списка представляет собой вещественное число,
	    заключенное между нулем и единицей; эта пара чисел
	    описывает видимый в окне горизонтальный интервал. Так,
	    например, если первое число равно &quot;2&quot;, а второе
	    &quot;6&quot;, то 20% текста в поле ввода оказывается
	    невидимой слева от окна, в окне выводится 40% информации,
	    и еще 40% оказывается невидимой справа от окна. Те же
	    значения передаются полосе прокрутки через параметр
	    <strong>-xscrollcommand</strong>.</dd>

	  <dt><em>имяПути</em> <strong>xview</strong>
	    <em>индекс</em></dt>

	  <dd>Переносит строку в поле ввода так, что самым левым
	    символом в окне становится символ, указанный аргументом
	    <em>индекс</em>.</dd>

	  <dt><em>имяПути</em> <strong>xview moveto</strong>
	    <em>число</em></dt>

	  <dd>Передвигает область видимости так, что слева от окна
	    остается невидимой часть поля ввода, указанная аргументом
	    <em>число</em>. <em>Число</em> должно быть заключено между
	    &quot;0&quot; и &quot;1&quot;.</dd>

	  <dt><em>имяПути</em> <strong>xview scroll</strong>
	    <em>количество что</em></dt>

	  <dd>Сдвигает выводимый в окне текст вправо или влево в
	    соответствии со значениями аргументов. <em>Количество</em>
	    должно быть целым числом, аргумент <em>что</em> может
	    принимать значения <strong>units</strong> или
	    <strong>pages</strong> или быть сокращением одного из этих
	    слов. Если аргумент <em>что</em> принимает значение
	    <strong>units</strong>, то сдвиг происходит на
	    <em>количество</em> символов средней ширины. Если
	    значением аргумента <em>что</em> является
	    <strong>pages</strong>, то сдвиг осуществляется на
	    <em>количество</em> полных экранов. Если
	    <em>количество</em> отрицательно, то видимые символы
	    сдвигаются вправо, в противном случае влево.</dd>
	</dl>
      </dd>
    </dl>
    
    <h2><a name=ПРИВЯЗКИ_ПО_УМОЛЧАНИЮ></a>ПРИВЯЗКИ ПО УМОЛЧАНИЮ</h2>

    <p>При создании поля ввода Tk автоматически создает привязки
      класса, определяющие поведение примитива по умолчанию. В
      приводимом ниже описании .слово. есть произвольная непрерывная
      группа букв, цифр и символов &quot;_&quot; или любой другой
      одиночный символ.

    <p>Щелчок клавишей 1 &quot;Мыши&quot; устанавливает курсор ввода
      непосредственно перед символом, расположенным под курсором
      &quot;Мыши&quot;, устанавливает фокус ввода на данном примитиве
      и отменяет выделение в нем.</p>

    <p>Перетаскивание курсора &quot;Мыши&quot; приводит к выделению
      символов между курсором ввода и конечным положением курсора
      &quot;Мыши&quot;.</p> <p>Двойной щелчок клавишей 1
      &quot;Мыши&quot; приводит к выделению слова под курсором
      &quot;Мыши&quot; и устанавливает курсор ввода перед первым
      символом этого слова. Перетаскивание &quot;Мыши&quot; после
      двойного щелчка приводит к выделению группы, состоящей из целых
      слов.</p>

    <p>Тройной щелчок клавишей 1 &quot;Мыши&quot; приводит к выделению
      всего текста в поле ввода и устанавливает курсор ввода перед
      первым символом текста.</p>

    <p>Края выделения можно выровнять, если тащить .Мышь. с нажатой
      клавишей 1 при нажатой клавише <strong>Shift</strong>; в этом
      случае выравнивается край, ближайший к положению курсора
      &quot;Мыши&quot; в момент нажатия ее клавиши 1. Если по кнопке
      щелкнули дважды перед тем, как тащить &quot;Мышь&quot;, то
      выделение выравнивается относительно концов полных слов.</p>

    <p>Щелчок по клавише 1 &quot;Мыши&quot; при нажатой клавише
      Control приводит к установке курсора ввода в поле ввода без
      изменения текущего выделения.</p>

    <p>Обычные печатные символы вводятся в месте расположения курсора
      ввода.</p>

    <p>Содержимое поле ввода можно перемещать с помощью клавиши 2
      &quot;Мыши&quot;. Щелчок по клавише 2 &quot;Мыши&quot; и без ее
      перемещения приводит к копированию выделения в поле ввода в
      место расположения курсора &quot;Мыши&quot;.</p>

    <p>Если тащить .Мышь. слева или справа от окна поля ввода по
      направлению от окна при нажатой клавише 1, то в окне
      автоматически появляется невидимый ранее текст (если в поле со
      стороны, где .Мышь. покинула окно, есть текст, невидимый в
      окне).</p>

    <p>Нажатие на клавиши <strong>Left</strong> или
      <strong>Right</strong> приводит к перемещению курсора ввода на
      один символ влево или вправо; при этом текущее выделение
      отменяется и устанавливается новая опорная точка выделения. Если
      нажатие на клавиши <strong>Left</strong> или
      <strong>Right</strong> происходит при нажатой клавише
      <strong>Shift</strong>, то курсор ввода перемещается и
      пройденный им символ добавляется к выделению. Нажатие на клавиши
      <strong>Control-Left</strong> и <strong>Control-Right</strong>
      приводит к перемещению курсора ввода на полное слово, сочетания
      <strong>Control-Shift-Left</strong> и
      <strong>Control-Shift-Right</strong> еще и расширяют
      выделение. Сочетания <strong>Control-b</strong> и
      <strong>Control-f</strong> играют ту же роль, что и
      <strong>Left</strong> и <strong>Right</strong>, а сочетания
      <strong>Meta-b</strong> и <strong>Meta-f</strong> соответственно
      ту же роль, что и <strong>Control-Shift-Left</strong> и
      <strong>Control-Shift-Right</strong>.</p>

    <p>Нажатие на клавишу <strong>Home</strong> (или
      <strong>Control-a</strong>) приводит к перемещению курсора к
      началу текста с отменой существующих
      выделений. <strong>Shift-Home</strong> перемещает курсор к
      началу текста и доводит до этого места выделение.</p>

    <p>Нажатие на клавишу <strong>End</strong> (или
      <strong>Control-e</strong>) приводит к перемещению курсора в
      конец текста с отменой существующих
      выделений. <strong>Shift-End</strong> перемещает курсор в конец
      текста и доводит до этого места выделение.</p>

    <p>Нажатие на клавишу <strong>Select</strong> (или
      <strong>Control-Space</strong>) устанавливает опорную точку
      выделения в положение курсора ввода.  Текущее выделение при этом
      не изменяется. Нажатие на клавиши <strong>t-Select</strong> (или
      <strong>Control-Shift-Space</strong>) доводит выделение до
      текущего положения курсора ввода (или устанавливает выделение
      между опорной точкой выделения и текущим положением курсора
      ввода, если текущее выделение отсутствовало).</p>

    <p><strong>Control-/</strong> выделяет весь текст в окне.</p>

    <p><strong>{Control-\}</strong> приводит к отмене текущего
      выделения.</p>

    <p>Клавиша <strong>F16</strong>, на многих станциях Sun
      обозначенная <strong>py</strong>, (или
      <strong>Meta-w</strong>) копирует выделение в примитиве в
      карман.</p>

    <p>Клавиша <strong>F20</strong>, на многих станциях Sun
      обозначенная <strong>Cut</strong>, (или
      <strong>Control-w</strong>) копирует выделение в примитиве в
      карман и удаляет выделение. Если выделение в примитиве
      отсутствует, то нажатие на эти клавиши не приводит ни к каким
      действиям.</p>

    <p>Клавиша <strong>F18</strong>, на многих станциях Sun
      обозначенная <strong>te</strong>, (или
      <strong>Control-y</strong>) копирует содержимое кармана в место
      расположения курсора ввода.</p>

    <p>Нажатие на клавишу <strong>Delete</strong> приводит к удалению
      выделения. Если выделение отсутствует, то удаляется символ,
      непосредственно примыкающий к курсору ввода справа.</p>

    <p>Нажатие на клавишу <strong>BackSpace</strong> (или
      <strong>Control-h</strong>) приводит к удалению выделения. Если
      выделение отсутствует, то удаляется символ, непосредственно
      примыкающий к курсору ввода слева.</p>

    <p><strong>Control-d</strong> удаляет символ, непосредственно
      примыкающий к курсору ввода справа.</p>

    <p><strong>Meta-d</strong> удаляет слово, непосредственно
      примыкающее к курсору ввода справа.</p>

    <p><strong>Control-k</strong> удаляет все символы справа от
      курсора ввода.</p>

    <p>Если поле ввода отключено указанием значения
      <strong>disabled</strong> параметра <strong>-state</strong>, то
      в окне поля по-прежнему можно перемещать текст и производить
      выделение, однако курсор ввода в окне не появляется и
      редактирование текста невозможно.</p>

    <p>Определяя новые привязки к отдельным примитивам или
      переопределяя привязки класса, поведение полей ввода можно
      изменить.</p>
  </body>
</html>