<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:include schemaLocation="ore_types.xsd"/>

  <xs:group name="oreTradeData">
    <xs:choice>
      <xs:element type="swapData" name="CrossCurrencySwapData"/>
      <xs:element type="swapData" name="InflationSwapData"/>
      <xs:element type="swapData" name="SwapData"/>
      <xs:element type="swapData" name="EquitySwapData"/>
      <xs:element type="callableSwapData" name="CallableSwapData"/>
      <xs:element type="arcOptionData" name="ArcOptionData"/>
      <xs:element type="swaptionData" name="SwaptionData"/>
      <xs:element type="varianceSwapData" name="VarianceSwapData"/>
      <xs:element type="varianceSwapData" name="EquityVarianceSwapData"/>
      <xs:element type="varianceSwapData" name="FxVarianceSwapData"/>
      <xs:element type="varianceSwapData" name="CommodityVarianceSwapData"/>
      <xs:element type="forwardRateAgreementData" name="ForwardRateAgreementData"/>
      <xs:element type="fxForwardData" name="FxForwardData"/>
      <xs:element type="fxAverageForwardData" name="FxAverageForwardData"/>
      <xs:element type="fxOptionData" name="FxOptionData"/>
      <xs:element type="fxBarrierOptionData" name="FxBarrierOptionData"/>
      <xs:element type="fxBarrierOptionData" name="FxDoubleBarrierOptionData"/>
      <xs:element type="fxDigitalOptionData" name="FxDigitalOptionData"/>
      <xs:element type="fxBarrierOptionData" name="FxEuropeanBarrierOptionData"/>
      <xs:element type="fxKIKOBarrierOptionData" name="FxKIKOBarrierOptionData"/>
      <xs:element type="fxDigitalBarrierOptionData" name="FxDigitalBarrierOptionData"/>
      <xs:element type="fxTouchOptionData" name="FxTouchOptionData"/>
      <xs:element type="fxTouchOptionData" name="FxDoubleTouchOptionData"/>
      <xs:element type="fxSwapData" name="FxSwapData"/>
      <xs:element type="capFloorData" name="CapFloorData"/>
      <xs:element type="equityFutureOptionData" name="EquityFutureOptionData"/>
      <xs:element type="equityOptionData" name="EquityOptionData"/>
      <xs:element type="eqBarrierOptionData" name="EquityBarrierOptionData"/>
      <xs:element type="eqBarrierOptionData" name="EquityDoubleBarrierOptionData"/>
      <xs:element type="equityForwardData" name="EquityForwardData"/>
      <xs:element type="eqBarrierOptionData" name="EquityEuropeanBarrierOptionData"/>
      <xs:element type="eqDigitalOptionData" name="EquityDigitalOptionData"/>
      <xs:element type="eqTouchOptionData" name="EquityDoubleTouchOptionData"/>
      <xs:element type="eqTouchOptionData" name="EquityTouchOptionData"/>
      <xs:element type="cliquetOptionData" name="EquityCliquetOptionData"/>
      <xs:element type="bondData" name="BondData"/>
      <xs:element type="forwardBondData" name="ForwardBondData"/>
      <xs:element type="bondFutureData" name="BondFutureData"/>
      <xs:element type="creditDefaultSwapData" name="CreditDefaultSwapData"/>
      <xs:element type="creditDefaultSwapOptionData" name="CreditDefaultSwapOptionData"/>
      <xs:element type="commodityForwardData" name="CommodityForwardData"/>
      <xs:element type="commodityOptionData" name="CommodityOptionData"/>
      <xs:element type="commodityDigitalAveragePriceOptionData" name="CommodityDigitalAveragePriceOptionData"/>
      <xs:element type="commodityDigitalOptionData" name="CommodityDigitalOptionData"/>
      <xs:element type="commoditySpreadOptionData" name="CommoditySpreadOptionData"/>
      <xs:element type="commoditySwapData" name="CommoditySwapData"/>
      <xs:element type="commoditySwaptionData" name="CommoditySwaptionData"/>
      <xs:element type="commodityAveragePriceOptionData" name="CommodityAveragePriceOptionData"/>
      <xs:element type="commodityOptionStripData" name="CommodityOptionStripData"/>
      <xs:element type="commodityPositionData" name="CommodityPositionData"/>
      <xs:element type="singleUnderlyingAsianOptionData" name="EquityAsianOptionData" />
      <xs:element type="singleUnderlyingAsianOptionData" name="FxAsianOptionData" />
      <xs:element type="singleUnderlyingAsianOptionData" name="CommodityAsianOptionData" />
      <xs:element type="bondOptionData" name="BondOptionData"/>
      <xs:element type="bondRepoData" name="BondRepoData"/>
      <xs:element type="bondTRSData" name="BondTRSData"/>
      <xs:element type="cdoData" name="CdoData"/>
      <xs:element type="creditLinkedSwapData" name="CreditLinkedSwapData"/>
      <xs:element type="indexCreditDefaultSwapData" name="IndexCreditDefaultSwapData"/>
      <xs:element type="indexCreditDefaultSwapOptionData" name="IndexCreditDefaultSwapOptionData"/>
      <xs:element type="multiLegOptionData" name="MultiLegOptionData"/>
      <xs:element type="ascotData" name="AscotData"/>
      <xs:element type="convertibleBondData" name="ConvertibleBondData"/>
      <xs:element type="callableBondData" name="CallableBondData"/>
      <xs:element type="tlockData" name="TreasuryLockData"/>
      <xs:element type="rpaData" name="RiskParticipationAgreementData"/>
      <xs:element type="cbodata" name="CBOData"/>
      <xs:element type="bondBasketData" name="BondBasketData"/>
      <xs:element type="equityPositionData" name="EquityPositionData"/>
      <xs:element type="equityOptionPositionData" name="EquityOptionPositionData"/>
      <xs:element type="totalReturnSwapData" name="TotalReturnSwapData"/>
      <xs:element type="totalReturnSwapData" name="ContractForDifferenceData"/>
      <xs:element type="compositeTradeData" name="CompositeTradeData"/>
      <xs:element type="pairwiseVarianceSwapData1" name="PairwiseVarianceSwapData"/>
      <xs:element type="pairwiseVarianceSwapData2" name="EquityPairwiseVarianceSwapData"/>
      <xs:element type="pairwiseVarianceSwapData2" name="FxPairwiseVarianceSwapData"/>
      <xs:element type="eqOutperformanceOptionData" name="EquityOutperformanceOptionData"/>
      <xs:element type="flexiSwapData" name="FlexiSwapData"/>
      <xs:element type="bgSwapData" name="BalanceGuaranteedSwapData"/>
      <xs:element type="commodityRevenueOptionData" name="CommodityRevenueOptionData"/>
      <!-- scripted trades -->
      <xs:element type="basketVarianceSwapData" name="BasketVarianceSwapData"/>
      <xs:element type="basketVarianceSwapData2" name="EquityBasketVarianceSwapData"/>
      <xs:element type="basketVarianceSwapData2" name="FxBasketVarianceSwapData"/>
      <xs:element type="basketVarianceSwapData2" name="CommodityBasketVarianceSwapData"/>
      <xs:element type="extendedAccumulatorData" name="ExtendedAccumulatorData"/>
      <xs:element type="varianceOptionData" name="VarianceOptionData"/>
      <xs:element type="varianceDispersionSwapData" name="VarianceDispersionSwapData"/>
      <xs:element type="kikoVarianceSwapData" name="KIKOVarianceSwapData"/>
      <xs:element type="corridorVarianceSwapData" name="CorridorVarianceSwapData"/>
      <xs:element type="indexedCorridorVarianceSwapData" name="IndexedCorridorVarianceSwapData"/>
      <xs:element type="kikoCorridorVarianceSwapData" name="KIKOCorridorVarianceSwapData"/>
      <xs:element type="corridorVarianceDispersionSwapData" name="CorridorVarianceDispersionSwapData"/>
      <xs:element type="koCorridorVarianceDispersionSwapData" name="KOCorridorVarianceDispersionSwapData"/>
	  <xs:element type="pairwiseGeometricVarianceDispersionSwapData" name="PairwiseGeometricVarianceDispersionSwapData"/>
      <xs:element type="conditionalVarianceSwap01Data" name="ConditionalVarianceSwap01Data"/>
      <xs:element type="conditionalVarianceSwap02Data" name="ConditionalVarianceSwap02Data"/>
      <xs:element type="gammaSwapData" name="GammaSwapData"/>
      <xs:element type="bestEntryOptionData" name="BestEntryOptionData"/>
      <xs:element type="dualEuroBinaryOptionData" name="DualEuroBinaryOptionData"/>
      <xs:element type="dualEuroBinaryOptionDoubleKOData" name="DualEuroBinaryOptionDoubleKOData"/>
      <xs:element type="volBarrierOptionData" name="VolatilityBarrierOptionData"/>
      <xs:element type="tarfData2" name="FxTaRFData"/>
      <xs:element type="tarfData2" name="EquityTaRFData"/>
      <xs:element type="tarfData2" name="CommodityTaRFData"/>
      <xs:element type="accumulatorData" name="FxAccumulatorData"/>
      <xs:element type="accumulatorData" name="EquityAccumulatorData"/>
      <xs:element type="accumulatorData" name="CommodityAccumulatorData"/>
      <xs:element type="windowBarrierOptionData2" name="FxWindowBarrierOptionData"/>
      <xs:element type="windowBarrierOptionData2" name="EquityWindowBarrierOptionData"/>
      <xs:element type="windowBarrierOptionData2" name="CommodityWindowBarierOptionData"/>
      <xs:element type="basketOptionData" name="EquityBasketOptionData"/>
      <xs:element type="basketOptionData" name="FxBasketOptionData"/>
      <xs:element type="basketOptionData" name="CommodityBasketOptionData"/>
      <xs:element type="genericBarrierOptionData" name="FxGenericBarrierOptionData"/>
      <xs:element type="genericBarrierOptionData" name="EquityGenericBarrierOptionData"/>
      <xs:element type="genericBarrierOptionData" name="CommodityGenericBarrierOptionData"/>
      <xs:element type="rainbowOptionData" name="EquityRainbowOptionData"/>
      <xs:element type="rainbowOptionData" name="FxRainbowOptionData"/>
      <xs:element type="rainbowOptionData" name="CommodityRainbowOptionData"/>
      <xs:element type="autocallable01Data" name="Autocallable01Data"/>
      <xs:element type="doubleDigitalOptionData" name="DoubleDigitalOptionData"/>
      <xs:element type="performanceOption01Data" name="PerformanceOption01Data"/>
      <xs:element type="scriptedTradeData" name="ScriptedTradeData"/>
      <xs:element type="vanillaBasketOptionData" name="VanillaBasketOptionData"/>
      <xs:element type="asianBasketOptionData" name="AsianBasketOptionData"/>
      <xs:element type="averageStrikeBasketOptionData" name="AverageStrikeBasketOptionData"/>
      <xs:element type="lookbackCallBasketOptionData" name="LookbackCallBasketOptionData"/>
      <xs:element type="lookbackPutBasketOptionData" name="LookbackPutBasketOptionData"/>
      <xs:element type="bestOfAirbagData" name="BestOfAirbagData"/>
      <xs:element type="worstOfBasketSwapData" name="WorstOfBasketSwapData"/>
      <xs:element type="worstOfBasketSwapData2" name="FxWorstOfBasketSwapData"/>
      <xs:element type="worstOfBasketSwapData2" name="EquityWorstOfBasketSwapData"/>
      <xs:element type="worstOfBasketSwapData2" name="CommodityWorstOfBasketSwapData"/>
      <xs:element type="worstPerformanceRainbowOption01Data" name="WorstPerformanceRainbowOption01Data"/>
      <xs:element type="worstPerformanceRainbowOption02Data" name="WorstPerformanceRainbowOption02Data"/>
      <xs:element type="worstPerformanceRainbowOption03Data" name="WorstPerformanceRainbowOption03Data"/>
      <xs:element type="worstPerformanceRainbowOption04Data" name="WorstPerformanceRainbowOption04Data"/>
      <xs:element type="worstPerformanceRainbowOption05Data" name="WorstPerformanceRainbowOption05Data"/>
      <xs:element type="worstPerformanceRainbowOption06Data" name="WorstPerformanceRainbowOption06Data"/>
      <xs:element type="worstPerformanceRainbowOption07Data" name="WorstPerformanceRainbowOption07Data"/>
      <xs:element type="bestOfAssetOrCashRainbowOptionData" name="BestOfAssetOrCashRainbowOptionData"/>
      <xs:element type="worstOfAssetOrCashRainbowOptionData" name="WorstOfAssetOrCashRainbowOptionData"/>
      <xs:element type="minRainbowOptionData" name="MinRainbowOptionData"/>
      <xs:element type="maxRainbowOptionData" name="MaxRainbowOptionData"/>
      <xs:element type="windowBarrierOptionData" name="WindowBarrierOptionData"/>
      <xs:element type="accumulator01Data" name="Accumulator01Data"/>
      <xs:element type="accumulator02Data" name="Accumulator02Data"/>
      <xs:element type="bestEntryOptionData2" name="EquityBestEntryOptionData"/>
      <xs:element type="bestEntryOptionData2" name="FxBestEntryOptionData"/>
      <xs:element type="bestEntryOptionData2" name="CommodityBestEntryOptionData"/>
      <xs:element type="tarfData" name="TaRFData"/>
      <xs:element type="europeanRainbowCallSpreadOptionData" name="EuropeanRainbowCallSpreadOptionData"/>
      <xs:element type="rainbowCallSpreadBarrierOptionData" name="RainbowCallSpreadBarrierOptionData"/>
      <xs:element type="asianRainbowCallSpreadOptionData" name="AsianRainbowCallSpreadOptionData"/>
      <xs:element type="asianIrCapFloorData" name="AsianIrCapFloorData"/>
      <xs:element type="forwardVolatilityAgreementData" name="ForwardVolatilityAgreementData"/>
      <xs:element type="correlationSwapData" name="CorrelationSwapData"/>
      <xs:element type="assetLinkedCliquetOptionData" name="AssetLinkedCliquetOptionData"/>
      <xs:element type="constantMaturityVolatilitySwapData" name="ConstantMaturityVolatilitySwapData"/>
      <xs:element type="cmsCapFloorBarrierData" name="CMSCapFloorBarrierData"/>
      <xs:element type="fixedStrikeForwardStartingOptionData" name="FixedStrikeForwardStartingOptionData"/>
      <xs:element type="floatingStrikeForwardStartingOptionData" name="FloatingStrikeForwardStartingOptionData"/>
      <xs:element type="forwardStartingSwaptionData" name="ForwardStartingSwaptionData"/>
      <xs:element type="flooredAverageCPIZCIISData" name="FlooredAverageCPIZCIISData"/>
      <xs:element type="genericBarrierOptionDataRaw" name="GenericBarrierOptionData"/>
      <xs:element type="movingMaxYYIISData" name="MovingMaxYYIISData"/>
      <xs:element type="irregularYYIISData" name="IrregularYYIISData"/>
      <xs:element type="europeanOptionBarrierData" name="EuropeanOptionBarrierData"/>
      <xs:element type="ladderLockInOptionData" name="LadderLockInOptionData"/>
      <xs:element type="lapseHedgeSwapData" name="LapseHedgeSwapData"/>
      <xs:element type="knockOutSwapData" name="KnockOutSwapData"/>
      <xs:element type="LPISwapData" name="LPISwapData"/>
      <xs:element type="cashPositionData" name="CashPositionData"/>
	  <xs:element type="strikeResettableOptionData" name="StrikeResettableOptionData"/>
	  <xs:element type="strikeResettableOptionData2" name="EquityStrikeResettableOptionData"/>
      <xs:element type="strikeResettableOptionData2" name="FxStrikeResettableOptionData"/>
      <xs:element type="strikeResettableOptionData2" name="CommodityStrikeResettableOptionData"/>
    </xs:choice>
  </xs:group>

  <xs:complexType name="envelope">
    <xs:all>
      <xs:element type="xs:string" name="CounterParty" minOccurs="0"/>
      <xs:element ref="nettingSetGroup" minOccurs="0"/>
      <xs:element name="PortfolioIds" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:string" name="PortfolioId" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AdditionalFields" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="nettingSetDetails">
    <xs:all>
      <xs:element type="xs:string" name="NettingSetId"/>
      <xs:element type="xs:string" minOccurs="0" name="AgreementType"/>
      <xs:element type="xs:string" minOccurs="0" name="CallType"/>
      <xs:element type="xs:string" minOccurs="0" name="InitialMarginType"/>
      <xs:element type="xs:string" minOccurs="0" name="LegalEntityId"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="strikePriceData">
    <xs:all>
      <xs:element type="extendedCurrencyCode" name="Currency" minOccurs="0"/>
      <xs:element type="xs:float" name="Value"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="strikeYieldData">
    <xs:all>
      <xs:element type="compounding" name="Compounding" minOccurs="0"/>
      <xs:element type="xs:float" name="Yield"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="levelData">
    <xs:all>
      <xs:element type="xs:string" name="Currency"/>
      <xs:element type="xs:string" name="Value"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="tradeActions">
    <xs:sequence>
      <xs:element type="tradeAction" name="TradeAction" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="tradeAction">
    <xs:all>
      <xs:element type="tradeActionType" name="Type"/>
      <xs:element type="tradeActionOwner" name="Owner"/>
      <xs:element type="scheduleData" name="Schedule"/>
    </xs:all>
  </xs:complexType>


  <xs:complexType name="swapData">
    <xs:sequence>
      <xs:element type="xs:boolean" name="RoundNettedFloatingLegs" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:nonNegativeInteger" name="NettingPrecision" minOccurs="0" maxOccurs="1"/>
      <xs:element type="settlementType" name="Settlement" maxOccurs="1" minOccurs="0"/>
      <xs:element type="legData" name="LegData" maxOccurs="unbounded" minOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="swaptionData">
    <xs:choice>
      <xs:sequence>
        <xs:element type="optionData" name="OptionData"/>
        <xs:element type="legData" name="LegData" maxOccurs="unbounded" minOccurs="1"/>
      </xs:sequence>
      <xs:sequence>
        <xs:element type="legData" name="LegData" maxOccurs="unbounded" minOccurs="1"/>
        <xs:element type="optionData" name="OptionData"/>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="optionPaymentData">
    <xs:choice>
      <xs:element name="Dates">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="date" name="Date" minOccurs="1" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Rules">
        <xs:complexType>
          <xs:all>
            <xs:element type="xs:nonNegativeInteger" name="Lag"/>
            <xs:element type="calendar" name="Calendar"/>
            <xs:element type="businessDayConvention" name="Convention"/>
            <xs:element type="optionPayRelativeTo" name="RelativeTo" minOccurs="0"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="optionExerciseData">
    <xs:all>
      <xs:element type="date" name="Date"/>
      <xs:element type="xs:decimal" name="Price" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="optionData">
    <xs:all>
      <xs:element type="xs:string" name="LongShort"/>
      <xs:element type="xs:string" name="OptionType" minOccurs="0"/>
      <xs:element type="xs:string" name="PayoffType" minOccurs="0"/>
      <xs:element type="xs:string" name="PayoffType2" minOccurs="0"/>
      <xs:element type="xs:string" name="Style" minOccurs="0"/>
      <xs:element type="xs:string" name="NoticePeriod" minOccurs="0"/>
      <xs:element type="xs:string" name="NoticeCalendar" minOccurs="0"/>
      <xs:element type="xs:string" name="NoticeConvention" minOccurs="0"/>
      <xs:element type="xs:string" name="MidCouponExercise" minOccurs="0"/>
      <xs:element type="settlementType" name="Settlement" minOccurs="0"/>
      <xs:element type="settlementMethod" name="SettlementMethod" minOccurs="0"/>
      <xs:element type="xs:string" name="PayOffAtExpiry" minOccurs="0"/>
      <xs:element type="xs:string" name="PremiumAmount" minOccurs="0"/>
      <xs:element type="premiumCurrencyCode" name="PremiumCurrency" minOccurs="0"/>
      <xs:element type="xs:string" name="PremiumPayDate" minOccurs="0"/>
      <xs:element type="premiumData" name="Premiums" minOccurs="0"/>
      <xs:element type="xs:string" name="ExercisePrices" minOccurs="0"/>
      <xs:element name="ExerciseFees" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ExerciseFee" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="type" type="xs:string" />
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:string" name="ExerciseFeeSettlementPeriod" minOccurs="0"/>
      <xs:element type="xs:string" name="ExerciseFeeSettlementCalendar" minOccurs="0"/>
      <xs:element type="xs:string" name="ExerciseFeeSettlementConvention" minOccurs="0"/>
      <xs:element ref="exerciseDatesGroup" minOccurs="0" />
      <xs:element type="bool" name="AutomaticExercise" minOccurs="0"/>
      <xs:element type="optionExerciseData" name="ExerciseData" minOccurs="0"/>
      <xs:element type="optionPaymentData" name="PaymentData" minOccurs="0"/>
      <xs:element name="SettlementData" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element type="currencyCode" name="PayCurrency"/>
            <xs:element type="xs:string" name="FXIndex"/>
            <xs:element type="xs:string" name="FixingDate" minOccurs="0" maxOccurs="1"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bondData">
    <xs:sequence>
      <xs:element type="xs:string" name="IssuerId" minOccurs="0"/>
      <xs:element type="xs:string" name="CreditCurveId" minOccurs="0"/>
      <xs:element type="xs:string" name="CreditGroup" minOccurs="0"/>
      <xs:element type="xs:string" name="SecurityId"/>
      <xs:element type="xs:string" name="ReferenceCurveId" minOccurs="0"/>
      <xs:element type="xs:string" name="IncomeCurveId" minOccurs="0"/>
      <xs:element type="xs:string" name="VolatilityCurveId" minOccurs="0"/>
      <xs:element type="xs:string" name="SettlementDays" minOccurs="0"/>
      <xs:element type="xs:string" name="Calendar" minOccurs="0"/>
      <xs:element type="xs:string" name="IssueDate" minOccurs="0"/>
      <xs:element type="xs:string" name="PriceQuoteMethod" minOccurs="0"/>
      <xs:element type="xs:string" name="PriceQuoteBaseValue" minOccurs="0"/>
      <xs:element type="xs:string" name="BondNotional" minOccurs="0"/>
      <xs:element type="bondPriceType" name="PriceType" minOccurs="0"/>
      <xs:element type="xs:string" name="Payer" minOccurs="0"/>
      <xs:element type="legData" name="LegData" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="bool" name="CreditRisk" minOccurs="0"/>
      <xs:element type="xs:string" name="SubType" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="forwardBondData">
    <xs:all>
      <xs:element type="bondData" name="BondData"/>
      <xs:element type="settlementData" name="SettlementData"/>
      <xs:element name="PremiumData" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element type="xs:string" name="Amount"/>
            <xs:element type="xs:string" name="Date"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:string" name="LongInForward"/>
      <xs:element type="xs:boolean" name="KnockOut" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bondFutureData">
    <xs:all>
      <xs:element type="xs:string" name="ContractName"/>
      <xs:element type="xs:string" name="ContractNotional"/>
      <xs:element type="xs:string" name="LongShort"/>
      <xs:element type="currencyCode" name="Currency" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="ContractMonth" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="DeliverableGrade" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="FairPrice" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="Settlement" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="SettlementDirty" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="RootDate" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="ExpiryBasis" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="SettlementBasis" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="ExpiryLag" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="SettlementLag" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="LastTradingDate" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="LastDeliveryDate" maxOccurs="1" minOccurs="0"/>
      <xs:element type="deliveryBasket" name="DeliveryBasket" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="deliveryBasket">
    <xs:sequence>
      <xs:element type="xs:string" name="Id" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="varianceSwapData">
    <xs:all>
      <xs:element type="date" name="StartDate"/>
      <xs:element type="date" name="EndDate"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="xs:string" name="LongShort"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="calendar" name="Calendar"/>
      <xs:element type="momentType" name="MomentType" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:boolean" name="AddPastDividends" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cliquetOptionData">
    <xs:all>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="optionType" name="OptionType"/>
      <xs:element type="xs:float" name="Moneyness"/>
      <xs:element type="xs:float" name="LocalCap" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="LocalFloor" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="GlobalCap" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="GlobalFloor" minOccurs="0" maxOccurs="1"/>
      <xs:element type="scheduleData" name="ScheduleData"/>
      <xs:element type="xs:integer" name="SettlementDays" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="Premium" minOccurs="0" maxOccurs="1"/>
      <xs:element type="date" name="PremiumPaymentDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="currencyCode" name="PremiumCurrency" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="settlementData">
    <xs:all>
      <xs:element type="xs:string" name="ForwardMaturityDate"/>
      <xs:element type="xs:string" name="ForwardSettlementDate" minOccurs="0"/>
      <xs:element type="xs:string" name="Settlement" minOccurs="0"/>
      <xs:element type="xs:float" name="Amount" minOccurs="0"/>
      <xs:element type="xs:float" name="LockRate" minOccurs="0"/>
      <xs:element type="xs:float" name="dv01" minOccurs="0"/>
      <xs:element type="xs:string" name="LockRateDayCounter" minOccurs="0"/>
      <xs:element type="xs:string" name="SettlementDirty" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:element name="exerciseDatesGroup" abstract="true" />
  <xs:element name="ExerciseDates" substitutionGroup="exerciseDatesGroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="date" name="ExerciseDate" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ExerciseSchedule" type="scheduleData" substitutionGroup="exerciseDatesGroup" />

  <xs:element name="legDataType" abstract="true"/>
  <xs:element name="CashflowData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element name="Cashflow">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Amount" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:float">
                      <xs:attribute name="date" type="xs:string" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="FixedLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element name="Rates">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Rate" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:float">
                      <xs:attribute name="startDate" type="xs:string" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="FloatingLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="indexNameType" name="Index"/>
        <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:string" name="LastRecentPeriod" minOccurs="0"/>
        <xs:element type="calendar" name="LastRecentPeriodCalendar" minOccurs="0"/>
        <xs:element type="xs:nonNegativeInteger" name="FixingDays" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:string" name="Lookback" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="RateCutoff" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="IsAveraged" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="HasSubPeriods" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="IncludeSpread" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="IsNotResettingXCCY" minOccurs="0" maxOccurs="1"/>
        <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
        <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
        <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
        <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="LocalCapFloor" minOccurs="0"/>
        <xs:element type="scheduleData" name="FixingSchedule" minOccurs="0"/>
        <xs:element type="scheduleData" name="ResetSchedule" minOccurs="0"/>
        <xs:element type="tradeLevelFixings" name="HistoricalFixings" minOccurs="0"/>
        <xs:element type="stubInterpolation" name="FrontStubInterpolation" minOccurs="0" maxOccurs="1"/>
        <xs:element type="stubInterpolation" name="BackStubInterpolation" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="StubUseOriginalCurve" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="CPILegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element type="xs:string" name="Index" minOccurs="1" maxOccurs="1"/>
        <xs:element name="Rates">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Rate" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:float">
                      <xs:attribute name="startDate" type="xs:string" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:float" name="BaseCPI" minOccurs="0" maxOccurs="1"/>
        <xs:element type="date" name="StartDate" minOccurs="0"/>
        <xs:element type="xs:string" name="ObservationLag" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:string" name="Interpolation" minOccurs="0" maxOccurs="1"/>
        <xs:element type="bool" name="Interpolated" minOccurs="0" maxOccurs="1"/>
        <xs:element type="bool" name="SubtractInflationNotional" maxOccurs="1"/>
        <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
        <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:float" name="FinalFlowCap" minOccurs="0"/>
        <xs:element type="xs:float" name="FinalFlowFloor" minOccurs="0"/>
        <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="SubtractInflationNotionalAllCoupons" minOccurs="0" maxOccurs="1"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="YYLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="xs:string" name="Index"/>
        <xs:element type="xs:integer" name="FixingDays" maxOccurs="1"/>
        <xs:element type="xs:string" name="ObservationLag" maxOccurs="1"/>
        <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
        <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
        <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
        <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="AddInflationNotional" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="IrregularYoY" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="CMSLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="indexNameType" name="Index"/>
        <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1"/>
        <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
        <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
        <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
        <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="CMBLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="xs:string" name="Index"/>
        <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="FixingDays"/>
        <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
        <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
        <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
        <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="CreditRisk" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="DigitalCMSLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element name="CMSLegData">
          <xs:complexType>
            <xs:all>
              <xs:element type="indexNameType" name="Index"/>
              <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
              <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1"/>
              <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
              <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
              <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
              <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
              <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:string" name="CallPosition"/>
        <xs:element type="xs:boolean" name="IsCallATMIncluded"/>
        <xs:element name="CallStrikes">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Strike" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="CallPayoffs">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Payoff" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:string" name="PutPosition"/>
        <xs:element type="xs:boolean" name="IsPutATMIncluded"/>
        <xs:element name="PutStrikes">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Strike" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="PutPayoffs">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Payoff" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="DurationAdjustedCMSLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="indexNameType" name="Index"/>
        <xs:element type="xs:integer" name="Duration" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1"/>
        <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
        <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
        <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
        <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="CMSSpreadLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="indexNameType" name="Index1"/>
        <xs:element type="indexNameType" name="Index2"/>
        <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1"/>
        <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
        <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
        <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
        <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="DigitalCMSSpreadLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element name="CMSSpreadLegData">
          <xs:complexType>
            <xs:all>
              <xs:element type="indexNameType" name="Index1"/>
              <xs:element type="indexNameType" name="Index2"/>
              <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
              <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1"/>
              <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
              <xs:element type="caps" name="Caps" minOccurs="0" maxOccurs="1"/>
              <xs:element type="floors" name="Floors" minOccurs="0" maxOccurs="1"/>
              <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
              <xs:element type="xs:boolean" name="NakedOption" minOccurs="0" maxOccurs="1"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:string" name="CallPosition"/>
        <xs:element type="xs:boolean" name="IsCallATMIncluded"/>
        <xs:element name="CallStrikes">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Strike" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="CallPayoffs">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Payoff" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:string" name="PutPosition"/>
        <xs:element type="xs:boolean" name="IsPutATMIncluded"/>
        <xs:element name="PutStrikes">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Strike" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="PutPayoffs">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:float" name="Payoff" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="EquityLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="xs:float" name="Quantity" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:string" name="ReturnType" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="underlyingTypes"/>
        <xs:element type="xs:float" name="InitialPrice" minOccurs="0" maxOccurs="1"/>
        <xs:element type="extendedCurrencyCode" name="InitialPriceCurrency" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:float" name="DividendFactor" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="NotionalReset" minOccurs="0" maxOccurs="1"/>
        <xs:element type="scheduleData" name="ValuationSchedule" minOccurs="0" maxOccurs="1" />
        <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1" />
        <xs:element name="FXTerms" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:all>
              <xs:element type="extendedCurrencyCode" name="EquityCurrency" minOccurs="0" maxOccurs="1"/>
              <xs:element type="xs:string" name="FXIndex" minOccurs="0" maxOccurs="1"/>
              <xs:element type="xs:integer" name="FXIndexFixingDays" minOccurs="0" maxOccurs="1"/>
              <xs:element type="xs:string" name="FXIndexCalendar" minOccurs="0" maxOccurs="1"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
  <xs:element name="ZeroCouponFixedLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element name="Rates">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Rate" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:float">
                      <xs:attribute name="startDate" type="xs:string" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:string" name="Compounding" maxOccurs="1"/>
        <xs:element type="xs:string" name="SubtractNotional" maxOccurs="1"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="amortizationData">
    <xs:all>
      <xs:element type="amortizationType" name="Type"/>
      <xs:element type="xs:float" name="Value" minOccurs="0"/>
      <xs:element type="xs:string" name="StartDate" minOccurs="0"/>
      <xs:element type="xs:string" name="EndDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="Frequency" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:boolean" name="Underflow" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="indexingData">
    <xs:all>
      <xs:element type="xs:float" name="Quantity" minOccurs="0"/>
      <xs:element type="xs:string" name="Index" minOccurs="0"/>
      <xs:element type="xs:integer" name="IndexFixingDays" minOccurs="0"/>
      <xs:element type="xs:string" name="IndexFixingCalendar" minOccurs="0"/>
      <xs:element type="xs:boolean" name="Dirty" minOccurs="0"/>
      <xs:element type="xs:boolean" name="Relative" minOccurs="0"/>
      <xs:element type="xs:boolean" name="ConditionalOnSurvival" minOccurs="0"/>
      <xs:element type="xs:float" name="InitialFixing" minOccurs="0"/>
      <xs:element type="xs:float" name="InitialNotionalFixing" minOccurs="0"/>
      <xs:element type="scheduleData" name="ValuationSchedule" minOccurs="0"/>
      <xs:element type="xs:integer" name="FixingDays" minOccurs="0"/>
      <xs:element type="xs:string" name="FixingCalendar" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="FixingConvention" minOccurs="0"/>
      <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="legData">
    <xs:all>
      <xs:element type="xs:boolean" name="Payer"/>
      <xs:element type="legType" name="LegType"/>
      <xs:element type="extendedCurrencyCode" name="Currency" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="PaymentConvention" minOccurs="0"/>
      <xs:element type="paymentLag" name="PaymentLag" minOccurs="0"/>
      <xs:element type="xs:integer" name="NotionalPaymentLag" minOccurs="0"/>
      <xs:element type="xs:string" name="PaymentCalendar" minOccurs="0"/>
      <xs:element type="dayCounter" name="DayCounter" minOccurs="0"/>
      <xs:element name="Amortizations" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="amortizationData" name="AmortizationData" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Notionals" minOccurs="0">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="Notional" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
            <xs:element type="fxreset" name="FXReset" minOccurs="0"/>
            <xs:element type="exchanges" name="Exchanges" minOccurs="0"/>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element type="scheduleData" name="ScheduleData" minOccurs="0"/>
      <xs:element name="PaymentDates" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="date" name="PaymentDate" minOccurs="1" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Indexings" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:boolean" name="FromAssetLeg" minOccurs="0"/>
            <xs:element type="indexingData" name="Indexing" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="dayCounter" name="LastPeriodDayCounter" minOccurs="0"/>
      <xs:element ref="legDataType" minOccurs="0"/>
      <xs:element type="xs:boolean" name="StrictNotionalDates" minOccurs="0"/>
      <xs:element type="scheduleData" name="PaymentSchedule" minOccurs="0"/>
	  <xs:element name="SettlementData" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element type="xs:string" name="FXIndex"/>
            <xs:element type="xs:string" name="FixingDate" minOccurs="0" maxOccurs="1"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="legData_capfloor">
    <xs:all>
      <xs:element type="xs:boolean" name="Payer" minOccurs="0"/>
      <xs:element type="legType" name="LegType"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="dayCounter" name="DayCounter"/>
      <xs:element type="businessDayConvention" name="PaymentConvention" minOccurs="0"/>
      <xs:element type="paymentLag" name="PaymentLag" minOccurs="0"/>
      <xs:element type="xs:string" name="PaymentCalendar" minOccurs="0"/>
      <xs:element name="Notionals">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Notional" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element type="fxreset" name="FXReset" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element type="exchanges" name="Exchanges" minOccurs="0" maxOccurs="1"/>
            </xs:choice>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="scheduleData" name="ScheduleData">
      </xs:element>
      <xs:element name="PaymentDates" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="date" name="PaymentDate" minOccurs="1" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="legDataType"/>
    </xs:all>
  </xs:complexType>

  <xs:simpleType name="priceType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Spot"/>
      <xs:enumeration value="FutureSettlement"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="quantitiesType">
    <xs:sequence>
      <xs:element name="Quantity" minOccurs="1" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:float">
              <xs:attribute name="startDate" type="xs:string" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="pricesType">
    <xs:sequence>
      <xs:element name="Price" minOccurs="1" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:float">
              <xs:attribute name="startDate" type="xs:string" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="commodityQuantityFrequencyType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PerCalculationPeriod"/>
      <xs:enumeration value="PerCalendarDay"/>
      <xs:enumeration value="PerPricingDay"/>
      <xs:enumeration value="PerHour"/>
      <xs:enumeration value="PerHourAndCalendarDay"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="commodityPayRelativeToType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CalculationPeriodStartDate"/>
      <xs:enumeration value="CalculationPeriodEndDate"/>
      <xs:enumeration value="FutureExpiryDate"/>
      <xs:enumeration value="TerminationDate"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="pricingDateRuleType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="FutureExpiryDate"/>
      <xs:enumeration value="None"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="EquityMarginLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
            <xs:element type="xs:float" name="InitialMarginFactor" minOccurs="1" maxOccurs="1"/>
            <xs:element type="xs:float" name="Multiplier" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Rates">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Rate" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:simpleContent>
                        <xs:extension base="xs:float">
                          <xs:attribute name="startDate" type="xs:string" />
                        </xs:extension>
                      </xs:simpleContent>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          <xs:element name="EquityLegData">
            <xs:complexType>
              <xs:all>
                <xs:element type="xs:float" name="Quantity" minOccurs="0" maxOccurs="1"/>
                <xs:element type="xs:string" name="ReturnType" minOccurs="1" maxOccurs="1"/>
                <xs:element ref="underlyingTypes"/>
                <xs:element type="xs:float" name="InitialPrice" minOccurs="0" maxOccurs="1"/>
                <xs:element type="extendedCurrencyCode" name="InitialPriceCurrency" minOccurs="0" maxOccurs="1"/>
                <xs:element type="xs:float" name="DividendFactor" minOccurs="0" maxOccurs="1"/>
                <xs:element type="xs:boolean" name="NotionalReset" minOccurs="0" maxOccurs="1"/>
                <xs:element type="scheduleData" name="ValuationSchedule" minOccurs="0" maxOccurs="1" />
                <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1" />
                <xs:element name="FXTerms" minOccurs="0" maxOccurs="1">
                  <xs:complexType>
                    <xs:all>
                      <xs:element type="extendedCurrencyCode" name="EquityCurrency" minOccurs="0" maxOccurs="1"/>
                      <xs:element type="xs:string" name="FXIndex" minOccurs="0" maxOccurs="1"/>
                      <xs:element type="xs:integer" name="FXIndexFixingDays" minOccurs="0" maxOccurs="1"/>
                      <xs:element type="xs:string" name="FXIndexCalendar" minOccurs="0" maxOccurs="1"/>
                    </xs:all>
                  </xs:complexType>
                </xs:element>
              </xs:all>
            </xs:complexType>
          </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="CommodityFixedLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="quantitiesType" name="Quantities" minOccurs="0"/>
        <xs:element type="pricesType" name="Prices"/>
        <xs:element type="commodityPayRelativeToType" name="CommodityPayRelativeTo" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:string" name="Tag" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="CommodityFloatingLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="xs:string" name="Name"/>
        <xs:element type="priceType" name="PriceType"/>
        <xs:element type="quantitiesType" name="Quantities"/>
        <xs:element type="commodityQuantityFrequencyType" name="CommodityQuantityFrequency" minOccurs="0" maxOccurs="1"/>
        <xs:element type="commodityPayRelativeToType" name="CommodityPayRelativeTo" minOccurs="0" maxOccurs="1"/>
        <xs:element type="spreads" name="Spreads" minOccurs="0" maxOccurs="1"/>
        <xs:element type="gearings" name="Gearings" minOccurs="0" maxOccurs="1"/>
        <xs:element type="pricingDateRuleType" name="PricingDateRule" minOccurs="0" maxOccurs="1"/>
        <xs:element type="calendar" name="PricingCalendar" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="PricingLag" minOccurs="0" maxOccurs="1"/>
        <xs:element name="PricingDates" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="date" name="PricingDate" minOccurs="1" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:boolean" name="IsAveraged" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="FutureMonthOffset" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:nonNegativeInteger" name="DeliveryRollDays" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:nonNegativeInteger" name="DailyExpiryOffset" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="IncludePeriodEnd" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="ExcludePeriodStart" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:nonNegativeInteger" name="HoursPerDay" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="UseBusinessDays" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:boolean" name="UnrealisedQuantity" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:positiveInteger" name="LastNDays" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:string" name="Tag" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:string" name="FXIndex" minOccurs="0"/>
        <xs:element type="xs:nonNegativeInteger" name="AvgPricePrecision" minOccurs="0"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="commoditySwapData">
    <xs:sequence>
      <xs:element type="xs:boolean" name="RoundNettedFloatingLegs" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:nonNegativeInteger" name="NettingPrecision" minOccurs="0" maxOccurs="1"/>
      <xs:element type="legData" name="LegData" maxOccurs="unbounded" minOccurs="2"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commoditySwaptionData">
    <xs:sequence>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="legData" name="LegData" maxOccurs="2" minOccurs="2"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commoditySpreadOptionStripPaymentData">
    <xs:all>
      <xs:element type="scheduleData" name="OptionStripDefinition"/>
      <xs:element type="xs:integer" name="PaymentLag"/>
      <xs:element type="businessDayConvention" name="PaymentConvention"/>
      <xs:element type="calendar" name="PaymentCalendar"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="commoditySpreadOptionData">
    <xs:sequence>
      <xs:element type="legData" name="LegData" minOccurs="2" maxOccurs="2"/>
      <xs:element type="optionData" name="OptionData" minOccurs="1" maxOccurs="1"/>
      <xs:element type="xs:double" name="SpreadStrike" minOccurs="1" maxOccurs="1"/>
      <xs:element type="commoditySpreadOptionStripPaymentData" name="OptionStripPaymentDates" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commodityAveragePriceOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="barrierData" name="BarrierData" minOccurs="0"/>
      <xs:element type="xs:string" name="Name"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="priceType" name="PriceType"/>
      <xs:element type="date" name="StartDate"/>
      <xs:element type="date" name="EndDate"/>
      <xs:element type="calendar" name="PaymentCalendar"/>
      <xs:element type="paymentLag" name="PaymentLag"/>
      <xs:element type="businessDayConvention" name="PaymentConvention"/>
      <xs:element type="calendar" name="PricingCalendar"/>
      <xs:element type="date" name="PaymentDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="positiveDecimal" name="Gearing" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="Spread" minOccurs="0" maxOccurs="1"/>
      <xs:element type="commodityQuantityFrequencyType" name="CommodityQuantityFrequency" minOccurs="0" maxOccurs="1"/>
      <xs:element type="commodityPayRelativeToType" name="CommodityPayRelativeTo" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:integer" name="FutureMonthOffset" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:nonNegativeInteger" name="DeliveryRollDays" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:boolean" name="IncludePeriodEnd" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="FXIndex" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

    <xs:complexType name="commodityDigitalAveragePriceOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="barrierData" name="BarrierData" minOccurs="0"/>
      <xs:element type="xs:string" name="Name"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="DigitalCashPayoff"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="priceType" name="PriceType"/>
      <xs:element type="date" name="StartDate"/>
      <xs:element type="date" name="EndDate"/>
      <xs:element type="calendar" name="PaymentCalendar"/>
      <xs:element type="paymentLag" name="PaymentLag"/>
      <xs:element type="businessDayConvention" name="PaymentConvention"/>
      <xs:element type="calendar" name="PricingCalendar"/>
      <xs:element type="date" name="PaymentDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="positiveDecimal" name="Gearing" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="Spread" minOccurs="0" maxOccurs="1"/>
      <xs:element type="commodityQuantityFrequencyType" name="CommodityQuantityFrequency" minOccurs="0" maxOccurs="1"/>
      <xs:element type="commodityPayRelativeToType" name="CommodityPayRelativeTo" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:integer" name="FutureMonthOffset" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:nonNegativeInteger" name="DeliveryRollDays" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:boolean" name="IncludePeriodEnd" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="FXIndex" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="longShortsType">
    <xs:sequence>
      <xs:element type="longShort" name="LongShort" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="strikes">
    <xs:sequence>
      <xs:element type="xs:float" name="Strike" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="callsPutsType">
    <xs:all>
      <xs:element type="longShortsType" name="LongShorts" minOccurs="0" maxOccurs="1"/>
      <xs:element type="strikes" name="Strikes" minOccurs="0" maxOccurs="1"/>
      <xs:element type="barrierData" name="BarrierData" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="commodityOptionStripData">
    <xs:all>
      <xs:element type="legData" name="LegData" maxOccurs="1" minOccurs="1"/>
      <xs:element type="callsPutsType" name="Calls" maxOccurs="1" minOccurs="0"/>
      <xs:element type="callsPutsType" name="Puts" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="PremiumAmount" minOccurs="0"/>
      <xs:element type="premiumCurrencyCode" name="PremiumCurrency" minOccurs="0"/>
      <xs:element type="xs:string" name="PremiumPayDate" minOccurs="0"/>
      <xs:element type="premiumData" name="Premiums" minOccurs="0"/>
      <xs:element type="xs:string" name="Style" minOccurs="0"/>
      <xs:element type="settlementType" name="Settlement" minOccurs="0"/>
      <xs:element type="xs:boolean" name="IsDigital" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:double" name="PayoffPerUnit" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:simpleType name="oreTradeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CompositeTrade"/>
      <xs:enumeration value="ConvertibleBond"/>
      <xs:enumeration value="CallableBond"/>
      <xs:enumeration value="Ascot"/>
      <xs:enumeration value="TotalReturnSwap"/>
      <xs:enumeration value="ContractForDifference"/>
      <xs:enumeration value="CBO"/>
      <xs:enumeration value="EquityPosition"/>
      <xs:enumeration value="EquityOptionPosition"/>
      <xs:enumeration value="BondPosition"/>
      <xs:enumeration value="MultiLegOption"/>
      <xs:enumeration value="IndexCreditDefaultSwap"/>
      <xs:enumeration value="IndexCreditDefaultSwapOption"/>
      <xs:enumeration value="SyntheticCDO"/>
      <xs:enumeration value="BondOption"/>
      <xs:enumeration value="BondTRS"/>
      <xs:enumeration value="BondRepo"/>
      <xs:enumeration value="CreditLinkedSwap"/>
      <xs:enumeration value="CrossCurrencySwap"/>
      <xs:enumeration value="InflationSwap"/>
      <xs:enumeration value="Swap"/>
      <xs:enumeration value="Swaption"/>
      <xs:enumeration value="ForwardRateAgreement"/>
      <xs:enumeration value="FxAverageForward"/>
      <xs:enumeration value="FxForward"/>
      <xs:enumeration value="FxOption"/>
      <xs:enumeration value="FxAsianOption"/>
      <xs:enumeration value="FxBarrierOption"/>
      <xs:enumeration value="FxDoubleBarrierOption"/>
      <xs:enumeration value="FxSwap"/>
      <xs:enumeration value="FxDigitalOption"/>
      <xs:enumeration value="FxEuropeanBarrierOption"/>
      <xs:enumeration value="FxKIKOBarrierOption"/>
      <xs:enumeration value="FxTouchOption"/>
      <xs:enumeration value="FxDoubleTouchOption"/>
      <xs:enumeration value="FxDigitalBarrierOption"/>
      <xs:enumeration value="FxVarianceSwap"/>
      <xs:enumeration value="CapFloor"/>
      <xs:enumeration value="EquityOption"/>
      <xs:enumeration value="EquityFutureOption"/>
      <xs:enumeration value="EquityAsianOption"/>
      <xs:enumeration value="EquityBarrierOption"/>
      <xs:enumeration value="EquityDoubleBarrierOption"/>
      <xs:enumeration value="EquityEuropeanBarrierOption"/>
      <xs:enumeration value="EquityTouchOption"/>
      <xs:enumeration value="EquityDoubleTouchOption"/>
      <xs:enumeration value="EquityDigitalOption"/>
      <xs:enumeration value="EquityForward"/>
      <xs:enumeration value="EquitySwap"/>
      <xs:enumeration value="EquityVarianceSwap"/>
      <xs:enumeration value="EquityCliquetOption"/>
      <xs:enumeration value="CommodityForward"/>
      <xs:enumeration value="CommodityOption"/>
      <xs:enumeration value="CommodityDigitalAveragePriceOption"/>
      <xs:enumeration value="CommodityDigitalOption"/>
      <xs:enumeration value="CommodityAsianOption"/>
      <xs:enumeration value="CommoditySwap"/>
      <xs:enumeration value="CommoditySwaption"/>
      <xs:enumeration value="CommoditySpreadOption"/>
      <xs:enumeration value="CommodityAveragePriceOption"/>
      <xs:enumeration value="CommodityOptionStrip"/>
      <xs:enumeration value="CommodityPosition"/>
      <xs:enumeration value="CommodityVarianceSwap"/>
      <xs:enumeration value="Bond"/>
      <xs:enumeration value="ForwardBond"/>
      <xs:enumeration value="BondFuture"/>
      <xs:enumeration value="CreditDefaultSwap"/>
      <xs:enumeration value="CreditDefaultSwapOption"/>
      <xs:enumeration value="Failed"/>
      <xs:enumeration value="FlexiSwap"/>
      <xs:enumeration value="BalanceGuaranteedSwap"/>
      <xs:enumeration value="CallableSwap"/>
      <xs:enumeration value="EquityOutperformanceOption"/>
      <xs:enumeration value="EquityPairwiseVarianceSwap"/>
      <xs:enumeration value="FxPairwiseVarianceSwap"/>
      <xs:enumeration value="CommodityPairwiseVarianceSwap"/>
      <!-- scripted trades -->
      <xs:enumeration value="ScriptedTrade"/>
      <xs:enumeration value="EquityBasketVarianceSwap"/>
      <xs:enumeration value="FxBasketVarianceSwap"/>
      <xs:enumeration value="CommodityBasketVarianceSwap"/>
      <xs:enumeration value="RiskParticipationAgreement"/>
      <xs:enumeration value="Autocallable_01"/>
      <xs:enumeration value="DoubleDigitalOption"/>
      <xs:enumeration value="EuropeanOptionBarrier"/>
      <xs:enumeration value="PerformanceOption_01"/>
      <xs:enumeration value="FxTaRF"/>
      <xs:enumeration value="EquityTaRF"/>
      <xs:enumeration value="CommodityTaRF"/>
      <xs:enumeration value="FxWorstOfBasketSwap"/>
      <xs:enumeration value="EquityWorstOfBasketSwap"/>
      <xs:enumeration value="CommodityWorstOfBasketSwap"/>
      <xs:enumeration value="EquityBestEntryOption"/>
      <xs:enumeration value="FxBestEntryOption"/>
      <xs:enumeration value="CommodityBestEntryOption"/>
      <xs:enumeration value="FxAccumulator"/>
      <xs:enumeration value="EquityAccumulator"/>
      <xs:enumeration value="CommodityAccumulator"/>
      <xs:enumeration value="FxWindowBarrierOption"/>
      <xs:enumeration value="EquityWindowBarrierOption"/>
      <xs:enumeration value="CommodityWindowBarrierOption"/>
      <xs:enumeration value="FxGenericBarrierOption"/>
      <xs:enumeration value="EquityGenericBarrierOption"/>
      <xs:enumeration value="CommodityGenericBarrierOption"/>
      <xs:enumeration value="FxBasketOption"/>
      <xs:enumeration value="EquityBasketOption"/>
      <xs:enumeration value="CommodityBasketOption"/>
      <xs:enumeration value="FxRainbowOption"/>
      <xs:enumeration value="EquityRainbowOption"/>
      <xs:enumeration value="CommodityRainbowOption"/>
      <xs:enumeration value="KnockOutSwap"/>
      <xs:enumeration value="CashPosition"/>
	  <xs:enumeration value="CommodityStrikeResettableOption"/>
	  <xs:enumeration value="FxStrikeResettableOption"/>
	  <xs:enumeration value="EquityStrikeResettableOption"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="legType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Fixed"/>
      <xs:enumeration value="Floating"/>
      <xs:enumeration value="CPI"/>
      <xs:enumeration value="YY"/>
      <xs:enumeration value="CMS"/>
      <xs:enumeration value="CMB"/>
      <xs:enumeration value="DigitalCMS"/>
      <xs:enumeration value="CMSSpread"/>
      <xs:enumeration value="DigitalCMSSpread"/>
      <xs:enumeration value="Cashflow"/>
      <xs:enumeration value="Equity"/>
      <xs:enumeration value="FormulaBased"/>
      <xs:enumeration value="ZeroCouponFixed"/>
      <xs:enumeration value="CommodityFixed"/>
      <xs:enumeration value="CommodityFloating"/>
      <xs:enumeration value="EquityMargin"/>
      <xs:enumeration value="DurationAdjustedCMS"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="forwardRateAgreementData">
    <xs:all>
      <xs:element type="date" name="StartDate"/>
      <xs:element type="date" name="EndDate"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:string" name="Index"/>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="Notional"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxForwardData">
    <xs:all>
      <xs:element type="date" name="ValueDate"/>
      <xs:element type="currencyCode" name="BoughtCurrency"/>
      <xs:element type="xs:float" name="BoughtAmount"/>
      <xs:element type="currencyCode" name="SoldCurrency"/>
      <xs:element type="xs:float" name="SoldAmount"/>
      <xs:element type="settlementType" name="Settlement" maxOccurs="1" minOccurs="0"/>
      <xs:element type="fxForwardSettlementData" name="SettlementData" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxAverageForwardData">
    <xs:all>
      <xs:element type="date" name="PaymentDate"/>
      <xs:element type="scheduleData" name="ObservationDates"/>
      <xs:element type="bool" name="FixedPayer"/>
      <xs:element type="xs:float" name="ReferenceNotional"/>
      <xs:element type="currencyCode" name="ReferenceCurrency"/>
      <xs:element type="xs:float" name="SettlementNotional"/>
      <xs:element type="currencyCode" name="SettlementCurrency"/>
      <xs:element type="settlementType" name="Settlement" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxSwapData">
    <xs:all>
      <xs:element type="date" name="NearDate"/>
      <xs:element type="currencyCode" name="NearBoughtCurrency"/>
      <xs:element type="xs:float" name="NearBoughtAmount"/>
      <xs:element type="currencyCode" name="NearSoldCurrency"/>
      <xs:element type="xs:float" name="NearSoldAmount"/>
      <xs:element type="date" name="FarDate"/>
      <xs:element type="xs:float" name="FarBoughtAmount"/>
      <xs:element type="xs:float" name="FarSoldAmount"/>
      <xs:element type="settlementType" name="Settlement" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="currencyCode" name="BoughtCurrency"/>
      <xs:element type="xs:float" name="BoughtAmount"/>
      <xs:element type="currencyCode" name="SoldCurrency"/>
      <xs:element type="xs:float" name="SoldAmount" minOccurs="0"/>
      <xs:element type="xs:float" name="Delta" minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxDigitalOptionData">
    <xs:sequence>
      <xs:element type="optionData" name="OptionData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="currencyCode" name="PayoffCurrency" minOccurs="0"/>
      <xs:element type="xs:float" name="PayoffAmount"/>
      <xs:element type="currencyCode" name="ForeignCurrency"/>
      <xs:element type="currencyCode" name="DomesticCurrency"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="fxKIKOBarrierOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element name="Barriers">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="barrierData" name="BarrierData"  maxOccurs="2" minOccurs="2"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="date" name="StartDate"  minOccurs="0"/>
      <xs:element type="calendar" name="Calendar"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex"  minOccurs="0"/>
      <xs:element type="currencyCode" name="BoughtCurrency"/>
      <xs:element type="xs:float" name="BoughtAmount"/>
      <xs:element type="currencyCode" name="SoldCurrency"/>
      <xs:element type="xs:float" name="SoldAmount"/>
    </xs:all>
  </xs:complexType>

  <xs:simpleType name="barrierType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="UpAndOut"/>
      <xs:enumeration value="UpAndIn"/>
      <xs:enumeration value="DownAndOut"/>
      <xs:enumeration value="DownAndIn"/>
      <xs:enumeration value="KnockIn"/>
      <xs:enumeration value="KnockOut"/>
      <xs:enumeration value="CumulatedProfitCap"/>
      <xs:enumeration value="CumulatedProfitCapPoints"/>
      <xs:enumeration value="FixingCap"/>
      <xs:enumeration value="FixingFloor"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="barrierCompare">
    <xs:restriction base="xs:string">
      <xs:enumeration value="0"/>
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="barrierStyle">
    <xs:restriction base="xs:string">
      <xs:enumeration value="American"/>
      <xs:enumeration value="European"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="barrierData">
    <xs:all>
      <xs:element type="barrierType" name="Type"/>
	  <xs:element type="barrierCompare" name="StrictComparison" minOccurs="0"/>
      <xs:element type="barrierStyle" name="Style" minOccurs="0"/>
      <xs:element name="Levels">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:float" name="Level" minOccurs="1" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:float" name="Rebate" minOccurs="0"/>
      <xs:element type="currencyCode" name="RebateCurrency" minOccurs="0"/>
      <xs:element name="RebatePayTime" minOccurs="0">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="atHit"/>
          <xs:enumeration value="atExpiry"/>
        </xs:restriction>
      </xs:simpleType>
      </xs:element>
      <xs:element type="bool" name="OverrideTriggered" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxBarrierOptionData">
    <xs:sequence>
      <xs:element type="optionData" name="OptionData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="barrierData" name="BarrierData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="date" name="StartDate"  minOccurs="0"/>
      <xs:element type="calendar" name="Calendar"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndexDailyLows"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndexDailyHighs"  minOccurs="0"/>
      <xs:element type="currencyCode" name="BoughtCurrency"/>
      <xs:element type="xs:float" name="BoughtAmount"/>
      <xs:element type="currencyCode" name="SoldCurrency"/>
      <xs:element type="xs:float" name="SoldAmount"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="fxDigitalBarrierOptionData">
    <xs:sequence>
      <xs:element type="optionData" name="OptionData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="barrierData" name="BarrierData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="date" name="StartDate"  minOccurs="0"/>
      <xs:element type="calendar" name="Calendar"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndexDailyLows"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndexDailyHighs"  minOccurs="0"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="PayoffAmount"/>
      <xs:element type="currencyCode" name="PayoffCurrency" minOccurs="0"/>
      <xs:element type="currencyCode" name="ForeignCurrency"/>
      <xs:element type="currencyCode" name="DomesticCurrency"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="fxTouchOptionData">
    <xs:sequence>
      <xs:element type="optionData" name="OptionData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="barrierData" name="BarrierData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="currencyCode" name="ForeignCurrency"/>
      <xs:element type="currencyCode" name="DomesticCurrency"/>
      <xs:element type="currencyCode" name="PayoffCurrency"/>
      <xs:element type="xs:float" name="PayoffAmount"/>
      <xs:element type="date" name="StartDate" minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex" minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndexDailyLows"  minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndexDailyHighs"  minOccurs="0"/>
      <xs:element type="xs:string" name="Calendar" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="fxForwardSettlementData">
    <xs:all>
      <xs:element type="currencyCode" name="Currency" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex" maxOccurs="1" minOccurs="0"/>
      <xs:element type="date" name="Date" maxOccurs="1" minOccurs="0"/>
      <xs:element name="Rules" maxOccurs="1" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element type="paymentLag" name="PaymentLag" maxOccurs="1" minOccurs="0"/>
            <xs:element type="calendar" name="PaymentCalendar" maxOccurs="1" minOccurs="0"/>
            <xs:element type="businessDayConvention" name="PaymentConvention" maxOccurs="1" minOccurs="0"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="eqForwardSettlementData">
    <xs:all>
      <xs:element type="xs:string" name="FXIndex" maxOccurs="1" minOccurs="0"/>
      <xs:element type="date" name="Date" maxOccurs="1" minOccurs="0"/>
      <xs:element name="Rules" maxOccurs="1" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element type="paymentLag" name="PaymentLag" maxOccurs="1" minOccurs="0"/>
            <xs:element type="calendar" name="PaymentCalendar" maxOccurs="1" minOccurs="0"/>
            <xs:element type="businessDayConvention" name="PaymentConvention" maxOccurs="1" minOccurs="0"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="flexiSwapData">
    <xs:sequence>
      <xs:element name="LowerNotionalBounds" maxOccurs="1" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Notional" maxOccurs="unbounded" minOccurs="1">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Prepayment" maxOccurs="1" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:string" name="NoticePeriod" minOccurs="0"/>
            <xs:element type="xs:string" name="NoticeCalendar" minOccurs="0"/>
            <xs:element type="xs:string" name="NoticeConvention" minOccurs="0"/>
            <xs:sequence>
              <xs:element name="PrepaymentOptions" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="PrepaymentOption" maxOccurs="unbounded" minOccurs="0">
                      <xs:complexType>
                        <xs:all>
                          <xs:element type="date" name="ExerciseDate"/>
                          <xs:element type="xs:string" name="Type"/>
                          <xs:element type="xs:float" name="Value"/>
                        </xs:all>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="longShort" name="OptionLongShort"/>
      <xs:element type="legData" name="LegData"  maxOccurs="2" minOccurs="2"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bgSwapData">
    <xs:sequence>
      <xs:element type="xs:string" name="ReferenceSecurity"/>
      <xs:element type="tranches" name="Tranches" maxOccurs="1" minOccurs="1"/>
      <xs:element type="legData" name="LegData"  maxOccurs="2" minOccurs="2"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="capFloorData">
    <xs:sequence>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="legData_capfloor" name="LegData"/>
      <xs:element name="Caps" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Cap" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Floors" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Floor" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:string" name="PremiumAmount" minOccurs="0"/>
      <xs:element type="premiumCurrencyCode" name="PremiumCurrency" minOccurs="0"/>
      <xs:element type="xs:string" name="PremiumPayDate" minOccurs="0"/>
      <xs:element type="premiumData" name="Premiums" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="equityOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="extendedCurrencyCode" name="Currency"/>
      <xs:element type="extendedCurrencyCode" name="StrikeCurrency" minOccurs="0"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element ref="strikeGroup"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="eqBarrierOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData" minOccurs="1"/>
      <xs:element type="barrierData" name="BarrierData" minOccurs="1"/>
      <xs:element type="date" name="StartDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="calendar" name="Calendar" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="EQIndex" minOccurs="0" maxOccurs="1"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element ref="strikeGroup"/>
      <xs:element type="xs:float" name="Quantity"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="equityFutureOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="date" name="FutureExpiryDate" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="eqDigitalOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData" minOccurs="1"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="currencyCode" name="PayoffCurrency" minOccurs="0"/>
      <xs:element type="xs:float" name="PayoffAmount"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="xs:float" name="Quantity"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="eqTouchOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData" minOccurs="1"/>
      <xs:element type="barrierData" name="BarrierData" minOccurs="1"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="currencyCode" name="PayoffCurrency"/>
      <xs:element type="xs:float" name="PayoffAmount"/>
      <xs:element type="date" name="StartDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="calendar" name="Calendar" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="EQIndex" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="commodityOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="xs:string" name="Name"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="bool" name="IsFuturePrice" minOccurs="0"/>
      <xs:element type="date" name="FutureExpiryDate" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="commodityDigitalOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="xs:string" name="Name"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="Payoff"/>
      <xs:element type="bool" name="IsFuturePrice" minOccurs="0"/>
      <xs:element type="date" name="FutureExpiryDate" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="equityForwardData">
    <xs:all>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="date" name="Maturity"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="extendedCurrencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="extendedCurrencyCode" name="StrikeCurrency" minOccurs="0"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="eqForwardSettlementData" name="SettlementData" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="commodityForwardData">
    <xs:all>
      <xs:element type="longShort" name="Position"/>
      <xs:element type="date" name="Maturity"/>
      <xs:element type="xs:string" name="Name"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="bool" name="IsFuturePrice" minOccurs="0"/>
      <xs:element type="date" name="FutureExpiryDate" minOccurs="0"/>
      <xs:element type="xs:string" name="FutureExpiryOffset" minOccurs="0"/>
      <xs:element type="xs:string" name="FutureExpiryOffsetCalendar" minOccurs="0"/>
      <xs:element type="bool" name="PhysicallySettled" minOccurs="0"/>
      <xs:element type="date" name="PaymentDate" minOccurs="0"/>
      <xs:element type="commForwardSettlementData" name="SettlementData" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="commForwardSettlementData">
    <xs:all>
      <xs:element type="currencyCode" name="PayCurrency" maxOccurs="1" minOccurs="1"/>
      <xs:element type="xs:string" name="FXIndex" maxOccurs="1" minOccurs="1"/>
      <xs:element type="date" name="FixingDate" maxOccurs="1" minOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:element name="creditCurveIdType" abstract="true"/>
  <xs:element type="xs:string" name="CreditCurveId" substitutionGroup="creditCurveIdType"/>
  <xs:element name="ReferenceInformation" substitutionGroup="creditCurveIdType">
    <xs:complexType>
      <xs:all>
        <xs:element type="xs:string" name="ReferenceEntityId"/>
        <xs:element type="cdsTierType" name="Tier"/>
        <xs:element type="currencyCode" name="Currency"/>
        <xs:element type="cdsDocClauseType" name="DocClause" minOccurs="0"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="creditDefaultSwapData">
    <xs:all>
      <xs:element type="xs:string" name="IssuerId" minOccurs="0"/>
      <xs:element ref="creditCurveIdType"/>
      <xs:element type="xs:string" name="ReferenceObligation" minOccurs="0"/>
      <xs:element type="bool" name="SettlesAccrual" minOccurs="0"/>
      <xs:element type="bool" name="RebatesAccrual" minOccurs="0"/>
      <xs:element type="bool" name="PaysAtDefaultTime" minOccurs="0"/>
      <xs:element type="xs:string" name="ProtectionPaymentTime" minOccurs="0"/>
      <xs:element type="date" name="ProtectionStart" minOccurs="0"/>
      <xs:element type="date" name="UpfrontDate" minOccurs="0"/>
      <xs:element type="xs:float" name="UpfrontFee" minOccurs="0"/>
      <xs:element type="xs:float" name="FixedRecoveryRate" minOccurs="0"/>
      <xs:element type="legData" name="LegData" maxOccurs="1" minOccurs="1"/>
      <xs:element type="date" name="TradeDate" minOccurs="0"/>
      <xs:element type="xs:nonNegativeInteger" name="CashSettlementDays" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="auctionSettlementInformation">
    <xs:all>
      <xs:element type="date" name="AuctionSettlementDate"/>
      <xs:element type="xs:float" name="AuctionFinalPrice"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="creditDefaultSwapOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="creditDefaultSwapData" name="CreditDefaultSwapData"/>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
      <xs:element name="StrikeType" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="Spread"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element type="bool" name="KnockOut" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="Term" minOccurs="0" maxOccurs="1"/>
      <xs:element type="auctionSettlementInformation" name="AuctionSettlementInformation" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="singleUnderlyingAsianOptionData">
    <xs:all>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element ref="strikeGroup"/>
      <xs:element type="underlying" name="Underlying" minOccurs="0" maxOccurs="1"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="xs:string" name="Settlement" minOccurs="0"/>
      <xs:element type="scheduleData" name="ObservationDates" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:simpleType name="tradeActionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Break"/>
      <xs:enumeration value="Termination"/>
      <xs:enumeration value="Conversion"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="tradeActionOwner">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Mutual"/>
      <xs:enumeration value="Sold"/>
      <xs:enumeration value="Bought"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="caps">
    <xs:sequence>
      <xs:element type="floatWithAttribute" name="Cap" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="floors">
    <xs:sequence>
      <xs:element type="floatWithAttribute" name="Floor" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="tradeLevelFixings">
    <xs:sequence>
      <xs:element name="Fixing" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:float">
              <xs:attribute name="fixingDate" type="xs:string" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="spreads">
    <xs:sequence>
      <xs:element type="floatWithAttribute" name="Spread" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="gearings">
    <xs:sequence>
      <xs:element type="floatWithAttribute" name="Gearing" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="floatWithAttribute">
    <xs:simpleContent>
      <xs:extension base="xs:float">
        <xs:attribute name="startDate" type="xs:string">
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="exchanges">
    <xs:all>
      <xs:element type="bool" name="NotionalInitialExchange" minOccurs="0" maxOccurs="1"/>
      <xs:element type="bool" name="NotionalFinalExchange" minOccurs="0" maxOccurs="1"/>
      <xs:element type="bool" name="NotionalAmortizingExchange" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxreset">
    <xs:all>
      <xs:element type="currencyCode" name="ForeignCurrency" minOccurs="1" maxOccurs="1"/>
      <xs:element type="xs:string" name="StartDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:double" name="ForeignAmount" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="FXIndex" minOccurs="1" maxOccurs="1"/>
      <xs:element type="xs:integer" name="FixingDays" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="FixingCalendar" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="underlying">
    <xs:all>
      <xs:element type="xs:string" name="Type"/>
      <xs:element type="xs:string" name="Name"/>
      <xs:element type="xs:string" name="IdentifierType" minOccurs="0"/>
      <xs:element type="currencyCode" name="Currency" minOccurs="0"/>
      <xs:element type="xs:string" name="Exchange" minOccurs="0"/>
      <xs:element type="xs:float" name="Weight" minOccurs="0"/>
      <xs:element type="xs:string" name="PriceType" minOccurs="0"/>
      <xs:element type="xs:nonNegativeInteger" name="FutureMonthOffset" minOccurs="0"/>
      <xs:element type="xs:nonNegativeInteger" name="DeliveryRollDays" minOccurs="0"/>
      <xs:element type="xs:string" name="DeliveryRollCalendar" minOccurs="0"/>
      <xs:element type="xs:string" name="FutureExpiryDate" minOccurs="0"/>
      <xs:element type="xs:string" name="FutureContractMonth" minOccurs="0"/>
      <xs:element type="xs:string" name="Interpolation" minOccurs="0"/>
      <xs:element type="xs:float" name="BidAskAdjustment" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="underlyings">
    <xs:sequence>
      <xs:element type="underlying" name="Underlying" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="underlyingTypes" abstract="true"/>
  <xs:element type="xs:string" name="Name" substitutionGroup="underlyingTypes"/>
  <xs:element type="underlying" name="Underlying" substitutionGroup="underlyingTypes"/>
  <xs:element type="underlyings" name="Underlyings" substitutionGroup="underlyingTypes"/>

  <xs:element name="nettingSetGroup" abstract="true"/>
  <xs:element type="xs:string" name="NettingSetId" substitutionGroup="nettingSetGroup"/>
  <xs:element type="nettingSetDetails" name="NettingSetDetails" substitutionGroup="nettingSetGroup"/>

  <xs:element name="strikeGroup" abstract="true"/>
  <xs:element type="xs:string" name="Strike" substitutionGroup="strikeGroup"/>
  <xs:element name="StrikeData" substitutionGroup="strikeGroup">
    <xs:complexType>
      <xs:choice>
        <xs:element type="strikePriceData" name="StrikePrice"/>
        <xs:element type="strikeYieldData" name="StrikeYield"/>
        <xs:sequence>
          <xs:element type="xs:float" name="Value"/>
          <xs:element type="extendedCurrencyCode" name="Currency" minOccurs="0"/>
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="levelGroup" abstract="true"/>
  <xs:element type="xs:float" name="Level" substitutionGroup="levelGroup"/>
  <xs:element type="levelData" name="LevelData" substitutionGroup="levelGroup"/>

  <xs:complexType name="callableSwapData">
    <xs:choice>
      <xs:sequence>
        <xs:element type="optionData" name="OptionData"/>
        <xs:element type="legData" name="LegData" maxOccurs="unbounded" minOccurs="1"/>
      </xs:sequence>
      <xs:sequence>
        <xs:element type="legData" name="LegData" maxOccurs="unbounded" minOccurs="1"/>
        <xs:element type="optionData" name="OptionData"/>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="multiLegOptionData">
    <xs:sequence>
      <xs:element type="optionData" name="OptionData"  maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="legData" name="LegData"  maxOccurs="unbounded" minOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="nameData">
    <xs:all>
      <xs:element type="xs:string" name="IssuerId"/>
      <xs:element type="xs:string" name="Qualifier" maxOccurs="1" minOccurs="0"/>
      <xs:element ref="creditCurveIdType"/>
      <xs:element type="xs:float" name="Notional" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="Weight" minOccurs="0" maxOccurs="1"/>
      <xs:element type="currencyCode" name="Currency" minOccurs="0" maxOccurs="1"/>
      <xs:element type="non-negative-decimal" name="PriorNotional" minOccurs="0" maxOccurs="1"/>
      <xs:element type="non-negative-decimal" name="PriorWeight" minOccurs="0" maxOccurs="1"/>
      <xs:element type="recoveryRate" name="RecoveryRate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="date" name="AuctionDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="date" name="AuctionSettlementDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="date" name="DefaultDate" minOccurs="0" maxOccurs="1"/>
      <xs:element type="date" name="EventDeterminationDate" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="basketData">
    <xs:sequence>
      <xs:element type="nameData" name="Name" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="indexCreditDefaultSwapData">
    <xs:all>
      <xs:element type="xs:string" name="IssuerId" minOccurs="0"/>
      <xs:element type="xs:string" name="CreditCurveId"/>
      <xs:element type="bool" name="SettlesAccrual" minOccurs="0"/>
      <xs:element type="bool" name="RebatesAccrual" minOccurs="0"/>
      <xs:element type="bool" name="PaysAtDefaultTime" minOccurs="0"/>
      <xs:element type="xs:string" name="ProtectionPaymentTime" minOccurs="0"/>
      <xs:element type="date" name="ProtectionStart" minOccurs="0"/>
      <xs:element type="date" name="UpfrontDate" minOccurs="0"/>
      <xs:element type="xs:float" name="UpfrontFee" minOccurs="0"/>
      <xs:element type="legData" name="LegData"/>
      <xs:element type="date" name="TradeDate" minOccurs="0"/>
      <xs:element type="xs:nonNegativeInteger" name="CashSettlementDays" minOccurs="0"/>
      <xs:element type="basketData" name="BasketData" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="indexCreditDefaultSwapOptionData">
    <xs:all>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
    <!-- KnockOut is ignored. Remains in the schema for backward compatibility of the schema -->
      <xs:element type="bool" name="KnockOut" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="IndexTerm" minOccurs="0" maxOccurs="1"/>
      <xs:element type="cdsOptionstrikeType" name="StrikeType" minOccurs="0"/>
      <xs:element type="date" name="TradeDate" minOccurs="0"/>
      <xs:element type="date" name="FrontEndProtectionStartDate" minOccurs="0"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="indexCreditDefaultSwapData" name="IndexCreditDefaultSwapData"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="creditLinkedSwapData">
    <xs:all>
      <xs:element type="xs:string" name="CreditCurveId"/>
      <xs:element type="bool" name="SettlesAccrual" minOccurs="0"/>
      <xs:element type="xs:float" name="FixedRecoveryRate" minOccurs="0"/>
      <xs:element type="xs:string" name="DefaultPaymentTime" minOccurs="0"/>
      <xs:element name="IndependentPayments" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="legData" name="LegData" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ContingentPayments" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="legData" name="LegData" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="DefaultPayments" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="legData" name="LegData" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="RecoveryPayments" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="legData" name="LegData" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:simpleType name="cdsOptionstrikeType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Spread"/>
      <xs:enumeration value="Price"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="emptyFloat">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base='xs:string'>
          <xs:length value="0"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base='xs:float'>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:complexType name="cdoData">
    <xs:all>
      <xs:element type="xs:string" name="Qualifier"/>
      <xs:element type="date" name="ProtectionStart"/>
      <xs:element type="date" name="UpfrontDate" minOccurs="0"/>
      <xs:element type="emptyFloat" name="UpfrontFee" minOccurs="0"/>
      <xs:element type="bool" name="SettlesAccrual" minOccurs="0"/>
      <xs:element type="bool" name="RebatesAccrual" minOccurs="0"/>
      <xs:element type="bool" name="PaysAtDefaultTime" minOccurs="0"/>
      <xs:element type="xs:string" name="ProtectionPaymentTime" minOccurs="0"/>
      <xs:element type="xs:float" name="FixedRecoveryRate" minOccurs="0"/>
      <xs:element type="xs:float" name="AttachmentPoint"/>
      <xs:element type="xs:float" name="DetachmentPoint"/>
      <xs:element type="legData" name="LegData"/>
      <xs:element type="basketData" name="BasketData" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bondOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element ref="strikeGroup"/>
      <xs:element type="xs:string" name="Redemption" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="PriceType" maxOccurs="1" minOccurs="0"/>
      <xs:element type="bool" name="KnocksOut" maxOccurs="1" minOccurs="0"/>
      <xs:element type="bondData" name="BondData" minOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bondRepoData">
    <xs:all>
      <xs:element type="bondData" name="BondData"/>
      <xs:element name="RepoData">
        <xs:complexType>
          <xs:all>
            <xs:element type="legData" name="LegData"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fundingData">
    <xs:all>
      <xs:element type="legData" name="LegData" maxOccurs="1" minOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fxTermsData">
    <xs:sequence>
      <xs:element type="xs:string" name="FXIndex" minOccurs="1" maxOccurs="unbounded"/>
      <!-- just kept here for backward compatibility of the schema, these elements are not used any more -->
      <xs:element type="xs:integer" name="FXIndexFixingDays" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="FXIndexCalendar" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:boolean" name="ApplyFXIndexFixingDays" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="totalReturnData">
    <xs:all>
      <xs:element type="xs:string" name="Payer" maxOccurs="1" minOccurs="1"/>
      <xs:element type="xs:float" name="InitialPrice" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="PriceType" maxOccurs="1" minOccurs="1"/>
      <xs:element type="xs:string" name="ObservationLag" maxOccurs="1" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="ObservationConvention" maxOccurs="1" minOccurs="0"/>
      <xs:element type="calendar" name="ObservationCalendar" maxOccurs="1" minOccurs="0"/>
      <xs:element type="paymentLag" name="PaymentLag" maxOccurs="1" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="PaymentConvention" maxOccurs="1" minOccurs="0"/>
      <xs:element type="calendar" name="PaymentCalendar" maxOccurs="1" minOccurs="0"/>
      <xs:element name="PaymentDates" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="date" name="PaymentDate" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
	  <xs:element type="trsFxConversion" name="FXConversion" minOccurs="0" maxOccurs="1"/>
      <xs:element type="fxTermsData" name="FXTerms" minOccurs="0" maxOccurs="1"/>
      <xs:element type="scheduleData" name="ScheduleData" maxOccurs="1" minOccurs="1"/>
      <xs:element type="xs:boolean" name="PayBondCashFlowsImmediately" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bondTRSData">
    <xs:all>
      <xs:element type="bondData" name="BondData" maxOccurs="1" minOccurs="1"/>
      <xs:element type="totalReturnData" name="TotalReturnData" maxOccurs="1" minOccurs="1"/>
      <xs:element type="fundingData" name="FundingData" maxOccurs="1" minOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="convertibleBondData">
    <xs:all>
      <xs:element type="bondData" name="BondData"/>
      <xs:element type="cbCallData" name="CallData" minOccurs="0"/>
      <xs:element type="cbCallData" name="PutData" minOccurs="0"/>
      <xs:element type="cbConversionData" name="ConversionData" minOccurs="0"/>
      <xs:element type="cbDividendProtectionData" name="DividendProtectionData" minOccurs="0"/>
      <xs:element type="bool" name="Detachable" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="ascotData">
    <xs:all>
      <xs:element type="convertibleBondData" name="ConvertibleBondData"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="fundingData" name="ReferenceSwapData" maxOccurs="1" minOccurs="1"/>
    </xs:all>
  </xs:complexType>

 <xs:complexType name="callableBondCallData">
    <xs:all>
      <xs:element type="scheduleData" name="ScheduleData"/>
      <xs:element name="Styles">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Style" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Prices">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Price" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="PriceTypes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PriceType" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="IncludeAccruals">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="IncludeAccrual"  maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="bool">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="callableBondData">
    <xs:all>
      <xs:element type="bondData" name="BondData"/>
      <xs:element type="callableBondCallData" name="CallData" minOccurs="0"/>
      <xs:element type="callableBondCallData" name="PutData" minOccurs="0"/>
    </xs:all>
  </xs:complexType>


  <xs:complexType name="trsUnderlyingData">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Derivative">
		 <xs:complexType>
          <xs:sequence>
           <xs:element type="xs:string" name="Id"/>
			<xs:element ref="subTradeGroup"/>
		  </xs:sequence>
         </xs:complexType>
        </xs:element>
		<!-- <xs:element name="Trade"> -->
         <!-- <xs:complexType> -->
           <!-- <xs:sequence> -->
            <!-- <xs:element type="oreTradeType" name="TradeType"/> -->
            <!-- <xs:element type="envelope" name="Envelope" minOccurs="0"/> -->
            <!-- <xs:group ref="oreTradeData"/> -->
            <!-- </xs:sequence> -->
          <!-- <xs:attribute type="xs:string" name="id"/> -->
         <!-- </xs:complexType> -->
        <!-- </xs:element> -->
		<xs:element ref="subTradeGroup"/>
        <xs:element name="PortfolioIndexTradeData" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
            <xs:element type="xs:string" name="BasketName" minOccurs="1"/>
            <xs:element type="xs:string" name="IndexQuantity" minOccurs="0"/>
           </xs:sequence>
         </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="trsReturnData">
    <xs:all>
      <xs:element type="xs:boolean" name="Payer"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="scheduleData" name="ScheduleData"/>
      <xs:element type="xs:string" name="ObservationLag" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="ObservationConvention" minOccurs="0"/>
      <xs:element type="calendar" name="ObservationCalendar" minOccurs="0"/>
      <xs:element type="paymentLag" name="PaymentLag" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="PaymentConvention" minOccurs="0"/>
      <xs:element type="calendar" name="PaymentCalendar" minOccurs="0"/>
      <xs:element name="PaymentDates" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="date" name="PaymentDate" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:float" name="InitialPrice" minOccurs="0"/>
      <xs:element type="extendedCurrencyCode" name="InitialPriceCurrency" minOccurs="0"/>
      <xs:element type="fxTermsData" name="FXTerms" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:boolean" name="PayUnderlyingCashFlowsImmediately" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:simpleType name="trsNotionalType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PeriodReset"/>
      <xs:enumeration value="DailyReset"/>
      <xs:enumeration value="Fixed"/>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="trsFxConversion">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Start"/>
      <xs:enumeration value="End"/>
    </xs:restriction>
  </xs:simpleType>  

  <xs:complexType name="trsFundingData">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element type="xs:integer" name="FundingResetGracePeriod"/>
      <xs:element type="trsNotionalType" name="NotionalType"/>
      <xs:element type="legData" name="LegData"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="trsAdditionalCashflowData">
    <xs:sequence>
      <xs:element type="legData" name="LegData"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="totalReturnSwapData">
    <xs:all>
      <xs:element type="trsUnderlyingData" name="UnderlyingData"/>
      <xs:element type="trsReturnData" name="ReturnData"/>
      <xs:element type="trsFundingData" name="FundingData" minOccurs="0"/>
      <xs:element type="trsAdditionalCashflowData" name="AdditionalCashflowData" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="equityPositionData">
    <xs:sequence>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="underlying" name="Underlying" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commodityPositionData">
    <xs:sequence>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="underlying" name="Underlying" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="equityOptionUnderlyingData">
    <xs:sequence>
      <xs:element type="underlying" name="Underlying"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="xs:float" name="Strike"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="equityOptionPositionData">
    <xs:sequence>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="equityOptionUnderlyingData" name="Underlying" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="bondBasketData">
    <xs:sequence>
      <xs:element type="xs:float" name="Quantity" minOccurs="0"/>
      <xs:element type="xs:string" name="Identifier" minOccurs="0"/>
      <xs:element type="underlying" name="Underlying" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="tranches">
    <xs:sequence>
      <xs:element type="tranche" name="Tranche" maxOccurs="unbounded" minOccurs="1"/>
      <xs:element type="scheduleData" name="ScheduleData"  maxOccurs="1" minOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="tranche">
    <xs:all>
      <xs:element type="xs:string" name="Description" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="SecurityId" maxOccurs="1" minOccurs="1"/>
      <xs:element type="xs:integer" name="Seniority" maxOccurs="1" minOccurs="1"/>
      <xs:element name="Notionals" maxOccurs="1" minOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Notional" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="rpaData">
    <xs:all>
      <xs:element type="xs:float" name="ParticipationRate"/>
      <xs:element type="date" name="ProtectionStart"/>
      <xs:element type="date" name="ProtectionEnd"/>
      <xs:element type="xs:string" name="CreditCurveId"/>
      <xs:element type="xs:string" name="IssuerId" minOccurs="0"/>
      <xs:element type="xs:boolean" name="SettlesAccrual" minOccurs="0"/>
      <xs:element type="xs:float" name="FixedRecoveryRate" minOccurs="0"/>
      <xs:element name="ProtectionFee">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="legData" name="LegData" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Underlying">
        <xs:complexType>
          <xs:choice>
            <xs:sequence>
              <xs:element type="optionData" name="OptionData" minOccurs="0"/>
          <xs:element type="xs:boolean" name="NakedOption" minOccurs="0"/>
              <xs:element type="legData" name="LegData" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:element type="tlockData" name="TreasuryLockData"/>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbodata">
    <xs:all>
      <xs:element type="cboInvestment" name="CBOInvestment" maxOccurs="1" minOccurs="1"/>
      <xs:element type="cboStructure" name="CBOStructure" maxOccurs="1" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cboInvestment">
    <xs:all>
      <xs:element type="xs:string" name="TrancheName" maxOccurs="1" minOccurs="1"/>
      <xs:element type="xs:float" name="Notional" maxOccurs="1" minOccurs="1"/>
      <xs:element type="xs:string" name="StructureId" maxOccurs="1" minOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cboStructure">
    <xs:all>
      <xs:element type="xs:string" name="DayCounter"/>
      <xs:element type="xs:string" name="PaymentConvention"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:string" name="ReinvestmentEndDate" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:float" name="SeniorFee"/>
      <xs:element type="xs:string" name="FeeDayCounter"/>
      <xs:element type="xs:float" name="SubordinatedFee"/>
      <xs:element type="xs:float" name="EquityKicker"/>
      <xs:element type="cboBondBasketData" name="BondBasketData" maxOccurs="1" minOccurs="1"/>
      <xs:element type="cbotranches" name="CBOTranches" maxOccurs="1" minOccurs="1"/>
      <xs:element type="scheduleData" name="ScheduleData"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cboBondBasketData">
    
	<xs:sequence>
		<xs:element ref="subTradeGroup" maxOccurs="unbounded"/>
      <!-- <xs:element name="Trade" maxOccurs="unbounded"> -->
        <!-- <xs:complexType> -->
          <!-- <xs:all> -->
            <!-- <xs:element type="oreTradeType" name="TradeType"/> -->
            <!-- <xs:element type="envelope" name="Envelope" minOccurs="0"/> -->
            <!-- <xs:element type="bondData" name="BondData" maxOccurs="1" minOccurs="0"/> -->
          <!-- </xs:all> -->
          <!-- <xs:attribute type="xs:string" name="id"/> -->
        <!-- </xs:complexType> -->
      <!-- </xs:element> -->
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="cbotranches">
    <xs:sequence>
      <xs:element type="cbotranche" name="Tranche" maxOccurs="unbounded">
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="cbotranche">
    <xs:all>
      <xs:element type="xs:string" name="Name"/>
      <xs:element type="xs:float" name="ICRatio"/>
      <xs:element type="xs:float" name="OCRatio"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element ref="legDataType" maxOccurs="1" minOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbCallData">
    <xs:all>
      <xs:element type="scheduleData" name="ScheduleData"/>
      <xs:element name="Styles">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Style" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Prices">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Price" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="PriceTypes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PriceType" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="IncludeAccruals">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="IncludeAccrual"  maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="bool">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Soft" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Soft" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="bool">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TriggerRatios" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TriggerRatio" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="NOfMTriggers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="NOfMTrigger" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MakeWhole" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element name="ConversionRatioIncrease">
              <xs:complexType>
                <xs:sequence>
                  <xs:element type="xs:float" name="Cap" minOccurs="0"/>
                  <xs:element type="xs:string" name="StockPrices"/>
                  <xs:element name="CrIncreases">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="CrIncrease" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:simpleContent>
                              <xs:extension base="xs:string">
                                <xs:attribute name="startDate" type="xs:string" />
                              </xs:extension>
                            </xs:simpleContent>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:all>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbContingentConversionData">
    <xs:all>
      <xs:element name="Observations" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Observation" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Barriers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Barrier" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbPepsData">
    <xs:all>
      <xs:element type="xs:float" name="UpperBarrier"/>
      <xs:element type="xs:float" name="LowerBarrier"/>
      <xs:element type="xs:float" name="UpperConversionRatio"/>
      <xs:element type="xs:float" name="LowerConversionRatio"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbMandatoryConversionData">
    <xs:all>
    <xs:element type="date" name="Date"/>
    <xs:element type="xs:string" name="Type"/>
    <xs:element type="cbPepsData" name="PepsData"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbConversionResetData">
    <xs:all>
      <xs:element type="scheduleData" name="ScheduleData"/>
      <xs:element name="References">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Reference" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Thresholds">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Threshold" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Gearings">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Gearing" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Floors" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Floor" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GlobalFloors" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="GloobalFloor" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbExchangeableData">
    <xs:all>
      <xs:element type="bool" name="IsExchangeable"/>
      <xs:element type="xs:string" name="EquityCreditCurve" minOccurs="0"/>
      <xs:element type="bool" name="Secured" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbConversionData">
    <xs:all>
      <xs:element type="scheduleData" name="ScheduleData" minOccurs="0"/>
      <xs:element name="Styles" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Style" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConversionRatios" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ConversionRatio" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FixedAmountConversion" minOccurs="0">
        <xs:complexType>
          <xs:all>
            <xs:element type="xs:string" name="Currency"/>
            <xs:element name="Amounts">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Amount" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:simpleContent>
                        <xs:extension base="xs:float">
                          <xs:attribute name="startDate" type="xs:string" />
                        </xs:extension>
                      </xs:simpleContent>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:all>
        </xs:complexType>
      </xs:element>
      <xs:element type="cbContingentConversionData" name="ContingentConversion" minOccurs="0"/>
      <xs:element type="cbMandatoryConversionData" name="MandatoryConversion" minOccurs="0"/>
      <xs:element type="cbConversionResetData" name="ConversionResets" minOccurs="0"/>
      <xs:element type="underlying" name="Underlying" minOccurs="0"/>
      <xs:element type="xs:string" name="FXIndex" minOccurs="0"/>
      <xs:element type="calendar" name="FXIndexCalendar" minOccurs="0"/>
      <xs:element type="xs:integer" name="FXIndexFixingDays" minOccurs="0"/>
      <xs:element type="cbExchangeableData" name="Exchangeable" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cbDividendProtectionData">
    <xs:all>
      <xs:element type="scheduleData" name="ScheduleData"/>
      <xs:element name="AdjustmentStyles">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AdjustmentStyle" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="DividendTypes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="DividendType" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Thresholds">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Threshold" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="tlockData">
    <xs:all>
      <xs:element type="bool" name="Payer"/>
      <xs:element type="bondData" name="BondData"/>
      <xs:element type="xs:float" name="ReferenceRate"/>
      <xs:element type="dayCounter" name="DayCounter" minOccurs="0"/>
      <xs:element type="date" name="TerminationDate"/>
      <xs:element type="xs:integer" name="PaymentGap" minOccurs="0"/>
      <xs:element type="calendar" name="PaymentCalendar"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="compositeTradeComponents">
    <xs:sequence>
		<xs:element ref="subTradeGroup" maxOccurs="unbounded"/>
	  <!-- <xs:element name="Trade" maxOccurs="unbounded"> -->
        <!-- <xs:complexType> -->
          <!-- <xs:sequence> -->
            <!-- <xs:element type="oreTradeType" name="TradeType"/> -->
            <!-- <xs:element type="envelope" name="Envelope" minOccurs="0"/> -->
            <!-- <xs:group ref="oreTradeData"/> -->
          <!-- </xs:sequence> -->
          <!-- <xs:attribute type="xs:string" name="id"/> -->
        <!-- </xs:complexType> -->
      <!-- </xs:element> -->
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="notionalCalculation">
    <xs:restriction base="xs:string">
      <xs:enumeration value=""/>
      <xs:enumeration value="Sum"/>
      <xs:enumeration value="Mean"/>
      <xs:enumeration value="Average"/>
      <xs:enumeration value="First"/>
      <xs:enumeration value="Last"/>
      <xs:enumeration value="Min"/>
      <xs:enumeration value="Max"/>
      <xs:enumeration value="Override"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="compositeTradeData">
    <xs:all>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="notionalCalculation" name="NotionalCalculation" minOccurs="0"/>
      <xs:element type="xs:float" name="NotionalOverride" minOccurs="0"/>
      <xs:element type="xs:boolean" name="PortfolioBasket" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:string" name="BasketName" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:double" name="IndexQuantity" minOccurs="0"/>
      <xs:element type="compositeTradeComponents" name="Components" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="rangeBound">
    <xs:all>
      <xs:element type="xs:float" name="RangeFrom" minOccurs="0"/>
      <xs:element type="xs:float" name="RangeTo" minOccurs="0"/>
      <xs:element type="xs:float" name="Leverage" minOccurs="0"/>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
      <xs:element type="xs:float" name="StrikeAdjustment" minOccurs="0"/>
    </xs:all>
    <xs:attribute name="startDate" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="volBarrierOptionData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="CallNotional"/>
      <xs:element type="stFreeStyleNumber" name="PutNotional"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleCurrency" name="CallCcy"/>
      <xs:element type="stFreeStyleCurrency" name="PutCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="dualEuroBinaryOptionData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="VolSchedule"/>
      <xs:element type="stFreeStyleNumber" name="VolBarrierLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="VolBarrierType"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleEvent" name="BarrierDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleNumber" name="SettlementAmount"/>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="dualEuroBinaryOptionDoubleKOData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleNumber" name="VolBarrierLevel"/>
      <xs:element type="stFreeStyleEvent" name="VolBarrierDate"/>
      <xs:element type="stFreeStyleNumber" name="SpotBarrierLevel"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleNumber" name="SettlementAmount"/>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="arcOptionData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleNumber" name="StrikeFactor"/>
      <xs:element type="stFreeStyleNumber" name="BarrierFactor"/>
      <xs:element type="stFreeStyleNumber" name="CapRate"/>
      <xs:element type="stFreeStyleNumber" name="Offset"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="extendedAccumulatorData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="FixingAmount"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="ExtensionTrigger"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleCurrency" name="PayCurrency"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationSettlementDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="ConditionalObservationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="ConditionalSettlementDates"/>
      <xs:element type="stFreeStyleEvent" name="ExtensionDecisionDate"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="varianceOptionData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleNumber" name="PremiumAmount"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="VarianceReference"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleBool" name="SquaredPayoff"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="varianceDispersionSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings1"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights1"/>
      <xs:element type="stFreeStyleNumberVector" name="Strikes1"/>
      <xs:element type="stFreeStyleNumberVector" name="Spreads1"/>
      <xs:element type="stFreeStyleNumberVector" name="Notionals1"/>
      <xs:element type="stFreeStyleNumberVector" name="Caps1"/>
      <xs:element type="stFreeStyleNumberVector" name="Floors1"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings2"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights2"/>
      <xs:element type="stFreeStyleNumberVector" name="Strikes2"/>
      <xs:element type="stFreeStyleNumberVector" name="Spreads2"/>
      <xs:element type="stFreeStyleNumberVector" name="Notionals2"/>
      <xs:element type="stFreeStyleNumberVector" name="Caps2"/>
      <xs:element type="stFreeStyleNumberVector" name="Floors2"/>
      <xs:element type="stFreeStyleBool" name="DividendAdjustment"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="kikoVarianceSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleBool" name="SquaredPayoff"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="corridorVarianceSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleBool" name="SquaredPayoff"/>
      <xs:element type="stFreeStyleNumber" name="UpperBarrierLevel"/>
      <xs:element type="stFreeStyleNumber" name="LowerBarrierLevel"/>
      <xs:element type="stFreeStyleBool" name="CountBothObservations"/>
      <xs:element type="stFreeStyleBool" name="AccrualAdjustment"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="indexedCorridorVarianceSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleIndex" name="CorridorIndex"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleBool" name="SquaredPayoff"/>
      <xs:element type="stFreeStyleNumber" name="UpperBarrierLevel"/>
      <xs:element type="stFreeStyleNumber" name="LowerBarrierLevel"/>
      <xs:element type="stFreeStyleBool" name="AccrualAdjustment"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="kikoCorridorVarianceSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleNumber" name="CorridorUpperBarrierLevel"/>
      <xs:element type="stFreeStyleNumber" name="CorridorLowerBarrierLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="KIKOBarrierType"/>
      <xs:element type="stFreeStyleNumber" name="KIKOBarrierLevel"/>
      <xs:element type="stFreeStyleBool" name="CountBothObservations"/>
      <xs:element type="stFreeStyleBool" name="AccrualAdjustment"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementSchedule"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="corridorVarianceDispersionSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings1"/>
      <xs:element type="stFreeStyleNumberVector" name="Strikes1"/>
      <xs:element type="stFreeStyleNumberVector" name="Spreads1"/>
      <xs:element type="stFreeStyleNumberVector" name="Notionals1"/>
      <xs:element type="stFreeStyleNumberVector" name="Caps1"/>
      <xs:element type="stFreeStyleNumberVector" name="Floors1"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings2"/>
      <xs:element type="stFreeStyleNumberVector" name="Strikes2"/>
      <xs:element type="stFreeStyleNumberVector" name="Spreads2"/>
      <xs:element type="stFreeStyleNumberVector" name="Notionals2"/>
      <xs:element type="stFreeStyleNumberVector" name="Caps2"/>
      <xs:element type="stFreeStyleNumberVector" name="Floors2"/>
      <xs:element type="stFreeStyleNumberVector" name="UpperBarrierLevels"/>
      <xs:element type="stFreeStyleNumberVector" name="LowerBarrierLevels"/>
      <xs:element type="stFreeStyleBool" name="CountBothObservations"/>
      <xs:element type="stFreeStyleBool" name="AccrualAdjustment"/>
      <xs:element type="stFreeStyleBool" name="DividendAdjustment"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="koCorridorVarianceDispersionSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings1"/>
      <xs:element type="stFreeStyleNumberVector" name="Strikes1"/>
      <xs:element type="stFreeStyleNumberVector" name="Spreads1"/>
      <xs:element type="stFreeStyleNumberVector" name="Notionals1"/>
      <xs:element type="stFreeStyleNumberVector" name="Caps1"/>
      <xs:element type="stFreeStyleNumberVector" name="Floors1"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings2"/>
      <xs:element type="stFreeStyleNumberVector" name="Strikes2"/>
      <xs:element type="stFreeStyleNumberVector" name="Spreads2"/>
      <xs:element type="stFreeStyleNumberVector" name="Notionals2"/>
      <xs:element type="stFreeStyleNumberVector" name="Caps2"/>
      <xs:element type="stFreeStyleNumberVector" name="Floors2"/>
      <xs:element type="stFreeStyleNumberVector" name="CorridorUpperBarrierLevels"/>
      <xs:element type="stFreeStyleNumberVector" name="CorridorLowerBarrierLevels"/>
      <xs:element type="stFreeStyleNumberVector" name="KOUpperBarrierLevels"/>
      <xs:element type="stFreeStyleNumberVector" name="KOLowerBarrierLevels"/>
      <xs:element type="stFreeStyleBool" name="CountBothObservations"/>
      <xs:element type="stFreeStyleBool" name="AccrualAdjustment"/>
      <xs:element type="stFreeStyleBool" name="DividendAdjustment"/>
      <xs:element type="stFreeStyleEventSchedule" name="KnockOutSchedule"/>
      <xs:element type="stFreeStyleEvent" name="VarianceAccrualStartDate"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementSchedule"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>
  
  <xs:complexType name="pairwiseGeometricVarianceDispersionSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="PairCount"/>
	  <xs:element type="stFreeStyleNumber" name="BasketCount"/>
      <xs:element type="stFreeStyleNumberVector" name="Notionals"/>
	  <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="StrikesVS"/>
      <xs:element type="stFreeStyleNumberVector" name="StrikesBVS"/>
      <xs:element type="stFreeStyleNumberVector" name="BasketWeights"/>
      <xs:element type="stFreeStyleNumberVector" name="VarianceWeights"/>
      <xs:element type="stFreeStyleNumber" name="Lag"/>
	  <xs:element type="stFreeStyleNumber" name="CapAmountMultiplier"/>
	  <xs:element type="stFreeStyleNumber" name="Cap"/>
	  <xs:element type="stFreeStyleNumber" name="Floor"/>
	  <xs:element type="stFreeStyleBool" name="DividendAdjustment"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="conditionalVarianceSwap01Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleBool" name="SquaredPayoff"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleBool" name="CountBothObservations"/>
      <xs:element type="stFreeStyleBool" name="AccrualAdjustment"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="conditionalVarianceSwap02Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="VarianceReference"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleBool" name="SquaredPayoff"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleBool" name="CountBothObservations"/>
      <xs:element type="stFreeStyleBool" name="AccrualAdjustment"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="gammaSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementSchedule" minOccurs="0"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="basketVarianceSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleBool" name="SquaredPayoff"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bestEntryOptionData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Multiplier"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="TriggerLevel"/>
      <xs:element type="stFreeStyleNumber" name="ResetMinimum"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleEvent" name="ExpiryDate"/>
      <xs:element type="stFreeStyleEvent" name="StrikeDate"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleEventSchedule" name="StrikeObservationDates"/>
      <xs:element type="stFreeStyleCurrency" name="Currency"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="strikeResettableOptionData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
	  <xs:element type="stFreeStyleOptionType" name="OptionType"/>
	  <xs:element type="stFreeStyleCurrency" name="Currency"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
	  <xs:element type="stFreeStyleNumber" name="ResetStrike"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
	  <xs:element type="stFreeStyleNumber" name="TriggerType"/>
	  <xs:element type="stFreeStyleNumber" name="TriggerPrice"/>
	  <xs:element type="stFreeStyleIndex" name="Underlying"/>
	  <xs:element type="stFreeStyleEvent" name="ExpiryDate"/>
	  <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
	  <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
	  <xs:element type="stFreeStyleNumber" name="Premium"/>
	  <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="scriptedTradeData">
    <xs:sequence>
      <xs:sequence>
        <xs:element type="xs:string" name="ScriptName" minOccurs="0"/>
        <xs:element type="xs:string" name="ProductTag" minOccurs="0"/>
        <xs:element type="ore_script" name="Script" minOccurs="0"/>
      </xs:sequence>
      <xs:element name="Data">
        <xs:complexType>
          <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element name="Number">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="Name"/>
                    <xs:choice>
                      <xs:element name="Value"/>
                      <xs:element name="Values">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element type="xs:float" name="Value" maxOccurs="unbounded"/>
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                    </xs:choice>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Currency">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="Name"/>
                    <xs:choice>
                      <xs:element name="Value"/>
                      <xs:element name="Values">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element type="currencyCode" name="Value" maxOccurs="unbounded"/>
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                    </xs:choice>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Index">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="Name"/>
                    <xs:choice>
                      <xs:element name="Value"/>
                      <xs:element name="Values">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element type="xs:string" name="Value" maxOccurs="unbounded"/>
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                    </xs:choice>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Event">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="Name"/>
                    <xs:choice>
                      <xs:element name="Value"/>
                      <xs:element type="scheduleData" name="ScheduleData"/>
                      <xs:element name="DerivedSchedule">
                        <xs:complexType>
                          <xs:all>
                            <xs:element type="xs:string" name="BaseSchedule"/>
                            <xs:element type="xs:string" name="Shift"/>
                            <xs:element type="xs:string" name="Calendar"/>
                            <xs:element type="xs:string" name="Convention"/>
                          </xs:all>
                        </xs:complexType>
                      </xs:element>
                    </xs:choice>
                    <xs:element type="bool" name="ApplyCoarsening" minOccurs="0"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Daycounter">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="Name"/>
                    <xs:choice>
                      <xs:element name="Value"/>
                      <xs:element name="Values">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element type="dayCounter" name="Value" maxOccurs="unbounded"/>
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>
                    </xs:choice>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleEvent">
    <xs:simpleContent>
      <xs:extension base="date">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="event"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleNumber">
    <xs:simpleContent>
      <xs:extension base="xs:float">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="number"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleIndex">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="index"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleCurrency">
    <xs:simpleContent>
      <xs:extension base="currencyCode">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="currency"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleDayCounter">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="dayCounter"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleBool">
    <xs:simpleContent>
      <xs:extension base="xs:boolean">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="bool"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleOptionType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="optionType"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleLongShort">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="longShort"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleBarrierType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="barrierType"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleEventScheduleBase">
    <xs:sequence>
      <xs:choice>
        <xs:element type="scheduleData" name="ScheduleData"/>
        <xs:element name="DerivedSchedule">
          <xs:complexType>
            <xs:all>
              <xs:element type="xs:string" name="BaseSchedule"/>
              <xs:element type="xs:string" name="Shift"/>
              <xs:element type="xs:string" name="Calendar"/>
              <xs:element type="xs:string" name="Convention"/>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleEventSchedule">
    <xs:complexContent>
      <xs:extension base="stFreeStyleEventScheduleBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="event"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleNumberVectorBase">
    <xs:sequence>
      <xs:element type="xs:float" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleNumberVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleNumberVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="number"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleIndexVectorBase">
    <xs:sequence>
      <xs:element type="xs:string" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleIndexVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleIndexVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="index"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleCurrencyVectorBase">
    <xs:sequence>
      <xs:element type="currencyCode" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleCurrencyVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleCurrencyVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="currency"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleDayCounterVectorBase">
    <xs:sequence>
      <xs:element type="xs:string" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleDayCounterVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleDayCounterVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="dayCounter"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleBoolVectorBase">
    <xs:sequence>
      <xs:element type="xs:boolean" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleBoolVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleDayCounterVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="bool"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleOptionTypeVectorBase">
    <xs:sequence>
      <xs:element type="xs:string" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleOptionTypeVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleOptionTypeVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="optionType"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleLongShortVectorBase">
    <xs:sequence>
      <xs:element type="xs:string" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleLongShortVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleOptionTypeVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="longShort"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="stFreeStyleBarrierTypeVectorBase">
    <xs:sequence>
      <xs:element type="xs:string" name="Value" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="stFreeStyleBarrierTypeVector">
    <xs:complexContent>
      <xs:extension base="stFreeStyleOptionTypeVectorBase">
        <xs:attribute name="type">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="barrierType"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="asianBasketOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="averageStrikeBasketOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="lookbackCallBasketOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="lookbackPutBasketOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="vanillaBasketOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bestOfAirbagData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumberVector" name="StrikePrices"/>
      <xs:element type="stFreeStyleNumber" name="BonusCoupon"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationSchedule"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstOfBasketSwapData">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumber" name="InitialFixedRate"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleEventSchedule" name="DeterminationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementDates"/>
      <xs:element type="stFreeStyleNumberVector" name="KnockOutLevels"/>
      <xs:element type="stFreeStyleNumberVector" name="CouponTriggerLevels"/>
      <xs:element type="stFreeStyleNumber" name="KnockInLevel"/>
      <xs:element type="stFreeStyleNumber" name="CouponRate"/>
      <xs:element type="stFreeStyleBool" name="AccumulatingCoupons"/>
      <xs:element type="stFreeStyleIndex" name="FloatingIndex"/>
      <xs:element type="stFreeStyleNumber" name="FloatingSpread"/>
      <xs:element type="stFreeStyleDayCounter" name="FloatingDayCountFraction"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixingSchedule"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bestOfAssetOrCashRainbowOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstOfAssetOrCashRainbowOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="minRainbowOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="maxRainbowOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstPerformanceRainbowOption01Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumber" name="PayoffMultiplier"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstPerformanceRainbowOption02Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumber" name="PayoffMultiplier"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstPerformanceRainbowOption03Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumber" name="PayoffMultiplier"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleBool" name="BermudanBarrier"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleEventSchedule" name="BarrierSchedule"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstPerformanceRainbowOption04Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumber" name="PayoffMultiplier"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleBool" name="BermudanBarrier"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleEventSchedule" name="BarrierSchedule"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstPerformanceRainbowOption05Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstPerformanceRainbowOption06Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumberVector" name="StrikePrices"/>
      <xs:element type="stFreeStyleNumberVector" name="BarrierLevels"/>
      <xs:element type="stFreeStyleNumberVector" name="KnockInPrices"/>
      <xs:element type="stFreeStyleNumber" name="BonusCoupon"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationSchedule"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstPerformanceRainbowOption07Data">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumber" name="FixedRateI"/>
      <xs:element type="stFreeStyleNumber" name="FixedRateII"/>
      <xs:element type="stFreeStyleDayCounter" name="DayCountFraction"/>
      <xs:element type="stFreeStyleNumberVector" name="StrikePrices"/>
      <xs:element type="stFreeStyleNumber" name="Premium"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumberVector" name="TriggerLevels"/>
      <xs:element type="stFreeStyleEventSchedule" name="DeterminationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationSchedule"/>
      <xs:element type="stFreeStyleEvent" name="ObservationDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="autocallable01Data">
    <xs:all>
      <xs:element type="xs:float" name="NotionalAmount"/>
      <xs:element type="xs:float" name="DeterminationLevel"/>
      <xs:element type="xs:float" name="TriggerLevel"/>
      <xs:element type="underlying" name="Underlying"/>
      <xs:element type="longShort" name="Position"/>
      <xs:element type="currencyCode" name="PayCcy"/>
      <xs:element name="FixingDates">
        <xs:complexType>
          <xs:all>
            <xs:element type="scheduleData" name="ScheduleData"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
      <xs:element name="SettlementDates">
        <xs:complexType>
          <xs:all>
            <xs:element type="scheduleData" name="ScheduleData"/>
          </xs:all>
        </xs:complexType>
      </xs:element>
      <xs:element name="AccumulationFactors">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:float" name="Factor" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:float" name="Cap"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="doubleDigitalOptionData">
    <xs:all>
      <xs:element type="date" name="Expiry"/>
      <xs:element type="date" name="Settlement"/>
      <xs:element type="xs:float" name="BinaryPayout"/>
      <xs:element type="xs:float" name="BinaryLevel1"/>
      <xs:element type="xs:float" name="BinaryLevel2"/>
      <xs:element type="xs:float" name="BinaryLevelUpper1" minOccurs="0"/>
      <xs:element type="xs:float" name="BinaryLevelUpper2" minOccurs="0"/>
      <xs:element type="xs:string" name="Type1"/>
      <xs:element type="xs:string" name="Type2"/>
      <xs:element type="longShort" name="Position"/>
      <xs:element type="underlying" name="Underlying1" minOccurs="0"/>
      <xs:element type="underlying" name="Underlying2" minOccurs="0"/>
      <xs:element type="underlying" name="Underlying3" minOccurs="0"/>
      <xs:element type="underlying" name="Underlying4" minOccurs="0"/>
      <xs:element type="xs:string" name="Name1" minOccurs="0"/>
      <xs:element type="xs:string" name="Name2" minOccurs="0"/>
      <xs:element type="currencyCode" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="performanceOption01Data">
    <xs:all>
      <xs:element type="xs:float" name="NotionalAmount"/>
      <xs:element type="xs:float" name="ParticipationRate"/>
      <xs:element type="date" name="ValuationDate"/>
      <xs:element type="date" name="SettlementDate"/>
      <xs:element type="underlyings" name="Underlyings"/>
      <xs:element name="StrikePrices">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:float" name="StrikePrice" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="bool" name="StrikeIncluded" minOccurs="0"/>
      <xs:element type="longShort" name="Position"/>
      <xs:element type="currencyCode" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="windowBarrierOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleEvent" name="StartDate"/>
      <xs:element type="stFreeStyleEvent" name="EndDate"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEvent" name="PremiumPayDate"/>
      <xs:element type="stFreeStyleNumber" name="PremiumAmount"/>
      <xs:element type="stFreeStyleCurrency" name="PremiumCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="accumulator01Data">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="FixingAmount"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEvent" name="StartDate"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixingDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementDates"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeUpperBounds"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeLowerBounds"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeLeverages"/>
      <xs:element type="stFreeStyleNumber" name="KnockOutLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="KnockOutType"/>
      <xs:element type="stFreeStyleBool" name="AmericanKO"/>
      <xs:element type="stFreeStyleNumber" name="GuaranteedFixings"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="accumulator02Data">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="FixingAmount"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="KnockOutSettlementDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationPeriodEndDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementDates"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeUpperBounds"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeLowerBounds"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeLeverages"/>
      <xs:element type="stFreeStyleNumber" name="DefaultRange"/>
      <xs:element type="stFreeStyleNumber" name="KnockOutLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="KnockOutType"/>
      <xs:element type="stFreeStyleEvent" name="GuaranteedPeriodEndDate"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="tarfData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="FixingAmount"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixingDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementDates"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeUpperBounds"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeLowerBounds"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeLeverages"/>
      <xs:element type="stFreeStyleNumberVector" name="RangeStrikes"/>
      <xs:element type="stFreeStyleNumber" name="KnockOutProfitAmount"/>
      <xs:element type="stFreeStyleNumber" name="KnockOutProfitEvents"/>
      <xs:element type="stFreeStyleNumber" name="TargetAmount"/>
      <xs:element type="stFreeStyleNumber" name="TargetType"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="europeanRainbowCallSpreadOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialStrikes"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="rainbowCallSpreadBarrierOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialPrices"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleNumber" name="Gearing"/>
      <xs:element type="stFreeStyleBool" name="BermudanBarrier"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleEventSchedule" name="BarrierSchedule"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="asianRainbowCallSpreadOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="Expiry"/>
      <xs:element type="stFreeStyleEventSchedule" name="AveragingDates"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="InitialStrikes"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="asianIrCapFloorData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="NotionalAmount"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleDayCounter" name="FixingLagDc"/>
      <xs:element type="stFreeStyleNumber" name="MinFixingLag"/>
      <xs:element type="stFreeStyleNumber" name="MaxFixingLag"/>
      <xs:element type="stFreeStyleOptionType" name="OptionType"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Gearing"/>
      <xs:element type="stFreeStyleNumber" name="Spread"/>
      <xs:element type="stFreeStyleDayCounter" name="DayCountFraction"/>
      <xs:element type="stFreeStyleNumber" name="FixedAmount"/>
      <xs:element type="stFreeStyleEvent" name="FixedAmountPayDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEventSchedule" name="AccrualSchedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixingSchedule"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="constantMaturityVolatilitySwapData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="NotionalAmount"/>
        <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleDayCounter" name="DayCountFraction"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEvent" name="Settlement"/>
      <xs:element type="stFreeStyleEventSchedule" name="ResetSchedule"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="forwardVolatilityAgreementData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="FvaDate"/>
      <xs:element type="stFreeStyleEvent" name="OptionExpiry"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>

      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="ImpliedVolStrike"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="assetLinkedCliquetOptionData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Nominal"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleCurrency" name="PayCurrency"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="PaymentDates"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleIndexVector" name="FXConversions"/>
      <xs:element type="stFreeStyleNumberVector" name="Weights"/>
      <xs:element type="stFreeStyleIndex" name="LinkedUnderlying"/>
      <xs:element type="stFreeStyleNumber" name="PayStrike"/>
      <xs:element type="stFreeStyleNumber" name="RecStrike"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="correlationSwapData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Amount"/>
      <xs:element type="stFreeStyleNumber" name="FixedRate"/>
      <xs:element type="stFreeStyleBool" name="FixedRatePayer"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleEventSchedule" name="DeterminationDates"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cmsCapFloorBarrierData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="PremiumAmount"/>
      <xs:element type="stFreeStyleCurrency" name="PremiumCurrency"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleEvent" name="OptionExpiry"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleOptionType" name="OptionType"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="CMSUnderlyings"/>
      <xs:element type="stFreeStyleNumber" name="Gearing"/>
      <xs:element type="stFreeStyleNumber" name="Spread"/>
      <xs:element type="stFreeStyleIndex" name="BarrierUnderlying"/>
      <xs:element type="stFreeStyleNumber" name="BarrierLevel"/>
      <xs:element type="stFreeStyleBarrierType" name="BarrierType"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="SettlementCurrency"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="fixedStrikeForwardStartingOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="ForwardDate"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleEvent" name="OptionExpiry"/>
      <xs:element type="stFreeStyleDayCounter" name="DayCountFraction"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleNumber" name="UnderlyingDrift"/>
      <xs:element type="stFreeStyleNumber" name="DiscountRate"/>
      <xs:element type="stFreeStyleNumber" name="ImpliedVolatility"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="SettlementCurrency"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="floatingStrikeForwardStartingOptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="ForwardDate"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleEvent" name="OptionExpiry"/>
      <xs:element type="stFreeStyleNumber" name="PremiumAmount"/>
      <xs:element type="stFreeStyleCurrency" name="PremiumCurrency"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="SettlementCurrency"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="forwardStartingSwaptionData">
    <xs:all>
      <xs:element type="stFreeStyleEvent" name="DeterminationDate"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleNumber" name="SwaptionType"/>
      <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
      <xs:element type="stFreeStyleNumber" name="PremiumAmount"/>
      <xs:element type="stFreeStyleCurrency" name="PremiumCurrency"/>
      <xs:element type="stFreeStyleEvent" name="OptionExpiry"/>
      <xs:element type="stFreeStyleIndex" name="Underlying"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
      <xs:element type="stFreeStyleDayCounter" name="FixedDayCountFraction"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixedSchedule"/>
      <xs:element type="stFreeStyleDayCounter" name="FloatingDayCountFraction"/>
      <xs:element type="stFreeStyleEventSchedule" name="FloatingSchedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixingSchedule"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="flooredAverageCPIZCIISData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleCurrency" name="PayCurrency"/>
      <xs:element type="stFreeStyleDayCounter" name="FixedDayCounter"/>
      <xs:element type="stFreeStyleNumber" name="FixedRate"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixedLegSchedule"/>
      <xs:element type="stFreeStyleBool" name="PayFixLeg"/>
      <xs:element type="stFreeStyleDayCounter" name="FloatDayCounter"/>
      <xs:element type="stFreeStyleIndex" name="CPIIndex"/>
      <xs:element type="stFreeStyleEventSchedule" name="FloatLegSchedule"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleNumber" name="BaseCPI"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationSchedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixingSchedule"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="movingMaxYYIISData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleCurrency" name="PayCurrency"/>
      <xs:element type="stFreeStyleDayCounter" name="IborLegDayCounter"/>
      <xs:element type="stFreeStyleNumber" name="IborSpread"/>
      <xs:element type="stFreeStyleIndex" name="IborIndex"/>
      <xs:element type="stFreeStyleBool" name="PayIborLeg"/>
      <xs:element type="stFreeStyleEventSchedule" name="IborLegSchedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="IborLegFixingSchedule"/>
      <xs:element type="stFreeStyleDayCounter" name="InflationLeg1_DayCounter"/>
      <xs:element type="stFreeStyleIndex" name="InflationLeg1_CPI"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg1_Schedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg1_FixingSchedule"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg1_Gearing"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg1_Floor"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg1_InitialCPI"/>
      <xs:element type="stFreeStyleBool" name="InflationLeg1_SubtractNotional"/>
      <xs:element type="stFreeStyleDayCounter" name="InflationLeg2_DayCounter"/>
      <xs:element type="stFreeStyleIndex" name="InflationLeg2_CPI"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg2_Schedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg2_FixingSchedule"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg2_Gearing"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg2_Floor"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg2_InitialCPI"/>
      <xs:element type="stFreeStyleBool" name="InflationLeg2_SubtractNotional"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="irregularYYIISData">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleCurrency" name="PayCurrency"/>
      <xs:element type="stFreeStyleDayCounter" name="IborLegDayCounter"/>
      <xs:element type="stFreeStyleNumber" name="IborSpread"/>
      <xs:element type="stFreeStyleIndex" name="IborIndex"/>
      <xs:element type="stFreeStyleBool" name="PayIborLeg"/>
      <xs:element type="stFreeStyleEventSchedule" name="IborLegSchedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="IborLegFixingSchedule"/>
      <xs:element type="stFreeStyleDayCounter" name="InflationLeg1_DayCounter"/>
      <xs:element type="stFreeStyleIndex" name="InflationLeg1_CPI"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg1_Schedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg1_FixingSchedule"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg1_Gearing"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg1_Floor"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg1_InitialCPI"/>
      <xs:element type="stFreeStyleBool" name="InflationLeg1_SubtractNotional"/>
      <xs:element type="stFreeStyleDayCounter" name="InflationLeg2_DayCounter"/>
      <xs:element type="stFreeStyleIndex" name="InflationLeg2_CPI"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg2_Schedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="InflationLeg2_FixingSchedule"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg2_Gearing"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg2_Floor"/>
      <xs:element type="stFreeStyleNumber" name="InflationLeg2_InitialCPI"/>
      <xs:element type="stFreeStyleBool" name="InflationLeg2_SubtractNotional"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="genericBarrierOptionDataRaw">
    <xs:all>
      <xs:element type="stFreeStyleNumber" name="PayoffType"/>
      <xs:element type="stFreeStyleBarrierTypeVector" name="TransatlanticBarrierType"/>
      <xs:element type="stFreeStyleNumberVector" name="TransatlanticBarrierLevel"/>
      <xs:element type="stFreeStyleNumber" name="TransatlanticBarrierRebate"/>
      <xs:element type="stFreeStyleCurrency" name="TransatlanticBarrierRebateCurrency"/>
      <xs:element type="stFreeStyleNumberVector" name="TransatlanticBarrierStrictComparison"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleNumber" name="Quantity"/>
      <xs:element type="stFreeStyleNumber" name="Strike"/>
      <xs:element type="stFreeStyleNumber" name="Amount"/>
      <xs:element type="stFreeStyleCurrency" name="PayCurrency"/>
      <xs:element type="stFreeStyleEvent" name="ExpiryDate"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleEventSchedule" name="BarrierMonitoringDates"/>
      <xs:element type="stFreeStyleBarrierTypeVector" name="BarrierTypes"/>
      <xs:element type="stFreeStyleNumberVector" name="BarrierLevels"/>
      <xs:element type="stFreeStyleNumberVector" name="BarrierRebates"/>
      <xs:element type="stFreeStyleNumberVector" name="BarrierStrictComparison"/>
      <xs:element type="stFreeStyleCurrencyVector" name="BarrierRebateCurrencies"/>
      <xs:element type="stFreeStyleNumberVector" name="BarrierRebatePayTimes"/>
      <xs:element type="stFreeStyleNumber" name="BarrierRebate"/>
      <xs:element type="stFreeStyleCurrency" name="BarrierRebateCurrency"/>
      <xs:element type="stFreeStyleNumber" name="KikoType"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="ladderLockInOptionData">
    <xs:all>
        <xs:element type="stFreeStyleLongShort" name="LongShort"/>
        <xs:element type="stFreeStyleNumber" name="Quantity"/>
        <xs:element type="stFreeStyleOptionType" name="PutCall"/>
        <xs:element type="stFreeStyleNumber" name="PremiumAmount"/>
        <xs:element type="stFreeStyleEvent" name="PremiumDate"/>
        <xs:element type="stFreeStyleIndex" name="Underlying"/>
        <xs:element type="stFreeStyleNumberVector" name="LockInLevels"/>
        <xs:element type="stFreeStyleEventSchedule" name="ObservationSchedule"/>
        <xs:element type="stFreeStyleNumber" name="Strike"/>
        <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
        <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="europeanOptionBarrierData">
    <xs:all>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="xs:string" name="PutCall"/>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="PremiumAmount"/>
      <xs:element type="currencyCode" name="PremiumCurrency"/>
      <xs:element type="date" name="PremiumDate"/>
      <xs:element type="premiumData" name="Premiums" minOccurs="0"/>
      <xs:element type="date" name="OptionExpiry"/>
      <xs:element type="underlying" name="OptionUnderlying"/>
      <xs:element type="underlying" name="BarrierUnderlying"/>
      <xs:element type="xs:float" name="BarrierLevel"/>
      <xs:element type="xs:string" name="BarrierType"/>
      <xs:element type="xs:string" name="BarrierStyle"/>
      <xs:element type="scheduleData" name="BarrierSchedule" minOccurs="0"/>
      <xs:element type="date" name="SettlementDate"/>
      <xs:element type="currencyCode" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="tarfData2">
    <xs:all>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="FixingAmount"/>
      <xs:element type="xs:float" name="TargetAmount" minOccurs="0"/>
      <xs:element type="xs:float" name="TargetPoints" minOccurs="0"/>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
      <xs:element name="Strikes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Strike" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:float">
                    <xs:attribute name="startDate" type="xs:string"/>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="underlying" name="Underlying"/>
      <xs:element type="scheduleData" name="ScheduleData"/>
      <xs:element type="xs:string" name="SettlementLag" minOccurs="0"/>
      <xs:element type="calendar" name="SettlementCalendar" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="SettlementConvention" minOccurs="0"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element name="RangeBounds" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="rangeBound" name="RangeBound" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="RangeBoundSet" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RangeBounds" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element type="rangeBound" name="RangeBound" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:attribute name="startDate" type="xs:string"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Barriers">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="barrierData" name="BarrierData" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="bestEntryOptionData2">
    <xs:all>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="xs:float" name="Multiplier"/>
      <xs:element type="xs:float" name="Cap"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="TriggerLevel"/>
      <xs:element type="xs:float" name="ResetMinimum"/>
      <xs:element type="xs:float" name="Premium"/>
      <xs:element type="date" name="ExpiryDate"/>
      <xs:element type="date" name="StrikeDate"/>
      <xs:element type="date" name="PremiumDate"/>
      <xs:element type="date" name="SettlementDate"/>
      <xs:element type="scheduleData" name="StrikeObservationDates"/>
      <xs:element type="underlying" name="Underlying"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="strikeResettableOptionData2">
    <xs:all>
      <xs:element type="longShort" name="LongShort"/>
	  <xs:element type="optionType" name="OptionType"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="ResetStrike"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element name="TriggerType">
	    <xs:simpleType>
		  <xs:restriction base="xs:string">
		    <xs:enumeration value="Up"/>
		    <xs:enumeration value="Down"/>
		  </xs:restriction>
	    </xs:simpleType>
	  </xs:element>
      <xs:element type="xs:float" name="TriggerPrice"/>
	  <xs:element type="underlying" name="Underlying"/>
	  <xs:element type="date" name="ExpiryDate"/>
	  <xs:element type="date" name="SettlementDate"/>
      <xs:element type="xs:float" name="Premium"/>
      <xs:element type="date" name="PremiumDate"/>
      <xs:element type="scheduleData" name="ObservationDates"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="worstOfBasketSwapData2">
    <xs:all>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Quantity"/>
      <xs:element type="xs:float" name="InitialFixedRate" minOccurs="0"/>
      <xs:element type="date" name="InitialFixedPayDate" minOccurs="0"/>
      <xs:element type="underlyings" name="Underlyings"/>
      <xs:element name="InitialPrices">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:float" name="InitialPrice" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="date" name="KnockInPayDate" minOccurs="0"/>
      <xs:element type="scheduleData" name="FloatingPeriodSchedule"/>
      <xs:element type="scheduleData" name="FloatingFixingSchedule" minOccurs="0"/>
      <xs:element type="scheduleData" name="FixedDeterminationSchedule" minOccurs="0"/>
      <xs:element type="scheduleData" name="FloatingPayDates"/>
      <xs:element type="scheduleData" name="FixedPayDates" minOccurs="0"/>
      <xs:element type="scheduleData" name="KnockOutDeterminationSchedule" minOccurs="0"/>
      <xs:element type="scheduleData" name="FixedAccrualSchedule" minOccurs="0"/>
      <xs:element name="KnockOutLevels">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:float" name="KnockOutLevel" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:boolean" name="BermudanKnockIn" minOccurs="0"/>
      <xs:element name="FixedTriggerLevels">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:float" name="FixedTriggerLevel" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element type="xs:float" name="KnockInLevel" minOccurs="0"/>
      <xs:element type="scheduleData" name="KnockInDeterminationSchedule" minOccurs="0"/>
      <xs:element type="xs:float" name="FixedRate"/>
      <xs:element type="xs:boolean" name="AccumulatingFixedCoupons" minOccurs="0"/>
      <xs:element type="xs:boolean" name="AccruingFixedCoupons" minOccurs="0"/>
      <xs:element type="xs:string" name="FloatingIndex"/>
      <xs:element type="xs:float" name="FloatingSpread" minOccurs="0"/>
      <xs:element type="xs:string" name="FloatingLookback" minOccurs="0"/>
      <xs:element type="xs:string" name="FloatingRateCutoff" minOccurs="0"/>
      <xs:element type="dayCounter" name="FloatingDayCountFraction"/>
      <xs:element type="xs:boolean" name="IsAveraged" minOccurs="0"/>
      <!-- <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0"/> -->
      <xs:element type="xs:boolean" name="IncludeSpread" minOccurs="0"/>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="basketVarianceSwapData2">
    <xs:all>
      <xs:element type="longShort" name="LongShort"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="underlyings" name="Underlyings"/>
      <xs:element type="scheduleData" name="ValuationSchedule"/>
      <xs:element type="xs:boolean" name="SquaredPayoff"/>
      <xs:element type="xs:float" name="Cap" minOccurs="0"/>
      <xs:element type="xs:float" name="Floor" minOccurs="0"/>
      <xs:element type="date" name="SettlementDate"/>
      <xs:element type="currencyCode" name="Currency"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="accumulatorData">
    <xs:all>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="FixingAmount"/>
      <xs:element type="xs:boolean" name="DailyFixingAmount" minOccurs="0"/>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
      <xs:element type="underlying" name="Underlying"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="date" name="StartDate" minOccurs="0"/>
      <xs:element type="scheduleData" name="ObservationDates"/>
      <xs:element type="scheduleData" name="PricingDates" minOccurs="0"/>
      <xs:element type="scheduleData" name="SettlementDates" minOccurs="0"/>
      <xs:element type="xs:string" name="SettlementLag" minOccurs="0"/>
      <xs:element type="calendar" name="SettlementCalendar" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="SettlementConvention" minOccurs="0"/>
      <xs:element type="xs:boolean" name="NakedOption" minOccurs="0"/>
      <xs:element type="xs:boolean" name="KnockOutSettlementAtPeriodEnd" minOccurs="0"/>
      <xs:element type="xs:boolean" name="KnockOutFixingAtKOSettlement" minOccurs="0" />
      <xs:element type="underlying" name="FxIndex" minOccurs="0" />
      <xs:element name="RangeBounds">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="rangeBound" name="RangeBound" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Barriers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="barrierData" name="BarrierData" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="windowBarrierOptionData2">
    <xs:all>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="FixingAmount"/>
      <xs:element ref="strikeGroup"/>
      <xs:element type="underlying" name="Underlying"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="date" name="StartDate"/>
      <xs:element type="date" name="EndDate"/>
      <xs:element type="barrierData" name="BarrierData"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="genericBarrierOptionData">
    <xs:all>
      <xs:element type="currencyCode" name="PayCurrency"/>
      <xs:element ref="underlyingTypes"/>
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="date" name="SettlementDate" minOccurs="0"/>
      <xs:element type="xs:string" name="SettlementLag" minOccurs="0"/>
      <xs:element type="calendar" name="SettlementCalendar" minOccurs="0"/>
      <xs:element type="businessDayConvention" name="SettlementConvention" minOccurs="0"/>
      <xs:element type="xs:float" name="Quantity" minOccurs="0"/>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
      <xs:element type="xs:float" name="Amount" minOccurs="0"/>
      <xs:element name="Barriers">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="scheduleData" name="ScheduleData" minOccurs="0"/>
            <xs:element type="date" name="StartDate" minOccurs="0"/>
            <xs:element type="date" name="EndDate" minOccurs="0"/>
            <xs:element type="barrierData" name="BarrierData" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="KikoType" minOccurs="0">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="KoAlways"/>
                 <xs:enumeration value="KoBeforeKi"/>
                 <xs:enumeration value="KoAfterKi"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TransatlanticBarrier" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="barrierData" name="BarrierData" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="basketOptionData">
    <xs:all>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="xs:float" name="Strike" minOccurs="0"/>
      <xs:element type="underlyings" name="Underlyings" />
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="xs:string" name="Settlement" minOccurs="0"/>
      <xs:element type="scheduleData" name="ObservationDates" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="rainbowOptionData">
    <xs:all>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="xs:float" name="Strike"/>
      <xs:element type="underlyings" name="Underlyings" />
      <xs:element type="optionData" name="OptionData"/>
      <xs:element type="xs:string" name="Settlement" minOccurs="0"/>
    </xs:all>
  </xs:complexType>


  <xs:complexType name="assetBackedCreditDefaultSwapData">
    <xs:all>
      <xs:element type="bondData" name="BondData"/>
      <xs:element type="xs:string" name="ProtectionSide"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="xs:float" name="PremiumRate" minOccurs="0"/>
      <xs:element type="dayCounter" name="PremiumDayCounter" minOccurs="0"/>
      <xs:element name="PremiumData" minOccurs="0">
    <xs:complexType>
      <xs:all>
        <xs:element type="legType" name="LegType"/>
        <xs:element type="dayCounter" name="DayCounter" minOccurs="0"/>
        <xs:element ref="legDataType"/>
      </xs:all>
    </xs:complexType>
      </xs:element>
      <xs:element type="date" name="ProtectionStart" minOccurs="0"/>
      <xs:element type="date" name="ProtectionEnd" minOccurs="0"/>
      <xs:element type="bool" name="SettlesAccrual" minOccurs="0"/>
      <xs:element type="bool" name="PaysAtDefaultTime" minOccurs="0"/>
      <xs:element type="xs:string" name="ProtectionPaymentTime" minOccurs="0"/>
      <xs:element type="date" name="UpfrontDate" minOccurs="0"/>
      <xs:element type="xs:float" name="UpfrontFee" minOccurs="0"/>
      <xs:element type="xs:float" name="FixedRecoveryRate" minOccurs="0"/>
      <xs:element type="date" name="TradeDate" minOccurs="0"/>
      <xs:element type="xs:nonNegativeInteger" name="CashSettlementDays" minOccurs="0"/>
      <xs:element type="bool" name="FullFirstCoupon" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="lapseHedgeSwapData">
    <xs:all>
      <xs:element type="stFreeStyleBool" name="Payer"/>
      <xs:element type="stFreeStyleNumber" name="Notional"/>
      <xs:element type="stFreeStyleNumber" name="LapseHedgePercentage"/>
      <xs:element type="stFreeStyleNumberVector" name="deltaN"/>
      <xs:element type="stFreeStyleCurrency" name="SettlementCurrency"/>
      <xs:element type="stFreeStyleDayCounter" name="Paydaycounter"/>
      <xs:element type="stFreeStyleNumber" name="IRS"/>
      <xs:element type="stFreeStyleNumber" name="IRSSpread"/>
      <xs:element type="stFreeStyleNumber" name="Tau"/>
      <xs:element type="stFreeStyleNumber" name="Fee"/>
      <xs:element type="stFreeStyleNumberVector" name="IMS"/>
      <xs:element type="stFreeStyleNumberVector" name="PHFV"/>
      <xs:element type="stFreeStyleNumberVector" name="Penalty"/>
      <xs:element type="stFreeStyleNumberVector" name="ExitPrice"/>
      <xs:element type="stFreeStyleNumberVector" name="ExitFee"/>
      <xs:element type="stFreeStyleNumber" name="InitialExchangeFee"/>
      <xs:element type="stFreeStyleEventSchedule" name="InitialExchangeDate"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="PaymentDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="ExerciseDates"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="knockOutSwapData">
    <xs:sequence>
      <xs:element type="barrierData" name="BarrierData"/>
      <xs:element type="date" name="BarrierStartDate"/>
      <xs:element type="legData" name="LegData" minOccurs="2" maxOccurs="2"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LPISwapData">
    <xs:all>
      <xs:element type="stFreeStyleCurrency" name="PayCurrency"/>
      <xs:element type="stFreeStyleBool" name="PayFixLeg"/>
      <xs:element type="stFreeStyleDayCounter" name="FixedDayCounter"/>
      <xs:element type="stFreeStyleNumber" name="ZeroCouponRate"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixedLegSchedule"/>
      <xs:element type="stFreeStyleNumberVector" name="FixedLegNotionals"/>

      <xs:element type="stFreeStyleIndex" name="CPIIndex"/>
      <xs:element type="stFreeStyleEventSchedule" name="FloatLegSchedule"/>
      <xs:element type="stFreeStyleEvent" name="FloatLegFirstPaymentDate"/>
      <xs:element type="stFreeStyleNumberVector" name="FloatLegNotional"/>
      <xs:element type="stFreeStyleNumber" name="Floor"/>
      <xs:element type="stFreeStyleNumber" name="Cap"/>
      <xs:element type="stFreeStyleEventSchedule" name="FixingSchedule"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cashPositionData">
    <xs:all>
      <xs:element type="extendedCurrencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Amount"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="pairwiseVarianceSwapData2">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="UnderlyingStrikes"/>
      <xs:element type="stFreeStyleNumberVector" name="UnderlyingNotionals"/>
      <xs:element type="stFreeStyleNumber" name="BasketNotional"/>
      <xs:element type="stFreeStyleNumber" name="BasketStrike"/>
      <xs:element type="scheduleData" name="ValuationSchedule"/>
      <xs:element type="scheduleData" name="LaggedValuationSchedule" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="AccrualLag" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="PayoffLimit" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="Cap" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="Floor" minOccurs="0"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="pairwiseVarianceSwapData1">
    <xs:all>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleIndexVector" name="Underlyings"/>
      <xs:element type="stFreeStyleNumberVector" name="UnderlyingStrikes"/>
      <xs:element type="stFreeStyleNumberVector" name="UnderlyingNotionals"/>
      <xs:element type="stFreeStyleNumber" name="BasketNotional"/>
      <xs:element type="stFreeStyleNumber" name="BasketStrike"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationSchedule"/>
      <xs:element type="stFreeStyleEventSchedule" name="LaggedValuationSchedule" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="AccrualLag" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="PayoffLimit" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="Cap" minOccurs="0"/>
      <xs:element type="stFreeStyleNumber" name="Floor" minOccurs="0"/>
      <xs:element type="stFreeStyleEvent" name="SettlementDate"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>


  <xs:complexType name="eqOutperformanceOptionData">
    <xs:all>
      <xs:element type="optionData" name="OptionData" minOccurs="1"/>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="xs:float" name="Notional"/>
      <xs:element type="underlying" name="Underlying1"/>
      <xs:element type="underlying" name="Underlying2"/>
      <xs:element type="xs:float" name="InitialPrice1"/>
      <xs:element type="xs:float" name="InitialPrice2"/>
      <xs:element type="xs:float" name="StrikeReturn"/>
      <xs:element type="xs:float" name="KnockInPrice" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:float" name="KnockOutPrice" minOccurs="0" maxOccurs="1"/>
      <xs:element type="currencyCode" name="InitialPriceCurrency1" minOccurs="0" maxOccurs="1"/>
      <xs:element type="fxTermsData" name="InitialPriceFXTerms1" minOccurs="0" maxOccurs="1"/>
      <xs:element type="currencyCode" name="InitialPriceCurrency2" minOccurs="0" maxOccurs="1"/>
      <xs:element type="fxTermsData" name="InitialPriceFXTerms2" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:element name="FormulaBasedLegData" substitutionGroup="legDataType">
    <xs:complexType>
      <xs:all>
        <xs:element type="xs:string" name="Index"/>
        <xs:element type="xs:boolean" name="IsInArrears" minOccurs="0" maxOccurs="1"/>
        <xs:element type="xs:integer" name="FixingDays"/>
        <xs:element type="calendar" name="FixingCalendar" minOccurs="0" maxOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="commodityRevenueOptionData">
    <xs:all>
      <xs:element type="stFreeStyleOptionType" name="PutCall"/>
      <xs:element type="stFreeStyleLongShort" name="LongShort"/>
      <xs:element type="stFreeStyleEventSchedule" name="ObservationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="ValuationDates"/>
      <xs:element type="stFreeStyleEventSchedule" name="SettlementSchedule"/>
      <xs:element type="stFreeStyleNumber" name="TrueUp"/>
      <xs:element type="stFreeStyleEventSchedule" name="MonthlySchedule"/>
      <xs:element type="stFreeStyleNumberVector" name="MonthlyBaseloadCapacity"/>
      <xs:element type="stFreeStyleNumberVector" name="MonthlyDuctFiredCapacity"/>
      <xs:element type="stFreeStyleNumberVector" name="MonthlyBaseloadHeatRate"/>
      <xs:element type="stFreeStyleNumberVector" name="MonthlyDuctFiredHeatRate"/>
      <xs:element type="stFreeStyleNumberVector" name="VOM"/>
      <xs:element type="stFreeStyleNumber" name="HoursPerDay"/>
      <xs:element type="stFreeStyleIndex" name="GasIndex"/>
      <xs:element type="stFreeStyleIndex" name="EnergyIndex"/>
      <xs:element type="stFreeStyleCurrency" name="PayCcy"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="stubInterpolation">
    <xs:all>
      <xs:element type="indexNameType" name="ShortIndex" maxOccurs="1" minOccurs="1"/>
      <xs:element type="indexNameType" name="LongIndex" maxOccurs="1" minOccurs="1"/>
      <xs:element type="roundingType" name="RoundingType" minOccurs="0" maxOccurs="1"/>
      <xs:element type="xs:integer" name="RoundingPrecision" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

</xs:schema>
