Archive-name: comp-speech-faq/part3
Last-modified: 1996/10/04
URL: http://www.speech.su.oz.au/comp.speech/


                   COMP.SPEECH FAQ POSTING - PART 3/3


[Note: this document has been automatically extracted from a WWW site:
        http://www.speech.su.oz.au/comp.speech/
This may introduce some formatting errors.]


                              Speech Synthesis

                         comp.speech FAQ Section 5

          * SpeechLinks: Speech Synthesis
          * Q5.1: What is speech synthesis?
          * Q5.2: How can speech synthesis be performed?
          * Q5.3: References/Books on Synthesis
          * Q5.4: Speech Synthesis on the WWW
          * Q5.5: Speech Synthesis Software/Hardware


___________________________________________________________________________

                        Q5.1: What is speech synthesis?

   Speech synthesis programs convert written input to spoken output by
   automatically generating synthetic speech. Speech synthesis is often
   referred to a "Text-to-Speech" conversion (TTS).


___________________________________________________________________________

                       Q5.2: Performing speech synthesis

   There are several algorithms. The choice depends on the task they're
   used for. The easiest way is to just record the voice of a person
   speaking the desired phrases. This is useful if only a restricted
   volume of phrases and sentences is used, e.g. messages in a train
   station, or schedule information via phone. The quality depends on the
   way recording is done.

   More sophisticated but worse in quality are algorithms which split the
   speech into smaller pieces. The smaller those units are, the less are
   they in number, but the quality also decreases. An often used unit is
   the phoneme, the smallest linguistic unit. Depending on the language
   used there are about 35-50 phonemes in western European languages,
   i.e. there are 35-50 single recordings. The problem is combining them
   as fluent speech requires fluent transitions between the elements. The
   intellegibility is therefore lower, but the memory required is small.

   A solution to this dilemma is using diphones. Instead of splitting at
   the transitions, the cut is done at the center of the phonemes,
   leaving the transitions themselves intact. This gives about 400
   elements (20*20) and the quality increases.

   The longer the units become, the more elements are there, but the
   quality increases along with the memory required. Other units which
   are widely used are half-syllables, syllables, words, or combinations
   of them, e.g. word stems and inflectional endings.

   The Museum of Speech Analysis and Synthesis has pictures of artificial
   speech systems going back over 150 years: worth a visit. (
   http://mambo.ucsc.edu/psl/smus/smus.html)


___________________________________________________________________________

                      Q5.3: References/Books on Synthesis

  Books and Papers

     * Douglas O'Shaughnessy, Speech Communication: Human and Machine
       Addison Wesley series in Electrical Engineering: Digital Signal
       Processing, 1987.
     * D. H. Klatt, "Review of Text-To-Speech Conversion for English",
       Jnl. of the Acoustic Society of America (JASA), Vol 82, pp
       737-793.
     * "Talking Machines, Theories, Models and Designs" Eds, G. Bailly &
       C. Benoit (Elsevier: North Holland)
     * I. H. Witten. Principles of Computer Speech, London: Academic
       Press, Inc., 1982.
     * W.B. Kleijn and K.K. Paliwal (Eds.), Speech Coding and Synthesis,
       Elsevier, Amsterdam, 1995.
       Contents, preface etc on the WWW:
       http://www.elsevier.nl/section/engtech/scs/menu.htm
     * John Allen, Sharon Hunnicut and Dennis H. Klatt, "From Text to
       Speech: The MITalk System", Cambridge University Press, 1987.

  On the WWW

    Survey of the State of the Art in Human Language Technology
          Report edited by Ronald A. Cole et. al. with a section on
          Text-to-Speech Technologies.
          http://www.cse.ogi.edu/CSLU/HLTsurvey/ch5node1.html

  Bibliographies and Reference Lists

     * WWW searchable online-bibiliography for Phonetics and Speech
       Technology with more than 8000 entries. Provided by Institut fur
       Phonetik at Johann Wolfgang Goethe-Universitat Frankfurt.
       http://www.uni-frankfurt.de/~ifb/bib_engl.html
     * Computational Speech Processing: Speech Analysis, Recognition,
       Understanding, Compression, Transmission, Coding, Synthesis ; Text
       to Speech Systems, Speech to Tactile Displays, Speaker
       Identification, Prosody Processing : BIBLIOGRAPHY, by Conrad F.
       Sabourin, 1994, 2 volumes, 1187p, ISBN 2-921173-21-2, INFOLINGUA
       inc., P.O. Box 187 Snowdon, Montreal, H3X 3T4, Canada.
       See also: http://gomer.mlink.net/infolingua.html


___________________________________________________________________________

                   Q5.4: Speech Synthesis on the WWW

   Most of the following are links to WWW pages with demonstrations of
   speech synthesis. Plenty more links are included in the detailed list
   of speech synthesis software/hardware in Q5.5.

   Speech Synthesis "Museum"
          URL: http://www.cs.bham.ac.uk/~jpi/synth/museum.html
          Maintained by Jon Iles (j.p.iles@cs.bham.ac.uk) at the
          University of Birmingham.
          Information and speech samples for

          + YorkTalk
          + Loughborough Sound Images
          + University of Birmingham - FDFS
          + Eurovocs
          + DECtalk
          + AT&T Bell Labs Synthesiser
          + S.W.A.Ll.C. - Welsh Synthesis from CSTR
          + All-Prosodic Speech Synthesis - IPOX
          + Orator from Bellcore

   Pavarobotti
          http://www.shc.uiowa.edu/fun/pavarobotti/pavarobotti.html
          WWW demo of the Pavarobotti synthesis technology developed at
          the National Center for Voice and Speech
          (http://www.shc.uiowa.edu/ncvs_home.html).

   Say...
          http://wwwtios.cs.utwente.nl/say
          WWW demo of the rsynth speech synthesis software. The WWW
          capability was implemented by Axel Belinfante.

   Musee sonore de la synthese de la Parole en francais
          http://www.icp.grenet.fr/exemples_synthese/ex.html
          Speech synthesis examples from a series of French language
          speech synthesisers plus links to other speech synthesis demo
          pages.

          + ICP-Grenoble
          + CNET-Lannion (with TD-PSOLA)
          + KTH-Stockholm
          + Universite-Mons - several versions

   WATSON FlexTalk from AT&T Advanced Speech Products Group
          http://www.att.com/aspg/demo.html
          WWW interface to the WATSON FlexTalk speech synthesis
          demonstration.

   AT&T Bell Laboratories Voices
          http://www.research.att.com/cgi-bin/voices.form/
          WWW interface to the AT&T Bell Laboratories text to speech
          (TTS) synthesizer

   Laureate from British Telecom
          http://www.labs.bt.com/innovate/speech/laureate/
          Demo of the Laureate speech synthesis system - not yet
          commercially available.

   ORATOR from Bellcore
          Online demo of the ORATOR system developed at Bellcore.
          http://www.bellcore.com/ORATOR/

   SVOX from TIK, ETH in Zurich
          http://www.tik.ee.ethz.ch/cgi-bin/w3svox
          Demo of German speech synthesis from Institut fur Technische
          Informatik und Kommunikationsnetze.

   Multi-Lingual TTS from Gerhard-Mercator University, Duisburg
          http://www.fb9-ti.uni-duisburg.de/demos/speech.html
          Synthesis in German, English or Japanese.

   TMH: Institutionen for Taloverforing och Musikakustik, Kungliga
          Tekniska Hogskolan
          http://www.speech.kth.se/info/software.html
          Synthesis in Swedish, Finish, Norwegian, Icelandic, Danish,
          British and American English, French, German, Italian, Spanish,
          LA Spanish and Greek.

   Haskins Laboratory WWW Site
          http://www.haskins.yale.edu/Haskins/MISC/special.html
          Examples of several types of speech synthesis. Articulatory
          Synthesis by HyperASY. SineWave Synthesis. Gestural
          Computational Model. Pattern Playback system of the 1940's!

   BeSTspeech from Berkeley Speech Technologies, Inc., (BST)
          http://www.bestspeech.com/weblang.html

   Eurovocs Multilingual Speech Synthesis
          http://www.elis.rug.ac.be/ELISgroups/speech/research/eurovocs.h
          tml
          Based on Lernout and Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Had Ha