public class EinfacherTermin
extends de.ipcon.db.core.EinfacherTerminBase
implements de.ipcon.messaging.email.DataSourceConvertibleI
Alarm.AlarmDefinitionException
ATT_DatumStart, ATT_NaechsteAusloesung, ATT_Vorwarnzeit, ATT_Wiederholungsspezifikation, ENT_EinfacherTermin
ATT_Absender, ATT_Aktiv, ATT_AlarmAusloesungen, ATT_AnhaengeScript, ATT_AutomatischDeaktiviertAm, ATT_BeiAusloesungBenachrichtigen, ATT_BeiAusloesungBenachrichtigenAdressen, ATT_BeiAusloesungBenachrichtigenBCC, ATT_BeiAusloesungBenachrichtigenCC, ATT_BeiAusloesungMitAntwortAn, ATT_BenachrichtigungsScript, ATT_BenachrichtigungsVorlage, ATT_Benutzer, ATT_BeschraenktAufAdresstypen, ATT_Gruppen, ATT_LetzterFehler, ATT_LetzterFehlerAm, ATT_MaxAlterAusloesung, ATT_NotifyOnFailure, ATT_Prioritaet, ATT_SaveErrorHandlingScript, ATT_TestBenachrichtigungsAuftrag, ATT_Testmodus, ATT_Tid, ATT_Verantwortlicher, ATT_Versendungen, ATT_WillSignatur, ATT_WillVerschluesselung, ENT_Alarm
ATT_Beschreibung, ATT_KinderRefs, ATT_L10nBeschreibung, ATT_L10nName, ATT_Name, ENT_Benannt
ATT_AlsAntwortAnBeiAuftraegen, ATT_AlsEmpfaengerBCCBeiAuftraegen, ATT_AlsEmpfaengerBeiAuftraegen, ATT_AlsEmpfaengerCCBeiAuftraegen, ATT_AlsKontextBOBeiAuftraegen, ATT_WirdAlsAntwortAnVerwendetBeiAlarmen, ATT_WirdBenachrichtigtBCCBeiAlarm, ATT_WirdBenachrichtigtBeiAlarm, ATT_WirdBenachrichtigtCCBeiAlarm, ENT_CoreBO
BLOB_KEY, CANCEL_RECALC_CALLED, D_0, D_1, D_10, D_100, D_1000, D_10000, D_5, D_MINUS_1, D_MINUS_ONE, D_ONE, D_ZERO, doExWriteLRMFunction, EMPTY_ARRAY, F_0, F_1, L_0, L10N_KEY_BO_INSTANTIATION, L10N_KEY_BO_WITH_PROTECTED_CONSTRUCTOR, NULL_AGGREGATE, NULL_ITERATOR
ATT_Badge, ATT_Badge2, ATT_Badge3, ATT_Badge4, ATT_BLOBCreatedBy, ATT_BLOBCreatedOn, ATT_BLOBDeletedBy, ATT_BLOBDeletedOn, ATT_BLOBLastModifiedBy, ATT_BLOBLastModifiedOn, ATT_Bot, ATT_Crea, ATT_CreatedBy, ATT_CreatedModifiedText, ATT_Id, ATT_InvolvedInProcs, ATT_LastModifiedBy, ATT_Ldel, ATT_Lmod, ATT_Procs, EMPTY_ARRAY, ENT_BO
Constructor and Description |
---|
EinfacherTermin() |
Modifier and Type | Method and Description |
---|---|
AlarmBenachrichtigungsauftrag |
action_testNotificationCreationOnly(Transaction tx,
AlarmNotificationManager anm)
Action method called from the "testing" tab in the GUI.
|
boolean |
changeMayAffectSchedule(BP _bp)
Returns true if the change that is represented by the given _bp will
probably result in the schedule having to be adjusted.
|
javax.activation.DataSource |
getDataSource() |
java.util.Locale |
getDataSourceLocale() |
java.util.Date |
getDatumAusloesung() |
java.util.Date |
getDatumAusloesung(java.util.Date explicitNow) |
java.util.Date |
getNaechsteAusloesung() |
java.util.Date |
getNaechsteAusloesung(java.util.Date explicitNow) |
boolean |
isMandatory(AttributeI _attr)
Tells if the passed
AttributeI is mandatory in the context of this BO
(for the UI and access via the schema). |
boolean |
isReadOnly(AttributeI _attr)
Tells if the passed
AttributeI is read-only in the context of this BO
(for the UI and access via the schema). |
void |
setDatumAusloesung(java.util.Date value) |
java.lang.String |
toICalendarString()
Builds a suitable string in ICalendar format for this EinfacherTermin.
|
boolean |
trigger(KernelDatabaseSaverI kds,
BenachrichtigungsScriptAPI bsapi,
java.util.Date dateNow)
Might be overwritten by subclasses; simply returns 0.
|
void |
verifyOnClient(BasicClientContextI _ctx) |
copyFrom, copyFrom, equalPayload, getDatumStart, getVorwarnzeit, getVorwarnzeitNN, getVorwarnzeitNN, getWiederholungsspezifikation, getWiederholungsspezifikationNE, getWiederholungsspezifikationNN, getWiederholungsspezifikationNN, needDatumStart, needNaechsteAusloesung, needVorwarnzeit, needWiederholungsspezifikation, readExternal, setBOLoader, setDatumStart, setVorwarnzeit, setWiederholungsspezifikation, slim, slim, writeExternal
addBeiAusloesungBenachrichtigen, addBeiAusloesungBenachrichtigenBCC, addBeiAusloesungBenachrichtigenCC, addBenutzer, addGruppe, afterVerifyOnServer, canUseAnhaengeScript, getAlleBeiAusloesungBenachrichtigen, getAttachmentsScript, getBeiAusloesungBenachrichtigenAdressen, getBenutzer, getCompiledSaveErrorHandlingScript, getGruppen, getOldestAllowedTriggerDate, getOldestAllowedTriggerDate, getReceiversMatchingRelationType, getReceiversMatchingRelationTypeBCC, getReceiversMatchingRelationTypeCC, getTriggerActionScript, getVersendungen, init, onChange, onChange, onCreate, onDelete, removeBenutzer, removeGruppe, setAktiv, setAnhaengeScript, setBenachrichtigungsScript, setSaveErrorHandlingScript, storeLastError, storeLastError, toString, transferDataFrom, verifyOnServer
addAlarmAusloesung, addBeiAusloesungMitAntwortAn, addBeschraenktAufAdresstyp, getAbsender, getAktiv, getAktivNN, getAktivNN, getAlarmAusloesungen, getAlarmAusloesungenIterator, getAnhaengeScript, getAnhaengeScriptNE, getAnhaengeScriptNN, getAnhaengeScriptNN, getAutomatischDeaktiviertAm, getBeiAusloesungBenachrichtigen, getBeiAusloesungBenachrichtigenAdressenIterator, getBeiAusloesungBenachrichtigenBCC, getBeiAusloesungBenachrichtigenBCCIterator, getBeiAusloesungBenachrichtigenCC, getBeiAusloesungBenachrichtigenCCIterator, getBeiAusloesungBenachrichtigenIterator, getBeiAusloesungMitAntwortAn, getBeiAusloesungMitAntwortAnIterator, getBenachrichtigungsScript, getBenachrichtigungsScriptNE, getBenachrichtigungsScriptNN, getBenachrichtigungsScriptNN, getBenachrichtigungsVorlage, getBenutzerIterator, getBeschraenktAufAdresstypen, getBeschraenktAufAdresstypenIterator, getGruppenIterator, getLetzterFehler, getLetzterFehlerAm, getLetzterFehlerNE, getLetzterFehlerNN, getLetzterFehlerNN, getMaxAlterAusloesung, getMaxAlterAusloesungNN, getMaxAlterAusloesungNN, getNotifyOnFailure, getPrioritaet, getPrioritaetNN, getPrioritaetNN, getSaveErrorHandlingScript, getSaveErrorHandlingScriptNE, getSaveErrorHandlingScriptNN, getSaveErrorHandlingScriptNN, getTestBenachrichtigungsAuftrag, getTestmodus, getTestmodusNN, getTestmodusNN, getTid, getTidNE, getTidNN, getTidNN, getVerantwortlicher, getVersendungenIterator, getWillSignatur, getWillSignaturNN, getWillSignaturNN, getWillVerschluesselung, getWillVerschluesselungNN, getWillVerschluesselungNN, istAktiv, istTestmodus, needAbsender, needAktiv, needAnhaengeScript, needAutomatischDeaktiviertAm, needBenachrichtigungsScript, needBenachrichtigungsVorlage, needLetzterFehler, needLetzterFehlerAm, needMaxAlterAusloesung, needNotifyOnFailure, needPopulatedAlarmAusloesungen, needPopulatedBeiAusloesungBenachrichtigen, needPopulatedBeiAusloesungBenachrichtigenAdressen, needPopulatedBeiAusloesungBenachrichtigenBCC, needPopulatedBeiAusloesungBenachrichtigenCC, needPopulatedBeiAusloesungMitAntwortAn, needPopulatedBenutzer, needPopulatedBeschraenktAufAdresstypen, needPopulatedGruppen, needPopulatedVersendungen, needPrioritaet, needSaveErrorHandlingScript, needTestBenachrichtigungsAuftrag, needTestmodus, needTid, needVerantwortlicher, needWillSignatur, needWillVerschluesselung, pgetAlarmAusloesungenLazy, pgetBeiAusloesungBenachrichtigenBCCLazy, pgetBeiAusloesungBenachrichtigenCCLazy, pgetBeiAusloesungBenachrichtigenLazy, pgetBeiAusloesungMitAntwortAnLazy, pgetBeschraenktAufAdresstypenLazy, removeAlarmAusloesung, removeBeiAusloesungBenachrichtigen, removeBeiAusloesungBenachrichtigenBCC, removeBeiAusloesungBenachrichtigenCC, removeBeiAusloesungMitAntwortAn, removeBeschraenktAufAdresstyp, setAbsender, setAlarmAusloesungen, setAutomatischDeaktiviertAm, setBeiAusloesungBenachrichtigen, setBeiAusloesungBenachrichtigenBCC, setBeiAusloesungBenachrichtigenCC, setBeiAusloesungMitAntwortAn, setBenachrichtigungsVorlage, setBeschraenktAufAdresstypen, setLetzterFehler, setLetzterFehlerAm, setMaxAlterAusloesung, setNotifyOnFailure, setPrioritaet, setTestBenachrichtigungsAuftrag, setTestmodus, setTid, setVerantwortlicher, setWillSignatur, setWillVerschluesselung
compareTo, createTID, createTID, getL10nBeschreibung, getL10nName, getPairStorage, inputAsBenanntRelation, inputAsBenanntRelation, inputAsBenanntRelation, inputAsBenanntRelation, inputAsMultiBenanntRelation, inputAsMultiBenanntRelation, inputAsMultiBenanntRelation, inputAsMultiRelation, inputAsMultiRelation, inputAsMultiRelation, inputAsRelation, inputAsRelation, inputAsRelation, inputAsRelation, outputAsBenanntRelation, outputAsBenanntRelation, outputAsMultiBenanntRelation, outputAsMultiBenanntRelation, outputAsMultiRelation, outputAsMultiRelation, outputAsRelation, outputAsRelation, outputAsRelation, outputBOTName, outputIntoElement, outputIntoElement, storePreparedRelationQueryResult
addKinderRef, getBeschreibung, getBeschreibungNE, getBeschreibungNN, getBeschreibungNN, getKinderRefs, getKinderRefsIterator, getL10nBeschreibungNE, getL10nBeschreibungNN, getL10nBeschreibungNN, getL10nNameNE, getL10nNameNN, getL10nNameNN, getName, getNameNE, getNameNN, getNameNN, needBeschreibung, needL10nBeschreibung, needL10nName, needName, needPopulatedKinderRefs, pgetKinderRefsLazy, removeKinderRef, setBeschreibung, setKinderRefs, setName
addAlsAntwortAnBeiAuftrag, addAlsEmpfaengerBCCBeiAuftrag, addAlsEmpfaengerBeiAuftrag, addAlsEmpfaengerCCBeiAuftrag, addAlsKontextBOBeiAuftrag, addWirdAlsAntwortAnVerwendetBeiAlarm, addWirdBenachrichtigtBCCBeiAlarm, addWirdBenachrichtigtBeiAlarm, addWirdBenachrichtigtCCBeiAlarm, getAlsAntwortAnBeiAuftraegen, getAlsAntwortAnBeiAuftraegenIterator, getAlsEmpfaengerBCCBeiAuftraegen, getAlsEmpfaengerBCCBeiAuftraegenIterator, getAlsEmpfaengerBeiAuftraegen, getAlsEmpfaengerBeiAuftraegenIterator, getAlsEmpfaengerCCBeiAuftraegen, getAlsEmpfaengerCCBeiAuftraegenIterator, getAlsKontextBOBeiAuftraegen, getAlsKontextBOBeiAuftraegenIterator, getWirdAlsAntwortAnVerwendetBeiAlarmen, getWirdAlsAntwortAnVerwendetBeiAlarmenIterator, getWirdBenachrichtigtBCCBeiAlarm, getWirdBenachrichtigtBCCBeiAlarmIterator, getWirdBenachrichtigtBeiAlarm, getWirdBenachrichtigtBeiAlarmIterator, getWirdBenachrichtigtCCBeiAlarm, getWirdBenachrichtigtCCBeiAlarmIterator, needPopulatedAlsAntwortAnBeiAuftraegen, needPopulatedAlsEmpfaengerBCCBeiAuftraegen, needPopulatedAlsEmpfaengerBeiAuftraegen, needPopulatedAlsEmpfaengerCCBeiAuftraegen, needPopulatedAlsKontextBOBeiAuftraegen, needPopulatedWirdAlsAntwortAnVerwendetBeiAlarmen, needPopulatedWirdBenachrichtigtBCCBeiAlarm, needPopulatedWirdBenachrichtigtBeiAlarm, needPopulatedWirdBenachrichtigtCCBeiAlarm, pgetAlsAntwortAnBeiAuftraegenLazy, pgetAlsEmpfaengerBCCBeiAuftraegenLazy, pgetAlsEmpfaengerBeiAuftraegenLazy, pgetAlsEmpfaengerCCBeiAuftraegenLazy, pgetAlsKontextBOBeiAuftraegenLazy, pgetWirdAlsAntwortAnVerwendetBeiAlarmenLazy, pgetWirdBenachrichtigtBCCBeiAlarmLazy, pgetWirdBenachrichtigtBeiAlarmLazy, pgetWirdBenachrichtigtCCBeiAlarmLazy, removeAlsAntwortAnBeiAuftrag, removeAlsEmpfaengerBCCBeiAuftrag, removeAlsEmpfaengerBeiAuftrag, removeAlsEmpfaengerCCBeiAuftrag, removeAlsKontextBOBeiAuftrag, removeWirdAlsAntwortAnVerwendetBeiAlarm, removeWirdBenachrichtigtBCCBeiAlarm, removeWirdBenachrichtigtBeiAlarm, removeWirdBenachrichtigtCCBeiAlarm, setAlsAntwortAnBeiAuftraegen, setAlsEmpfaengerBCCBeiAuftraegen, setAlsEmpfaengerBeiAuftraegen, setAlsEmpfaengerCCBeiAuftraegen, setAlsKontextBOBeiAuftraegen, setWirdAlsAntwortAnVerwendetBeiAlarmen, setWirdBenachrichtigtBCCBeiAlarm, setWirdBenachrichtigtBeiAlarm, setWirdBenachrichtigtCCBeiAlarm
_set, $, $, $, $$, $$bo, $$o, $$r, $$ri, $$ri, acquireTxWriteLock, add, afterSaveOnClient, afterSaveOnServer, afterVerifyOnClient, aggregate, aggregate, aggregate, badge, badge, beforeVerifyOnClient, beforeVerifyOnServer, bumpVersion, cacheLocally, cacheLocally, cacheLocallyAndThrowUnwrappedCause, cacheLocallyAndThrowUnwrappedCause, cacheLocallyAndThrowUnwrappedUncheckedCause, cacheLocallyAndThrowUnwrappedUncheckedCause, cancelCheckConstraints, cancelRecalc, cancelRecalcViaLoadingTransaction, clone, commitTransaction, computeTransientPropertyIfAbsent, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, consumeAndAssureTransientPropertyExists, copyBLOBFrom, createCopy, createCopy, deepClone, deepClone, delete, describe, describe, describe, describe, describe, describe, describe, describe, describe, describe, describeId, describeId, describeId, describeId, describeId, describeId, describeId, describeId, describeNE, describeNE, describeNE, describeNE, describeNE, destub, equalPayload, equalPayload, equalPayload, equalPayload, equals, equalsBO, equalsBO, equalsRegardingAttrs, exportBLOB, exReadString, exWriteString, filterDeleted, filterDeleted, filterDeleted, forgetTransientBLOBHandle, frap, getAsBOInIssueReports, getAsBOInIssueReportsIterator, getAsString, getBackendBOLoaderWithPersistenceHandler, getBadge, getBadge, getBadge2, getBadge3, getBadge4, getBLOB, getBLOB, getBLOB, getBLOB, getBLOB, getBLOBAsDataInput, getBLOBAsEncodedString, getBLOBAsEncodedString, getBLOBAsInputStream, getBLOBAsUTF8EncodedString, getBLOBCreatedBy, getBLOBCreatedOn, getBLOBDeletedBy, getBLOBDeletedOn, getBLOBInfo, getBLOBLastModifiedBy, getBLOBLastModifiedOn, getBOLoader, getBot, getBOVersion, getBytes, getCache, getCache, getCache, getCacheNT, getCacheNT, getCacheNT, getCacheProvider, getCacheProvider, getClazz, getCreatedBy, getCreatedModifiedText, getDefaultScriptImportsList, getDefaultScriptImportsList, getDefaultScriptImportsList, getDescribingBOWrapper, getDescribingBOWrapper, getEventProvider, getEventProvider, getId, getInvolvedInProcs, getInvolvedInProcsIterator, getLastModifiedBy, getLazyData, getLoadingTransaction, getNullIterator, getOrCreate, getOrCreate, getOrCreate, getOrCreate, getOrCreate, getOrCreate, getOrCreate, getPermissionHandler, getProcs, getProcsIterator, getRootLoaderSchema, getSchema, getSizeFast, getTransaction, getTransientProperty, getTransientProperty, getWrappedTransientProperty, hasActiveTransaction, hasBLOB, hasBLOBOnServerSide, hasBOAssignedTempId, hashCode, hasRelationObjects, hasRelationObjects, hasSessionAssignedTempId, hasTempId, hasTempIdForNewBOs, hasTransientProperty, hasTransientPropertyUnfiltered, includeAllowed, includeInTransaction, invalidateBLOBCache, isBOAssignedTempId, isCompoundChangeInProgress, isCurrentTransactionUnderAdminControl, isIgnoreModificationConstraints, isNew, isServerSideAndLoadedReadOnly, isSessionAssignedTempId, isStub, isTempId, isTempIdForNewInstance, isTemporary, isVisible, isWriteable, markCompoundChangeInProgress, markDelete, markUndelete, needLoadingTransaction, needsReload, needTransactionInclusion, newInstance, newInstance, newInstance, newInstance, newInstance, newInstance, nextTempId, notifyMessageBus, notifyMessageBus, notifyMessageBus, notifyMessageBus, notifyMessageBus, notifyMessageBus, notifyMessageBusOfAdd, notifyMessageBusOfRemove, nullSafeCompareTo, nullSafeCompareTo, nullSafeContainsBO, nullSafeContainsBO, nullSafeEquals, nullSafeEqualsBO, nullSafeEqualsBO, ofStub, propertyMissing, propertyMissing, releaseCompoundChangeInProgress, releaseTxWriteLock, remove, removeBLOB, requireNonEmptyRelation, requireNonNullAttribute, requireNonNullAttributes, requireNonNullAttributes, requireNonNullAttributes, requireNonNullAttributes, requireNonNullAttributes, requireNonNullAttributes, requireNonNullAttributes, setAsString, setBadge, setBadge, setBadge2, setBadge3, setBadge4, setBOLoaderNoCascade, setBOLoaderNoCascade, setBot, setId, setId, setIgnoreModificationConstraints, setLazyData, setTempId, setTransientProperty, setTransientProperty, setTransientProperty, setTransientProperty, setTransientProperty, setTransientProperty, slim, slim, storeBLOB, storeBLOB, storeBLOB, storeBLOB, storeBLOB, stub, toMap, toMap, toMap, toMap, toMap, toMap, toMap, toMap, toMap, toMap, toMap, toMap, toRelationMapRO, toRelationMapRO, toRelationMapRO, toRelationMapRO, toRelationMapRO, toRelationMapRO, toRelationMapRO, toRelationMapRO, undelete, wrapIfGroovy
getCrea, getLdel, getLmod, isDeleted, isLdel, setCrea, setLdel, setLdel, setLmod
getInstanceSpecificLocale, getInstanceSpecificPaths, l10n, l10n, l10n, l10n, l10n, l10n, l10n
filterPermittedAddresses, getBeschraenktAufAdresstypen, getPermittedTypesAsString, permitsTypeOf, verifyUniqueMyTISMAdresstyp
bumpVersion, cancelCheckConstraints, consumeAndAssureTransientPropertyExists, contains, equalsBO, equalsBO, getAttribute, getAttribute, getBLOB, getBLOB, getBOVersion, getClazz, getCrea, getEntity, getEntity, getRootLoaderSchema, getSchema, getTransientProperty, hasBLOB, hasTransientProperty, hasTransientPropertyUnfiltered, isDeleted, isNew, isSubEntityOf, isSubEntityOf, isTemporary, isVisible, setTransientProperty, toRelationMapRO
collectIds, collectIds, getCommaSeparatedIdList, getId, toMap, toMap
collectDescribe, collectDescribe, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, conciseDesc, describe, describe, describe, describe, describeAndConciseDesc, describeAndConciseDesc, describeAndConciseDesc, describeAndConciseDesc, describeAndConciseDesc, describeNE, describeNE, join, join, join, notEmptyDescription
public void verifyOnClient(BasicClientContextI _ctx)
verifyOnClient
in interface SaveVetoI
verifyOnClient
in class Alarm
public boolean isReadOnly(AttributeI _attr)
BO
AttributeI
is read-only in the context of this BO
(for the UI and access via the schema).
Please note that the schema-defined, not BO-related read-onlies are taken into account here as well,
i.e. the method will return false if a virtual attribute is marked in the schema as
unless overridden in a subclass. Subclasses may override this method to add their own rules. If no rule exists in the subclass, the decision should always be delegated to super instead of just returning false to avoid inadvertenly breaking the rules defined in super-classes or the schema. You must never change the signature of this method, as subclasses override this and a lot of code would break or need to be adjusted.
isReadOnly
in interface BOI
isReadOnly
in class BO
AttributeI
is read-only in the context of this BO
public boolean isMandatory(AttributeI _attr)
BO
AttributeI
is mandatory in the context of this BO
(for the UI and access via the schema).
Please note that the schema-defined, not BO-related mandatories are taken into account here as well,
i.e. the method will consistently return true if the attribute is marked in the schema as
unless overridden in a subclass. Subclasses may override this method to add their own rules. If no rule exists in the subclass, the decision should always be delegated to super instead of just returning false to avoid inadvertenly breaking the rules defined in super-classes or the schema. You must never change the signature of this method, as subclasses override this and a lot of code would break or need to be adjusted.
isMandatory
in interface BOI
isMandatory
in class Alarm
AttributeI
is mandatory in the context of this BO
public boolean changeMayAffectSchedule(BP _bp)
public java.util.Date getDatumAusloesung()
public java.util.Date getDatumAusloesung(java.util.Date explicitNow)
public void setDatumAusloesung(java.util.Date value)
public java.util.Date getNaechsteAusloesung()
getNaechsteAusloesung
in class de.ipcon.db.core.EinfacherTerminBase
public java.util.Date getNaechsteAusloesung(java.util.Date explicitNow)
public AlarmBenachrichtigungsauftrag action_testNotificationCreationOnly(Transaction tx, AlarmNotificationManager anm) throws Alarm.AlarmDefinitionException
Alarm.AlarmDefinitionException
public boolean trigger(KernelDatabaseSaverI kds, BenachrichtigungsScriptAPI bsapi, java.util.Date dateNow)
public java.lang.String toICalendarString()
public javax.activation.DataSource getDataSource()
getDataSource
in interface de.ipcon.messaging.email.DataSourceConvertibleI
public java.util.Locale getDataSourceLocale()
getDataSourceLocale
in interface de.ipcon.messaging.email.DataSourceConvertibleI
Copyright © 2000-2025 OAshi S.à r.l. All Rights Reserved.