text:
package org.onosproject.store.resource.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Deactivate;
import org.onlab.util.Bandwidth;
import org.onosproject.net.OmsPort;
import org.onosproject.net.device.DeviceService;
import org.slf4j.Logger;
import org.onlab.util.KryoNamespace;
import org.onlab.util.PositionalParameterStringFormatter;
import org.onosproject.net.Link;
import org.onosproject.net.LinkKey;
import org.onosproject.net.Port;
import org.onosproject.net.intent.IntentId;
import org.onosproject.net.link.LinkService;
import org.onosproject.net.resource.link.BandwidthResource;
import org.onosproject.net.resource.link.BandwidthResourceAllocation;
import org.onosproject.net.resource.link.LambdaResource;
import org.onosproject.net.resource.link.LambdaResourceAllocation;
import org.onosproject.net.resource.link.LinkResourceAllocations;
import org.onosproject.net.resource.link.LinkResourceEvent;
import org.onosproject.net.resource.link.LinkResourceStore;
import org.onosproject.net.resource.link.LinkResourceStoreDelegate;
import org.onosproject.net.resource.link.MplsLabel;
import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
import org.onosproject.net.resource.ResourceAllocation;
import org.onosproject.net.resource.ResourceAllocationException;
import org.onosproject.net.resource.ResourceType;
import org.onosproject.store.AbstractStore;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.ConsistentMap;
import org.onosproject.store.service.Serializer;
import org.onosproject.store.service.StorageService;
import org.onosproject.store.service.TransactionContext;
import org.onosproject.store.service.TransactionException;
import org.onosproject.store.service.TransactionalMap;
import org.onosproject.store.service.Versioned;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import static org.slf4j.LoggerFactory.getLogger;
import static org.onosproject.net.AnnotationKeys.BANDWIDTH;

/**
 * Store that manages link resources using Copycat-backed TransactionalMaps.
 */
@Component(immediate = true, enabled = true)
@Service
public class ConsistentLinkResourceStore extends
        AbstractStore<LinkResourceEvent, LinkResourceStoreDelegate> implements
        LinkResourceStore {

    private final Logger log = getLogger(getClass());

    private static final BandwidthResource DEFAULT_BANDWIDTH = new BandwidthResource(Bandwidth.mbps(1_000));
    private static final BandwidthResource EMPTY_BW = new BandwidthResource(Bandwidth.bps(0));

    // Smallest non-reserved MPLS label
    private static final int MIN_UNRESERVED_LABEL = 0x10;
    // Max non-reserved MPLS label = 239
    private static final int MAX_UNRESERVED_LABEL = 0xEF;

    // table to store current allocations
    /** LinkKey -> List<LinkResourceAllocations>. */
    private static final String LINK_RESOURCE_ALLOCATIONS = "LinkAllocations";

    /** IntentId -> LinkResourceAllocations. */
    private static final String INTENT_ALLOCATIONS = "LinkIntentAllocations";

    private static final Serializer SERIALIZER = Serializer.using(
            new KryoNamespace.Builder().register(KryoNamespaces.API).build());

    // for reading committed values.
    private ConsistentMap<IntentId, LinkResourceAllocations> intentAllocMap;

    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
    protected StorageService storageService;

    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
    protected LinkService linkService;

    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
    protected DeviceService deviceService;

    @Activate
    public void activate() {
        intentAllocMap = storageService.<IntentId, LinkResourceAllocations>consistentMapBuilder()
                .withName(INTENT_ALLOCATIONS)
                .withSerializer(SERIALIZER)
                .build();
        log.info("Started");
    }

    @Deactivate
    public void deactivate() {
        log.info("Stopped");
    }

    private TransactionalMap<IntentId, LinkResourceAllocations> getIntentAllocs(TransactionContext tx) {
        return tx.getTransactionalMap(INTENT_ALLOCATIONS, SERIALIZER);
    }

    private TransactionalMap<LinkKey, List<LinkResourceAllocations>> getLinkAllocs(TransactionContext tx) {
        return tx.getTransactionalMap(LINK_RESOURCE_ALLOCATIONS, SERIALIZER);
    }

    private TransactionContext getTxContext() {
        return storageService.transactionContextBuilder().build();
    }

    private Set<? extends ResourceAllocation> getResourceCapacity(ResourceType type, Link link) {
        if (type == ResourceType.BANDWIDTH) {
            return ImmutableSet.of(getBandwidthResourceCapacity(link));
        }
        if (type == ResourceType.LAMBDA) {
            return getLambdaResourceCapacity(link);
        }
        if (type == ResourceType.MPLS_LABEL) {
            return getMplsResourceCapacity();
        }
        return ImmutableSet.of();
    }

    private Set<LambdaResourceAllocation> getLambdaResourceCapacity(Link link) {
        Set<LambdaResourceAllocation> allocations = new HashSet<>();
        Port port = deviceService.getPort(link.src().deviceId(), link.src().port());
        if (port instanceof OmsPort) {
            OmsPort omsPort = (OmsPort) port;

            // Assume fixed grid for now
            for (int i = 0; i < omsPort.totalChannels(); i++) {
                allocations.add(new LambdaResourceAllocation(LambdaResource.valueOf(i)));
            }
        }
        return allocations;
    }

    private BandwidthResourceAllocation getBandwidthResourceCapacity(Link link) {

        // if Link annotation exist, use them
        // if all fails, use DEFAULT_BANDWIDTH
        BandwidthResource bandwidth = null;
        String strBw = link.annotations().value(BANDWIDTH);
        if (strBw != null) {
            try {
                bandwidth = new BandwidthResource(Bandwidth.mbps(Double.parseDouble(strBw)));
            } catch (NumberFormatException e) {
                // do nothings
                bandwidth = null;
            }
        }

        if (bandwidth == null) {
            // fall back, use fixed default
            bandwidth = DEFAULT_BANDWIDTH;
        }
        return new BandwidthResourceAllocation(bandwidth);
    }

    private Set<MplsLabelResourceAllocation> getMplsResourceCapacity() {
        Set<MplsLabelResourceAllocation> allocations = new HashSet<>();
        //Ignoring reserved labels of 0 through 15
        for (int i = MIN_UNRESERVED_LABEL; i <= MAX_UNRESERVED_LABEL; i++) {
            allocations.add(new MplsLabelResourceAllocation(MplsLabel
                    .valueOf(i)));

        }
        return allocations;
    }

    private Map<ResourceType, Set<? extends ResourceAllocation>> getResourceCapacity(Link link) {
        Map<ResourceType, Set<? extends ResourceAllocation>> caps = new HashMap<>();
        for (ResourceType type : ResourceType.values()) {
            Set<? extends ResourceAllocation> cap = getResourceCapacity(type, link);
            if (cap != null) {
                caps.put(type, cap);
            }
        }
        return caps;
    }

    @Override
    public Set<ResourceAllocation> getFreeResources(Link link) {
        TransactionContext tx = getTxContext();

        tx.begin();
        try {
            Map<ResourceType, Set<? extends ResourceAllocation>> freeResources = getFreeResourcesEx(tx, link);
            Set<ResourceAllocation> allFree = new HashSet<>();
            freeResources.values().forEach(allFree::addAll);
            return allFree;
        } finally {
            tx.abort();
        }
    }

    private Map<ResourceType, Set<? extends ResourceAllocation>> getFreeResourcesEx(TransactionContext tx, Link link) {
        checkNotNull(tx);
        checkNotNull(link);

        Map<ResourceType, Set<? extends ResourceAllocation>> free = new HashMap<>();
        final Map<ResourceType, Set<? extends ResourceAllocation>> caps = getResourceCapacity(link);
        final Iterable<LinkResourceAllocations> allocations = getAllocations(tx, link);

        for (ResourceType type : ResourceType.values()) {
            // there should be class/category of resources

            switch (type) {
                case BANDWIDTH:
                    Set<? extends ResourceAllocation> bw = caps.get(type);
                    if (bw == null || bw.isEmpty()) {
                        bw = Sets.newHashSet(new BandwidthResourceAllocation(EMPTY_BW));
                    }

                    BandwidthResourceAllocation cap = (BandwidthResourceAllocation) bw.iterator().next();
                    double freeBw = cap.bandwidth().toDouble();

                    // enumerate current allocations, subtracting resources
                    for (LinkResourceAllocations alloc : allocations) {
                        Set<ResourceAllocation> types = alloc.getResourceAllocation(link);
                        for (ResourceAllocation a : types) {
                            if (a instanceof BandwidthResourceAllocation) {
                                BandwidthResourceAllocation bwA = (BandwidthResourceAllocation) a;
                                freeBw -= bwA.bandwidth().toDouble();
                            }
                        }
                    }

                    free.put(type, Sets.newHashSet(
                            new BandwidthResourceAllocation(new BandwidthResource(Bandwidth.bps(freeBw)))));
                    break;
                case LAMBDA:
                    Set<? extends ResourceAllocation> lmd = caps.get(type);
                    if (lmd == null || lmd.isEmpty()) {
                        // nothing left
                        break;
                    }
                    Set<LambdaResourceAllocation> freeL = new HashSet<>();
                    for (ResourceAllocation r : lmd) {
                        if (r instanceof LambdaResourceAllocation) {
                            freeL.add((LambdaResourceAllocation) r);
                        }
                    }

                    // enumerate current allocations, removing resources
                    for (LinkResourceAllocations alloc : allocations) {
                        Set<ResourceAllocation> types = alloc.getResourceAllocation(link);
                        for (ResourceAllocation a : types) {
                            if (a instanceof LambdaResourceAllocation) {
                                freeL.remove(a);
                            }
                        }
                    }

                    free.put(type, freeL);
                    break;
                case MPLS_LABEL:
                    Set<? extends ResourceAllocation> mpls = caps.get(type);
                    if (mpls == null || mpls.isEmpty()) {
                        // nothing left
                        break;
                    }
                    Set<MplsLabelResourceAllocation> freeLabel = new HashSet<>();
                    for (ResourceAllocation r : mpls) {
                        if (r instanceof MplsLabelResourceAllocation) {
                            freeLabel.add((MplsLabelResourceAllocation) r);
                        }
                    }

                    // enumerate current allocations, removing resources
                    for (LinkResourceAllocations alloc : allocations) {
                        Set<ResourceAllocation> types = alloc.getResourceAllocation(link);
                        for (ResourceAllocation a : types) {
                            if (a instanceof MplsLabelResourceAllocation) {
                                freeLabel.remove(a);
                            }
                        }
                    }

                    free.put(type, freeLabel);
                    break;
                default:
                    log.debug("unsupported ResourceType {}", type);
                    break;
            }
        }
        return free;
    }

    @Override
    public void allocateResources(LinkResourceAllocations allocations) {
        checkNotNull(allocations);
        TransactionContext tx = getTxContext();

        tx.begin();
        try {
            TransactionalMap<IntentId, LinkResourceAllocations> intentAllocs = getIntentAllocs(tx);
            intentAllocs.put(allocations.intentId(), allocations);
            allocations.links().forEach(link -> allocateLinkResource(tx, link, allocations));
            tx.commit();
        } catch (Exception e) {
            log.error("Exception thrown, rolling back", e);
            tx.abort();
            throw e;
        }
    }

    private void allocateLinkResource(TransactionContext tx, Link link,
            LinkResourceAllocations allocations) {
        // requested resources
        Set<ResourceAllocation> reqs = allocations.getResourceAllocation(link);
        Map<ResourceType, Set<? extends ResourceAllocation>> available = getFreeResourcesEx(tx, link);
        for (ResourceAllocation req : reqs) {
            Set<? extends ResourceAllocation> avail = available.get(req.type());
            if (req instanceof BandwidthResourceAllocation) {
                // check if allocation should be accepted
                if (avail.isEmpty()) {
                    checkState(!avail.isEmpty(),
                               "There's no Bandwidth resource on %s?",
                               link);
                }
                BandwidthResourceAllocation bw = (BandwidthResourceAllocation) avail.iterator().next();
                double bwLeft = bw.bandwidth().toDouble();
                BandwidthResourceAllocation bwReq = ((BandwidthResourceAllocation) req);
                bwLeft -= bwReq.bandwidth().toDouble();
                if (bwLeft < 0) {
                    throw new ResourceAllocationException(
                            PositionalParameterStringFormatter.format(
                                    "Unable to allocate bandwidth for link {} "
                                        + " requested amount is {} current allocation is {}",
                                    link,
                                    bwReq.bandwidth().toDouble(),
                                    bw));
                }
            } else if (req instanceof LambdaResourceAllocation) {
                LambdaResourceAllocation lambdaAllocation = (LambdaResourceAllocation) req;
                // check if allocation should be accepted
                if (!avail.contains(req)) {
                    // requested lambda was not available
                    throw new ResourceAllocationException(
                            PositionalParameterStringFormatter.format(
                                "Unable to allocate lambda for link {} lambda is {}",
                                    link,
                                    lambdaAllocation.lambda().toInt()));
                }
            } else if (req instanceof MplsLabelResourceAllocation) {
                MplsLabelResourceAllocation mplsAllocation = (MplsLabelResourceAllocation) req;
                if (!avail.contains(req)) {
                    throw new ResourceAllocationException(
                                                          PositionalParameterStringFormatter
                                                                  .format("Unable to allocate MPLS label for link "
                                                                          + "{} MPLS label is {}",
                                                                          link,
                                                                          mplsAllocation
                                                                                .mplsLabel()
                                                                                .toString()));
                }
            }
        }
        // all requests allocatable => add allocation
        final LinkKey linkKey = LinkKey.linkKey(link);
        TransactionalMap<LinkKey, List<LinkResourceAllocations>> linkAllocs = getLinkAllocs(tx);
        List<LinkResourceAllocations> before = linkAllocs.get(linkKey);
        if (before == null) {
            List<LinkResourceAllocations> after = new ArrayList<>();
            after.add(allocations);
            before = linkAllocs.putIfAbsent(linkKey, after);
            if (before != null) {
                // concurrent allocation detected, retry transaction : is this needed?
                log.warn("Concurrent Allocation, retrying");
                throw new TransactionException();
            }
        } else {
            List<LinkResourceAllocations> after = new ArrayList<>(before.size() + 1);
            after.addAll(before);
            after.add(allocations);
            linkAllocs.replace(linkKey, before, after);
        }
    }

    @Override
    public LinkResourceEvent releaseResources(LinkResourceAllocations allocations) {
        checkNotNull(allocations);

        final IntentId intentId = allocations.intentId();
        final Collection<Link> links = allocations.links();
        boolean success = false;
        do {
            TransactionContext tx = getTxContext();
            tx.begin();
            try {
                TransactionalMap<IntentId, LinkResourceAllocations> intentAllocs = getIntentAllocs(tx);
                intentAllocs.remove(intentId);

                TransactionalMap<LinkKey, List<LinkResourceAllocations>> linkAllocs = getLinkAllocs(tx);
                links.forEach(link -> {
                    final LinkKey linkId = LinkKey.linkKey(link);

                    List<LinkResourceAllocations> before = linkAllocs.get(linkId);
                    if (before == null || before.isEmpty()) {
                        // something is wrong, but it is already freed
                        log.warn("There was no resource left to release on {}", linkId);
                        return;
                    }
                    List<LinkResourceAllocations> after = new ArrayList<>(before);
                    after.remove(allocations);
                    linkAllocs.replace(linkId, before, after);
                });
                tx.commit();
                success = true;
            } catch (TransactionException e) {
                log.debug("Transaction failed, retrying", e);
                tx.abort();
            } catch (Exception e) {
                log.error("Exception thrown during releaseResource {}", allocations, e);
                tx.abort();
                throw e;
            }
        } while (!success);

        // Issue events to force recompilation of intents.
        final List<LinkResourceAllocations> releasedResources = ImmutableList.of(allocations);
        return new LinkResourceEvent(
                LinkResourceEvent.Type.ADDITIONAL_RESOURCES_AVAILABLE,
                releasedResources);

    }

    @Override
    public LinkResourceAllocations getAllocations(IntentId intentId) {
        checkNotNull(intentId);
        Versioned<LinkResourceAllocations> alloc = null;
        try {
            alloc = intentAllocMap.get(intentId);
        } catch (Exception e) {
            log.warn("Could not read resource allocation information", e);
        }
        return alloc == null ? null : alloc.value();
    }

    @Override
    public Iterable<LinkResourceAllocations> getAllocations(Link link) {
        checkNotNull(link);
        TransactionContext tx = getTxContext();
        Iterable<LinkResourceAllocations> res = null;
        tx.begin();
        try {
            res = getAllocations(tx, link);
        } finally {
            tx.abort();
        }
        return res == null ? Collections.emptyList() : res;
    }

    @Override
    public Iterable<LinkResourceAllocations> getAllocations() {
        try {
            Set<LinkResourceAllocations> allocs =
                    intentAllocMap.values().stream().map(Versioned::value).collect(Collectors.toSet());
            return ImmutableSet.copyOf(allocs);
        } catch (Exception e) {
            log.warn("Could not read resource allocation information", e);
        }
        return ImmutableSet.of();
    }

    private Iterable<LinkResourceAllocations> getAllocations(TransactionContext tx, Link link) {
        checkNotNull(tx);
        checkNotNull(link);
        final LinkKey key = LinkKey.linkKey(link);
        TransactionalMap<LinkKey, List<LinkResourceAllocations>> linkAllocs = getLinkAllocs(tx);
        List<LinkResourceAllocations> res = null;

        res = linkAllocs.get(key);
        if (res == null) {
            res = linkAllocs.putIfAbsent(key, new ArrayList<>());

            if (res == null) {
                return Collections.emptyList();
            } else {
                return res;
            }
        }
        return res;
    }

}

redpajama_set_name: RedPajamaGithub


text:
I work with computers where to buy prednisolone acetate Product recalls have been ordered in nine countries,including New Zealand, China, and Thailand. Russian media onThursday continued to report that it had placed an import ban onall Fonterra dairy products although that was denied bygovernment officials in Wellington.

Автор: Cristobal
I like watching TV cheapest price for generic viagra Now at Playwrights Horizons, the show was first commissioned by the Civilians, a troupe known for investigative theater. Steve Cosson, who heads the company, directs a terrific ensemble and evocative production, which includes original music by Michael Friedman.

Автор: Mackenzie
I'm afraid that number's ex-directory my serovital.com reviews If someone is blocking your right of access ( over someone else's land, for example) then this would be a nuisance, subject to the severity of the interference. In this scenario, it is wise to document the interferences with diary entries and, if possible, dated photographic evidence. For further advice, speak to a lawyer or expert, particularly if you feel compelled to go to court.

Sorry, I'm busy at the moment cialis prix de la boite Sanofi said in August that one of its 11 regional offices in China had been visited by the State Administration for Industry and Commerce (SAIC) in Shenyang, but added it was not aware of the purpose of the visit from the agency.

Автор: Shawn
Have you got a current driving licence? 10mg paxil reviews When people try to enroll in health insurance starting onOct. 1 for insurance plans taking effect in 2014, theiridentity, income and other information they furnish with theirapplication will be funneled through a federal "data hub."

Автор: Adolfo
I live in London levonorgestrel price australia

 Roy Lichtenstein's "Seductive Girl" is estimated between 22 and 28 million dollars, and Alberto Giacametti's "Diego en chemise écossaise" is also poised to set a new world record.

Автор: Merlin
Lost credit card non-prescription propranolol Usagi, which has been labeled a super typhoon, made landfall on Itbayat, the Philippine island closest to Taiwan, toppling communication and power lines, uprooting trees, causing landslides and flooding rice and garlic farms.

Автор: Douglass
I'd like some euros buy generic lipitor canada Jordan Zimmermann (12-6), who allowed seven runs in a career-low two innings Sunday in a 9-2 loss to the Dodgers, needed 118 pitches to go 6 2-3 innings. He allowed five earned runs and six hits in picking up his third straight loss.

Автор: Dwain
How do I get an outside line? non prescription viagra in canada More selective prosecutions for the wealthy in the United States. The pedophile doctor trafficking immigrant orphans for child porn in Massachusetts is getting a plea deal because over half his clients are political contributors to the current administration.

Автор: Reuben
I'd like to open a business account where can i buy finasteride uk

 The boat, carrying around 500 mainly Eritrean and Somali migrants, caught fire, capsized and sank, throwing hundreds into the water. Many could not swim and survivors spoke of being in waters thick with fuel oil that spilled from the wreck. Only 155 survivors were rescued.

Автор: Jeffery

redpajama_set_name: RedPajamaCommonCrawl


The 85x200cm Roll-up system is the most popular exhibition not only in Poland, but also in the world. His primary and most characteristic feature is the high mobility.
Large stand dimensions translate into marketing power, which is appreciated by the company with an established position in the market, as well as small, only growing enterprises.
The Roll-up 100x200cm, 85x200cm next dimension is the most popular exhibition system, not only in Poland, but also in the world. His primary and most characteristic feature is the high mobility.
The Roll-up Mini. A3 and A4 wystwienninczy most popular system in the mini size. His primary and most characteristic feature is the possibility of exposure to small areas such as on a desk, on a shelf. Aesthetic element of decorating the office.
Aluminum frame, anodised 25 mm profile.
Large stand dimensions translate into marketing power, which is appreciated by the company with an established position in the market, as well as small.
EXCLUSIVE Roll-up is designed for companies that greatly appreciate quality used their marketing tools.
The Roll-up 150x200cm is a relatively large and very popular exhibition system, not only in Poland but also in the world. His primary and most characteristic feature is the high mobility.
X-Banner is a lightweight system for large format graphics, a distinctive X-shaped structure is a simple product ideally suited for presentation directly at points of sale, such as shopping malls, stores, etc.
Roll up to a product that perfectly suitable for all kinds of presentations, conferences and exhibitions, where you put the graphic promotional message is sure to hit your potential customers.
Tribune conference is the perfect complement to the exhibition stand as well as a separate element of advertising. The foldable design allows for easy transport and a short time to prepare trybunki to work (submission).


Our next meeting will be Monday, May 21st at 7:30pm. We'll be reading and discussing Moonglow by Michael Chabon. Molly will bring our next book suggestions and a snack. Our June book will be Mary Poppins by P.L. Travers.
By P.L. Travers, the author featured in the major motion picture, Saving Mr. Banks. From the moment Mary Poppins arrives at Number Seventeen Cherry-Tree Lane, everyday life at the Banks house is forever changed. It all starts when Mary Poppins is blown by the east wind onto the doorstep of the Banks house. She becomes a most unusual nanny to Jane, Michael, and the twins. Who else but Mary Poppins can slide up banisters, pull an entire armchair out of an empty carpetbag, and make a dose of medicine taste like delicious lime-juice cordial? A day with Mary Poppins is a day of magic and make-believe come to life!


SADDLE BROOK, N.J., July 15, 2013 /PRNewswire-iReach/ -- Ticket Utils, creators of RocketPoster, the widely used eBay ticket broker ecommerce solution and the leading provider of ticket broker software, today announced the introduction of Adaptive Display Technology (ADT) for their industry leading interactive seating charts. Ticket Utils' Interactive Seating Charts provide ticket brokers, ticket exchanges and any ecommerce site selling tickets with detailed, clickable seating charts that display available tickets by section.
ADT automatically adjusts the size of the interactive seating chart to the end users screen resolution, while still being fully compatible with iPhone, iPad and Android devices. ADT provides screen resolution support ranging from 300x300 to 2000x2000 pixels.
"The new version of our Interactive Seating Charts provides true native mobile support which offers the best experience for clients on mobile devices," says , President of Ticket Utils."Our Adaptive Display Technology is a major leap forward in interactive seating chart technology that introduces support to a whole new array of mobile and tablet devices."
The Ticket Utils' seating charts catalog is one of the largest and most diverse in the industry with coverage of 3,000 U.S. and International venues and over 7,500 custom seating chart configurations. The product is further enriched with an innovative "Section Views" feature allowing ticket buyers to experience a photo realistic representation view from their selected seats.
The Ticket Utils' Interactive Seating Charts are being used by over 200 ecommerce sites and commercial application. The Interactive Seating Charts with Section Views are proven to help increase conversion rates by creating a 'stickiness' with the ticket buyer consumer. This has resulted in a near 100% retention rate of license renewals, with continued strong demand of new licensee signups. ADP is a major leap forward in interactive seating chart technology, and with this new technology, we expect to further accelerate our growth.
For more information about Interactive Seating Charts and other Ticket Utils products, go to http://www.TicketUtils.com, email Sales@TicketUtils.com or call 201-556-9090.


All parts above the hanger is provided by Ellard.
Radar Sensor 24 ghz (Activation only sensor) Normally 1 inside, 1 outside of the door. As a person walks towards the door, sensor picks them up, door will open.
Optex Dual Action Sensor (Activation and Safety Sensor) Again normally 1 inside and 1 outside of the door. This sensor acts as the above but with an additional safety sensor.
Optex Side Action Sensor (Safety only) This is normally fitted on the side of the door where there are entrapment points. Safety Sensors are fitted on the end of the doors for entrapment points.
Battery Back Up for Auto Doors – for use in case of power failure.


text:
A review of interactions between dietary fibre and the intestinal mucosa, and their consequences on digestive health in young non-ruminant animals
Montagne, L., Pluske, J.R. ORCID: 0000-0002-7194-2164 and Hampson, D.J. (2003) A review of interactions between dietary fibre and the intestinal mucosa, and their consequences on digestive health in young non-ruminant animals. Animal Feed Science and Technology, 108 (1-4). pp. 95-117.
Link to Published Version: http://dx.doi.org/10.1016/S0377-8401(03)00163-9
The maintenance of gut health is complex and relies on a delicate balance between the diet, the commensal microflora and the mucosa, including the digestive epithelium and the overlying mucus layer. Superimposed on this balance is the frequent presence of enteric bacteria with pathogenic potential, the proliferation and metabolic activity of which may perturb digestive function, and lead to diarrhoea, poor growth rates and even death. Such enteric infections with pathogenic bacteria are common in young animals and children. Diet has an important influence on gut health, including effects on proliferation of pathogenic bacteria, and it can provide either beneficial or harmful input. Dietary fibre (DF) is a dietary component that has a major influence in this regard. DF is a heterogeneous class of components that are not hydrolysed by digestive enzymes of non-ruminant animals, and consequently are the main substrates for bacterial fermentation in the distal part of the gut. This review presents evidence that some components of dietary fibre may improve gut health, or alternatively enhance gut perturbation and subsequent diarrhoea in young animals (including piglets, chickens and children). This review reports and discusses how DF interacts with the gut epithelium and mucus, directly or by the way of the microflora, and consequently can protect against or enhance enteric infections.
School of Veterinary and Biomedical Sciences
© 2003 Elsevier Science B.V.


text:
Enderra
World-Building and Role-Playing
Arnâron
Shattered Grounds
Thraeton
Voyagers 2
Monsters Archive
Plot-a-Day Archive
Shakespeare & Dragons Podcast
World Building Links
Worlds on the Web
NaNoWriMo in 12h
2008-10-31 NaNoWriMoFiction, NaNoWriMo, NaNoWriMo 2008, Novel, WritingNils
NaNoWriMo begins in less than 12 hours. I spent much of last night working on my outline and character designs, and I'll post more about that at a later time. I'll definitely hit the supermarket tonight, for enough supplies for the weekend; this will even include some soda so as to keep myself awake at night. The minimum per day is 1667 words, but the more I get done this weekend, the better.
I'm definitely – no, nervous is not the right word – anxious to get NaNoWriMo done. 50k words; 30 days; why the hell did I get myself into this? 🙂
2008-10-31 ArtArt, Halloween, Inkscape, Jack-o-LanternNils
Quick Inkscape drawing appropriate to the season:
Jack o' Lantern
Happy Halloween, everybody.
NaNoWriMo Music Playlist
2008-10-30 FIXME, NaNoWriMoMusic, NaNoWriMo, NaNoWriMo 2008, WritingNils
I work either in complete silence, or I create a play list with music appropriate for whatever I am working on. This was true in the 1980s and 1990s when I did a lot of coding, it is still true for my world building, and it will hold true for writing novels.
For my NaNoWriMo project, the playlist is currently this:
Let it whip by The Dazz Band
Earth Died Screaming by Tom Waits
Where Evil Grows by The Poppy Family
Cities in Dust by Siouxsie & The Banshees
Control by Traci Lords
Love Removal Machine by The Cult
Burn by Sister Machine Gun
Baby Did A Bad Thing by Chris Isaak
Masked Ball by Jocelyn Pook
When Worlds Divide by The Clutters
Clash City Girl also by The Clutters
Black is The Night (Code RMX) by Code
Go! by Tones to Tail
iam the sun by auto-auto
Great Balls of Fire by Buddy Holly
Cock the Hammer by Cypress Hill
Last Action Hero by Tesla
Mass Destruction (Single Mix) by Faithless
Oops Oh My by Tweet
Edge of Reality by Elvis Presley
Bitch by the Rolling Stones
Hammer to Fall by Queen
Gimme The Prize also by Queen
Armageddeon Time by The Clash
NYc's like a Graveyard by the Moldy Peaches
Needless to say, not all of these have a direct relation to the story. Some do. The selection is as much intended to just keep me focused on fast writing as it is on putting me in the right mood.
Once I am done with the novel, it may be fun to point out what parts of it I thought about when I picked the music. Of all the things that distinguishes movies from novels I think having a sound track is probably the greatest advantage for movies, and the least appreciated by the average consumer.
Anyway. Eta 36 hours.
Nils-on-Twitter
2008-10-30 Site NewsTwitterNils
I am now on Twitter.
The Revised CD-Cover Game
2008-10-30 ArtArt, CD Cover, Game, Meme, MusicNils
Here are the revised rules to the CD-Cover game. I found it originally on Pedro's blog, but I had to change them slightly. If anybody else wants to play, let me know – I'd love to see your creations!
1. Go to the Wikipedia random article page (en.wikipedia.org/wiki/Special:Random). The title of the article is your band name. (For a twist, use the Special:Random page of an alternate language version of Wikipedia.)
1. Go to the very last quote on random quotations (www.quotationspage.com/random.php3). The last four words of the last quote are your album title. You may opt to use only three words, if that improves the quote. (For example, I got the quote "To sway an audience, you must watch them as you speak.", by C. Kent Wright. "Them as you speak" sounds pretty stupid. "As you speak" makes for a much better album title!) You are not allowed to use more than four or less than three words, and you may not change any of them.
1. Go to Flickr's "interesting photos from the last seven days" page (www.flickr.com/explore/interesting/7days/). Use the first photo that allows you to legally use and modify it ("All rights reserved" is out!). You may have to reload this page multiple times.
Flickr does provide a page that filters for a Creative Commons license (www.flickr.com/creativecommons/), but for our purpose this isn't very useful: There is little randomness, and the photos include completely useless ones like photos of text. The method in rule#3 is much better, even if it takes a while to find a photo under an appropriate license.
My covers so far:
CD Cover Game #1: Silver Creek Township
CD Cover Game #2: Duke of Bourbon
CD Cover Game #3: Genesis Group
You'll find new covers under the CD Covers tag.
Plot-a-Day: Ghost Baby
2008-10-29 Plot-a-DayGhost, Inspiration, Plot, Plot-a-Day, Role-playing, RPG, Science, SupernaturalNils
Here's another idea for a plot which would work great for both fiction and RPG sessions.
Michael Persinger, a Neuroscientist, investigated a case in which a teenager reported that she received nocturnal visits from ghosts. The scientists were called in at the request of the mother, and determined that a clock close to the girl's head combined with a mild brain injury she had received as a baby caused the hallucinations. The clocks was removed, and the "visitations" stopped.
The article in the Scientific American goes into greater detail, especially on follow-up experiments designed to determine scientific causes for sightings of the "supernatural", including experiments to test whether a person who wants to see a ghost is more susceptible to such causes and thus more likely to "see" a ghost.
This would work well in a setting in two ways; you can either take the "ghost baby" story and turn it into an investigation (and, since an electric clock is probably very anticlimactic, you may wish to use the devil / evil spirits / space aliens as the cause), or you could take the scientific experiments in general to kick-start a campaign. The investigators either come to delve into the "true supernatural" (Ghostbusters did it, why not you?) as a consequence of their inquiries or they uncover pranksters or frauds who may even be making a great deal of money off of the unsuspecting. The later works especially well if your players actually do expect ghosts.
NaNoWriMo ETA 3 Days
2008-10-28 NaNoWriMoFiction, Inner Critic, NaNoWriMo, NaNoWriMo 2008, Novel, Outlining, Science Fiction, WritingNils
NaNoWriMo 2008 is almost upon us and I am starting to wonder what the hell I got myself into. Will I really manage to write 1667 words on average each and every day in November? Well we will surely find out… It'll be interesting, as I am having trouble being creative the last few days, for various reasons that shan't be discussed on the blog.
Back when I was a teenager, I used to actually write. A lot. Unfortunately twenty years and several problems with my computers mean that I have almost nothing left from those days. Even so, I don't need to read it again to know that it was pretty much garbage. The difference is that today I recognize the drivel when I put it in a file, and I automatically try to rework it as I do so.
NaNoWriMo forces me to stop doing that. If I don't, I'll never complete 50k words. As I spend many hours outlining, I still think "this is nonsense, this wouldn't happen, this is bad". But then, after torturing myself for some time over the last three bullet points, I finally tell myself: "It doesn't have to be good, that is what revisions are for, it just has to get done."
I had never imagined just how difficult it is to deal with that inner critic. It's a great lesson, though. After all, isn't the inner critic also what keeps us from taking chances in other situations?
"Oh, I shouldn't apply for that job. I doubt I could make it." And maybe miss out on a good job.
"I shouldn't talk to that stranger, even though there is a reason to do so. I shouldn't bother him." And maybe miss out on an interesting conversation or possibly even a new friend.
"I shouldn't bother approaching that girl, she's way out my league." And maybe miss out on, hey, a whole lot.
I am not saying taking part in NaNoWriMo will make me bother strangers, women, and potential employers afterwards, but in my opinion everything that lets you look at yourself and think about how you deal with the world is a fairly good thing.
As a bonus, I may call myself an "unpublished writer" afterwards.
Now… if you'll excuse me, I have half a novel to outline, and three and a half days to do it.
Sci-Fi Teaser
2008-10-23 NaNoWriMoApocalypse, Armageddon, Evil Writer, NaNoWriMo, NaNoWriMo 2008, Post-Apocalyptic, Science Fiction, Teaser, Worldbuilding, WritingNils
Alex posted a science fiction teaser in what looks like it could be one of those Internet memes, except this one is of course for writers and would-be writers.
Since I am not a writer, not really anyway, and I don't have any completed works to tease from, I decided to create a teaser from scratch. It is about a new setting I am working on and that I may explore in my NaNoWriMo novel instead of what I had originally intended. (It is really an extension of the same theme rather than something completely new, sometimes those ideas that pop up in my mind happen to complement each other rather than compete for attention.)
The atmosphere in the shelter was a mix of tense anticipation and quiet resignation. Some occupants stoically awaited their fate, others whimpered or cried. Luckily nobody had panicked – yet. I kept to myself, sitting on a chair staring at the heavy blast door, wondering what I would experience had I been on the other side.
The radio played music that was decades out of date. It sounded like an automatic transmission that had been designed decades ago during the height of the cold war. There had been no messages after the initial emergency broadcast. Somehow the absence of any human announcer was much spookier than news of the world's destruction could possibly have been. At least it meant that there was still a radio station, somewhere out there, that had not yet been hit.
Max, the shelter's owner, kept things organized. He talked to people, introduced himself to those he didn't know – most of those in the shelter, including me. Max was an older man, at least fifty, and his graying hair and beard gave him a bit of a grandfatherly appearance. He smiled and talked in a calm voice. I don't know how he managed to be so serene, but then again he was the one who had had the foresight to build a bomb shelter. Even a few hours ago people probably thought of him as "one of those survivalist nuts" and while I am sure he was as devastated as everybody else, a small part of him may have been gleeful that he had been right after all. A kind of Noah, except Max had not hesitated to rescue strangers.
"You doing alright," a woman to my left asked. I turned around startled. I had been so lost in my thoughts that I had not even noticed that she had pulled up a chair and sat down. She, too, looked straight at the blast door as I had done, imitating me. I studied her for a moment. Dark hair, dark eyes, dark skin. Pretty.
I looked back at the door.
"All things considered." It sounded not quite as positive as I had hoped.
For a moment neither of us spoke.
"Listen," she broke the silence. "I am helping Max by making a list of everybody here, so we know who's who, what jobs they have, and any medical conditions we should know about. Would you please tell me about yourself?"
I couldn't help but smile because of the unexpected attention. Under other circumstances…
"Sure. Name's John Sanders. I… don't have a job right now." There seemed to be no reason to tell her about my recent legal troubles. It didn't concern anybody in the shelter, and quite honestly, how could a little theft matter now?
"But what is your training? Maybe we must rely on your skills at some point."
"I see." I hadn't thought her question through. There was too much on my mind. "I am a programmer. Not much help after the EMP fries every bit of electronics out there, I am afraid. Had first aid training, but that was a long, long time ago."
I turned again, this time to find her looking at me. Yes, she was beautiful.
"I have two hands," I shrugged. "Tell me how I can help, and I will. I can carry things, cook without poisoning us, and clean the bathroom. Whatever."
She made some notes on her clipboard while I spoke.
"Thanks," she said and stood up.
"Could I ask you something?"
"Artemis."
I didn't have a chance to follow up on that. The radio stopped playing that very moment. Then the lights went out, except for the reddish emergency lighting.
Two minutes later a pattern of tiny cracks in the walls began to glow a brilliant blue.
I am not sure I am eligible to join the evil writers' club just yet but were I a writer, that is something I'd strive for.
We get better at what we do with lots of practice so feedback is, as always, appreciated – this explicitly includes corrections on spelling and grammar, as I am not a native English speaker.
CreativeCommons Video
2008-10-15 Site NewsCopyright, Creative Commons, Licensing, Sharing, Worldbuilding, WritingNils
Creative Commons is an easy way for authors to license their content to others, in an attempt to encourage sharing of culture. The following video explains it very well:
I've always been a fan of this – I believe everybody should have the right to be compensated for their work – and if it's only attribution at the most basic level – but I also believe in sharing and working together with others to create greater works.
I've taken this opportunity to license my wallpapers under a CC license, as promised. And future works published will also be licensed similarly – I just do not feel that I should set a CC license for every single blog posting. But maybe we'll get there some day as well.
(Video via Joi Ito.)
Thoughts about Natural Resources on Arnâron
2008-10-15 ArnaronArnaron, Economy, Resources, WorldbuildingNils
Arnâron is an old world. It is no longer controlled by a global civilization but rather a couple of smaller nations that survive here and there.
A planet's natural resources are not infinite. We witness this in the "real world" – after the rise of energy prices, Peak Oil is probably the best-known example, but there are also fears that other materials may run out, for example copper. A civilization will use up all the available resources over the course of its history, and either adapt when shortages occur, or die.
However, the civilization of Arnâron was destroyed prematurely by external causes. The receding coastlines also made additional deposits available for exploitation; the oceans contain a wealth of materials that are hard to extract. But once the oceans dry up, all these additional deposits become available for exploitation.
For these reasons I can set the remaining resource levels rather arbitrarily – the world likely would not suffer from material shortages. The main problem would be one of location. In the searing heat of the desert, a rich mine may as well be nonexistent if it is located far away from canals or trade routes, as traveling overland on arbitrary routes is extremely difficult due to the hostile climate.
Water, something we often take for granted, is a critical supply on Arnâron. People survive where they can find water, and the dry deserts are abandoned and hostile to life.
In some areas, open water remains – due to rivers which run into the few remaining "oceans". Canals help to feed the remaining oceans, and transport water over long distances into regions where no free water would otherwise exist. Wells are also used to irrigate stretches of the desert, and to provide drinking water to the people.
Most open surface water on Arnâron is slightly saline; the sources of the water (melt ice from the poles, rivers) is sweet water, but there remains a lot of salt from the dried-up oceans. Where water is saline, it is desalinated before being used for irrigation or consumption.
Food is always in short supply. Where water exists, it is used for irrigation – food output in these regions will be high, but it is limited – Arnâron is not able to sustain a massive population, and droughts will result in severe famines and may very well shift the local balance of power. Cattle requires a lot of grazing land, so meat is expensive. Fish is available near rivers and the remaining oceans, but will also be expensive due to limited supplies. Many people live on a purely vegetarian diet.
Local rulers always attempt to control food supplies tightly, either to ensure that they and the military get the lion's share, or that food is distributed "fairly". Poaching and illegal fishing are problems in some areas, and are usually sanctioned with harsh penalties.
Salt, incidentally, is fairly worthless – dried up seas have left more salt than anybody could want. However, spices of all kinds are expensive trade commodities.
Cloth and Leather
Due to Arnâron's status as a desert world, organic materials are relatively rare and expensive. There are forests, and where possible the people of Arnâron do cultivate and protect them – knowing very well that deforestation would only hasten the fate of their world.
Cotton, flax, and hemp are grown next to food crops, and are the main materials used for textiles. Wool, leather, furs and pelts are the byproduct of domesticating animals, and in areas where wild animals survive, hunt. Silk is a luxury cloth, available only to important rulers and very rich individuals.
Metals of all kinds are used for items of every day use, for construction, and for weaponry. Depending on local conditions, items that can be made from metal rather than from an organic material will be made from metal.
The main problem with obtaining metals is to find a source that can be easily reached – ideally by a canal, otherwise with a caravan route. There are many deposits and ancient mines all over Arnâron that could yield large amounts of materials, but which are inaccessible due to their location deep in the hostile deserts.
Ancient cities and battlefields are routinely scavenged for metals and other materials, and are mostly stripped bare. Metals are also easy to recycle, so that an unwanted or even broken metal object will always fetch some money on local markets.
Energy production on Arnâron is mostly from renewable energy sources – water and wind, but also solar energy, in a primitive way. Solar cells are no longer manufactured, but solar energy is used to heat up water, for example.
Wood is burned where needed, for example by the hordes, caravans or travelers, as it can often be recovered locally and other ways to heat oneself in the cold desert nights are not readily available.
Slaves and beasts of burden are another source of power. Since both require food to sustain, their use depends on local conditions. However, captured enemy soldiers or criminals that are not executed are almost always put to work – they need to be fed, and the captors thus see little reason not to recuperate the expense in food in some way.
Follow @enderra Follow Enderra on WordPress.com
The Plot-a-Day Archive
[—]2020 (6)
[—]January (6)
Weird West Points of Light
Post-Apocalyptic Points of Light
Enderran Agenda for 2020
...and a One Page Dungeon Generator
...and a City Generator
Found a Great Map Generator
[+]December (10)
[+]October (12)
[+]February (13)
[+]June (27)
[+]November (36)
Nils on Science Fiction Setting – 3950 AD, WIP#5/Revised Map
Nils on Creature: The Scavenger
Mike on Creature: The Scavenger
Lady Wolf on Science Fiction Setting – 3950 AD, WIP#5/Revised Map
Nils on Shakespeare & Dragons Podcast
Blog Carnival (23)
Creature Catalog (7)
FIXME (15)
NaGaDeMon (4)
Plot-a-Day (17)
Worldbuilding (1)
Worlds (208)
Arnaron (51)
Enderra (23)
Future History (10)
Meta Setting (1)
New Enderra (2)
Other Worlds (18)
The Lost Colony (7)
Voyagers (50)
Voyagers 2 (50)
Enderra © 2008-2020 by Nils Jeppe


text:
Political Rebel
Manhattan DA works against the new mayor! DA finds ways to allow crime to continue
politicalrebel
Manhattan's newly sworn-in district attorney reportedly told his staff he does not intend to prosecute several crimes, including resisting arrest.
Manhattan's newly sworn-in district attorney reportedly told his staff he does not intend to prosecute several crimes, including resisting arrest. At the same time, New York City's newly sworn-in mayor is pledging to crack down on surging crime.
Alvin Bragg, a former federal prosecutor, sworn in as Manhattan District Attorney on Jan. 1, sent guidance to his office calling for the "decriminalization/non-procession, turnstile jumping, trespassing, resisting arrest, interfering with an arrest and prostitution.
Guidance sent out stated, the DA's office will "not seek carceral sentence other than for homicide" or "class B violent felony in which a deadly weapon causes serious injury, domestic violence felonies" with some exceptions in "extraordinary circumstances."
The memo sent out stated that it places to "reserve incarceration for matters involving significant harm will make us safer."
Bragg sent a memo stressing "diversion and alternative to incarceration" in pursuing prosecutions… by not sending criminals to jail in a stunning reversal of traditional law enforcement procedures. The no-jail time exceptions are murder, a crime that involves someone's death, or a felony. And several serious crimes, like armed robbery, are being reduced to misdemeanors, which could mean dangerous thugs will end up back on the streets without seeing the inside of a jail cell.
Even when murder is involved, Braggs says his office will limit sentences to 20 years. He refuses to seek the state-mandated "life without parole" for murderers, including terrorists, cop killers, and even serial killers.
Braggs is essentially paving the way to more and more lawlessness in New York along with an even bigger bloodbath than what New York has already seen. Making it increasingly hard for police to do their job. Jennifer Harrison, head of the crime victims advocacy group, Victims Rights NY, stated, "It's going to be deadly, not prosecuting crime and standing with socialists, advocating to release more violent criminals with blanket release mandates, when murder rates are up, what, 45% over the past two years … is not the message that we want to be sending."
Bragg says he is seeking "goals of safety and fairness" by focusing on "accountability, not sentence length" and claims that his reforms "will make us safer."
Bragg's office will largely no longer prosecute some trespass offenses, the charge of resisting arrest, fare beating, and sex work. Besides armed robbery, he also reduces charges for stealing from stores or home storage areas and drug dealing.
"These policies… reflect both the need for fundamental reforms in the criminal legal system and the need for community safety," Bragg said in a statement.
Upon the memo's release, The New York Police Benevolent Association (NYPNA) who is already struggling to keep morale high, released a statement on social media shortly after the memo was released, expressing serious concern in the 2022 plan.
"We continue to have serious concerns about the message these types of policies send to both police officers and criminals on the street," PBA President Patrick J. Lynch said. "Police officers don't want to be sent out to enforce laws that the district attorneys won't prosecute. And there are already too many people who believe that they can commit crimes, resist arrest, interfering with police officers, and face zero consequences."
Lynch added that he looks forward to "discussing these issues" with Bragg.
Mayor Eric Adams, a Democrat and retired police officer who was sworn in on New Year's Eve, also came out in a statement to say, "I am conservative for policing." Campaigned on a platform of addressing the crime problem and bail reform issues that have outraged many residents.
Adams stated during a Tuesday press conference that he has "not communicated with the DA," saying, "I have not looked over and analyzed exactly what he's calling for."
To add more insult to injury, nearly 100,000 accused criminals in New York City have been released back onto the streets due to the controversial 2019 bail reform law. Of 3,400 of them, about 4% were rearrested for a violent felony while awaiting trial.
Jennifer says Bragg is sending the wrong message to murderers, muggers, and thieves.
"You can do what you want and get away with it. There are no consequences for your actions, except for the life sentences that you handed down to victims like me that have to deal with unbearable pain, grief, and trauma from losing a loved one."
"Start using common sense in these reforms and stop issuing blanket release mandates that are a detriment to society, and start including victims as well," she added.
Previous articleThinking logically: Covid-19 creator says boosters are "not sustainable"
Next articleJust Terrible! How the Democrats threw Jan. 6 at Republicans
Psaki takes a shot at Youngkin on Twitter, instantly regrets it!
Where is the sanity! Mainstream Muslim groups call for freedom of hostage-taker
Senator publishes Fauci's unredacted financial disclosures, accuses him of being misleading
Biden reeling after major losses on filibuster, vaccines, and more to start 2022
Stopped in its tracks! Sinema doubles down on filibuster support
© Copyright 2022. Political Rebel. All Rights Reserved.


text:
Q: How can I apply dynamic locale change in AngularJS tests? In an AngularJS application using angular-dynamic-locale, I want to test locale-dependent code in different locales.
I am trying to change the locale in an asynchronous setup. In previous Jasmine versions, this was done with a latch function; these are now deprecated and replaced with the done callback.
beforeEach(function (done) {
  inject(function ($injector) {
    tmhDynamicLocale = $injector.get('tmhDynamicLocale');

    console.log('setting locale to French...');
    tmhDynamicLocale
      .set('fr-fr')
      .then(function () {
        console.log('locale set.');
        done();
      })
      .catch(function (err) {
        done.fail('failed to set locale:', err);
      });
  });
});

The promise returned by tmhDynamicLocale.set remains pending forever, and the setup times out.
Looking at the innards of tmhDynamicLocale shows that the locale change is scheduled, but never actually applied:
// This line runs
$rootScope.$applyAsync(function() {
  // But this callback doesn't
  storage[storagePut](storageKey, localeId);
  $rootScope.$broadcast('$localeChangeSuccess', localeId, $locale);
  deferred.resolve($locale);
});

I have tried calling $browser.defer.flush and digesting/applying the root scope, but the locale change callback is still not executed.
How can I change the locale in this test suite?
Plunker, with logs in tmhDynamicLocale added for clarity.

A: There doesn't seem to be a clean way to do it, but I've found a hackish workaround.
Why the promise doesn't settle
tmhDynamicLocale loads the locale file via a <script> element. When the load event of this element fires, it schedules the $localeChangeSuccess event and promise resolution.
In production, this works well:

*

*My code calls tmhDynamicLocale.set('fr-fr')

*The <script> element is created

*The locale file is loaded; load fires

*In the load event callback, a new callback is scheduled to be applied asynchronously

*The completed-request event also triggers an Angular digest cycle

*The digest cycle runs the scheduled callback

*This callback resolves the locale change promise

In tests, browser events do not trigger digest cycles, so this happens:

*

*My code calls tmhDynamicLocale.set('fr-fr')

*The <script> element is created

*Any $timeouts in my test code run here, with an empty $$applyAsyncQueue

*The locale file is loaded; load fires

*In the load event callback, a new callback is scheduled to be applied asynchronously

*My code is not notified of this; it has no way to trigger the new callback, and the promise pends forever

So triggering the promise resolution can't be done inside the Angular digest cycle, or at least I don't see how.
Workaround
Since we can't tell when the callback is scheduled, poll until it is. Unlike $interval, setInterval is not mocked out in tests and allows real polling.
Once the callback is scheduled, $browser.defer.flush will run it, and trigger promise resolution. It throws if there are no deferred tasks to flush, so only call it if the queue is non-empty.
_forceFlushInterval = setInterval(function () {
  if ($rootScope.$$applyAsyncQueue.length > 0) {
    $browser.defer.flush();
  }
});

Conceivably, tasks other than the locale change could be scheduled. So we keep polling until the promise is settled.
tmhDynamicLocale.set('fr-fr')
  .then(function () {
    clearInterval(_forceFlushInterval);
    done();
  })
  .catch(function () {
    clearInterval(_forceFlushInterval);
    done.fail();
  });

But there are many drawbacks:

*

*Accessing $$private Angular internals is not a good idea, and is likely to break between versions.

*Constantly flushing may interfere with other asynchronous setup.

*If for some reason the interval doesn't get cleared, it will wreak all kinds of havoc on later tests.

Plunker

redpajama_set_name: RedPajamaStackExchange


text:
Q: AS3 get an array of all instances of a class on a stage? Assume I have the myCircle class all defined and all that. If my code is as follows:
var circle1:myCircle = new myCircle()
var circle2:myCircle = new myCircle()
var circle3:myCircle = new myCircle()
var circle4:myCircle = new myCircle()

stage.addChild(circle1)
stage.addChild(circle2)
stage.addChild(circle3)
stage.addChild(circle4)

How would I write a function to return an array of [circle1, circle 2, circle3, circle4] automatically?

A: It's simple, take a look at the following I made:
package
{
    import flash.display.DisplayObject;
    import flash.display.DisplayObjectContainer;
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite
    {
        public function Main():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }// end function

        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            for (var i:uint = 0; i < 5; i++)
            {
                var circle:Circle = new Circle();
                circle.name = "circle" + (i+1);
                stage.addChild(circle);

            }// end for

            for (var j:uint = 0; j < 5; j++)
            {
                var square:Square = new Square();
                square.name = "square" + (j+1);
                stage.addChild(square);

            }// end for

            traceNames(getCircles(stage)); // output: circle1
                                           //         circle2
                                           //         circle3
                                           //         circle4
                                           //         circle5

            traceNames(getSquares(stage)); // output: square1
                                           //         square2
                                           //         square3
                                           //         square4
                                           //         square5

            traceNames(getChildren(stage, Circle)); // output: circle1
                                                    //         circle2
                                                    //         circle3
                                                    //         circle4
                                                    //         circle5

        }// end function

        private function getCircles(container:DisplayObjectContainer):Array
        {
            var array:Array = new Array();

            for (var i:uint = 0; i < container.numChildren; i++)
            if (container.getChildAt(i) is Circle)
            array.push(container.getChildAt(i));

            return array;

        }// end function

        private function getSquares(container:DisplayObjectContainer):Array
        {
            var array:Array = new Array();

            for (var i:uint = 0; i < container.numChildren; i++)
            if (container.getChildAt(i) is Square)
            array.push(container.getChildAt(i));

            return array;

        }// end function

        private function getChildren(container:DisplayObjectContainer, type:Class):Array
        {
            var array:Array = new Array();

            for (var i:uint = 0; i < container.numChildren; i++)
            if (container.getChildAt(i) is type)
            array.push(container.getChildAt(i));

            return array;

        }// end function

        private function traceNames(array:Array):void
        {
            for each(var displayObject:DisplayObject in array)
            trace(displayObject.name);

        }// end function

    }// end class

}// end package

import flash.display.Sprite;

internal class Circle extends Sprite
{
    public function Circle() {}

}// end class

internal class Square extends Sprite
{
    public function Square() {}

}// end class

The three key functions here are getCircles(), getSquares() and getChildren(). They all essentially do the same thing, theres a for loop in the function that loops through a specified display object container's children. Upon each interation it checks the type for either Circle or Square types in the getCircles() and getSquares() functions respectively, and then it adds each display object to a local array which is returned by the function.
The getChildren() function takes things a step further by allowing for the type to be specified beforehand.

A: I'm not going to do your job for you but I can give you a hint:
you can check if something is a myCircle instance by doing
if(child is myCircle)

so when you loop through all children of the stage you can put the children that ARE instances of myCircle into the array and if not, do nothing. That will give you an array of all children that are myCircles.


The Dress - The dress at the minute is on offer so if you want that, you better get it quick before it sells out!
The Bag - Unfortunately, it is from New Look again and I think that they must have new stock since it isn't there, again! Sorry.
The Bracelets - Were from Boots but they were in the sale, so sorry again! I have still put links to the stores so you can still see what else there is available.
The Ring - Is half price at the minute so get it now before it goes back to being expensive!
The Earrings - Are from Claire's but again, I'm sorry, they are not selling them anymore. However, you can get lots of different one that are really similar!
The Hair Accessories - Ugh, I'm really sorry, Claire's aren't selling them anymore!
I probably spent and average of £140-£160 altogether, which I think is pretty good for Prom!
I'm sorry about the accessories not being available anymore, it's probably because I bough everything like 1-2 months ago! Haha! But yeah, I am So excited! There will more than likely be a small paragraph about my Prom!


text:
HomeNewsCrimeLocal officer's account of rushing to help wounded during London Bridge terror...
Local officer's account of rushing to help wounded during London Bridge terror attack
Inspector Jim Cole
A Rotherhithe copper has given a detailed account of the "pandemonium" of being caught up in the London Bridge terror attack.
41-year-old Inspector Jim Cole, who has eighteen years' experience in the Met, had just been finishing his shift at Peckham Police Station when the call came in.
"My colleague had been listening to the police radio channel and he came running in to tell me a van had ploughed into pedestrians on London Bridge. I instantly knew it was serious and I feared the worst," explained Inspector Cole, who also leads the Safer Neighbourhood team in Rotherhithe.
"It was all hands to the pump, it was like something out of a Battle of Britain film. Everyone went running and every available police vehicle was filled with officers. My lot got into a police carrier and we went up to London Bridge."
He was on the scene at about 10pm, when the three knifemen had started their rampage through Borough Market and the high street.
"We pulled up in Borough High Street by the war memorial and we made our way on foot to Borough Market. We had some updates on the radio about at least three men attacking people with knives, but it wasn't really a clear situation and we were not really sure what to expect.
"When we got there, there were a number of armed officers and there were casualties on the pavements. I asked my officers to form a cordon to stop the public from going into the market, and that's when the shooting started just behind us. We had no idea what was going on, we didn't know if it was us shooting or if the bad guys had guns."
Inspector Cole's first priority was to help those injured and to keep the petrified members of public safe during the pandemonium. Inspector Cole spotted a nearby pub in Southwark Street and decided it was the safest place for people to shelter.
"We got the door open and I instructed my medic to set up a triage area downstairs," explained Inspector Cole. "There was a casualty on the pavement near me. I saw a marked police car. I flagged it down and I got the driver to get the casualty out of there. I then saw a few injured people who were bleeding, including a man who had been stabbed in the stomach, and we got them to safety in the pub. I then heard more shouting and a stream of people came out of the market screaming and panicking. I got them to go into the pub's basement as a place of hard cover."
He added: "It then started to stabilise a bit. It felt like that had only been a few moments, but it had actually been about ten or fifteen minutes.
"I then checked in with my medic, who told me no one he was treating was immediately critical and they were stable at that point.
"On my radio I could hear officers on London Bridge desperately calling for ambulances, they were doing CPR on people. I decided I had to get my medic up there to help, but I didn't know what the threat was to their safety. I managed to grab a couple of armed officers and they escorted my medic, and another police medic, up to London Bridge.
"I then went outside to find help for the man who had been stabbed in the stomach. I found a police car and I instructed some officers to get him to hospital."
After getting the news that the immediate threat had been dealt with, Inspector Cole went to relay the information to the members of public sheltering in the pub.
He said. "I spoke with the 200 frightened people in the basement and told them that there were armed officers outside, we were safe and we would evacuate them as soon as we could and I got a big round of applause. That was a really nice, unexpected moment. It was a nice touch.
"It then started to calm down and we started to evacuate people from the area.
"All the first responders then went back to Southwark Police Station and other police units took over."
Inspector Cole said his autopilot took over that night as he dealt with the unfolding situation.
"You have no time to think about anything, it's almost robotic," he said. "It's really automatic, it just kicks in. You don't really have time to consider your own safety. It was just a case of making sure everyone was doing their bit. It wasn't really until the next morning that it sunk in and I thought 'crikey, that was pretty major'.
"It all feels very surreal, it almost feels like it isn't real."
Inspector Cole said it was the most challenging moment in his eighteen-year career in the Met.
"Without a shadow of a doubt, it was the most challenging, most intense situation I've dealt with. I've dealt with a lot of death and I've been to some pretty horrific scenes in my career, but nothing has ever been on that scale. It's going to stick with me for a long time," he said.
Inspector Cole said he was proud of his colleagues and his team on the night.
He added: "The team there was brilliant and all the officers working to me did everything I asked them to. Everyone showed courage. No one thought about themselves, everyone was busy helping other people. It really brings home what a great organisation the Met is."
Terror attack
London Bridge terror attack
jim cole
Previous articleLib Dem Simon Hughes 'profoundly grateful' to supporters, and suggests he may seek re-election in future
Next articleNHS, council and charities set up assistance centre for locals affected by London Bridge terror attack
Donnell Rhule: Dulwich knife murderer cousins jailed for life for stabbing 18-year-old to death
South London man jailed for county lines drug offences linking London and the south coast
Man flees police in his underwear after breaking bail conditions in Camberwell


text:
Robert Yang () is an academic, artist, and indie video game developer, whose work often explores gay subculture and the boundary between video games and art. His work focuses particularly on sociologically deviant and sometimes illegal sexual behavior. His projects include Borges adaptation Intimate, Infinite and The Tearoom, a game that involves soliciting sex in a public toilet. He is a former member of faculty at NYU Tisch School of the Arts's Game Center and curated their annual indie game exhibition in 2015.

Yang was also featured in the 2018 documentary Unforeseen Consequences: A Half-Life Documentary, created by Noclip, due to his work on the popular Half-Life Source remake, Black Mesa.

Selected works

Intimate, Infinite
Intimate, Infinite is an art game adaptation of Jorge Luis Borges's story "The Garden of Forking Paths", which itself played with genre. The game comprises three subgames which explore themes of repetition, infinity, and sudden endings, taken from the story.

Cobra Club
Cobra Club is a photo studio game that involves the player taking pictures of their character's penis. The player can interact with different NPCs and trade "dick pics" with each other. The game was banned by the live-streaming platform Twitch for its sexual content.

Hurt Me Plenty
Hurt Me Plenty is a sexually-explicit game based on BDSM subculture and explored the issue of negotiating consent.

Rinse and Repeat
Rinse and Repeat was released in 2015. It takes place at a public shower room. The player has to rub down other men. The game was widely banned on Twitch for its extensive nudity.

The Tearoom
The Tearoom (2017) alludes to the gay sexual practice of cottaging. Players must stand at a urinal and make eye contact with a neighbor until a power bar fills up and oral sex begins. Players must also avoid being spotted by police officers. Instead of penises, it shows guns. The game parodies or critiques aspects of other games: the presence of non-functioning toilets in other video games; the way games normally allow you to look at everything without being penalised; and the different attitudes of the video game industry to sex (largely prohibited) and violence (almost omni-present).

Other games
Yang's shorter games include Succulent, a game that allows you to have oral sex with an unknown orange object, possibly a corndog or a popsicle; Stick Shift (2015), a short driving game about pleasuring a gay car; and No Stars, Only Constellations, a stargazing game about relationship breakups and alien life. A few of Yang's games were released on Steam in a collection called Radiator 2. Yang has recently created 'We Dwel in Possibility' a free online experience.

References

External links
Yang's personal website / portfolio
Yang's page at NYU Game Center

Year of birth missing (living people)
Living people
Tisch School of the Arts faculty
Art games
Indie video game developers

redpajama_set_name: RedPajamaWikipedia


ShyCutieDoll . MisAlice. novinhosafado. CuteTTT.
AyanEliasMasterDevianceGloriaExoticEdward4Dominic .AxelHeathnuttersSARAsensation4uaphrodite8 .ILOVEANAL21aphrodite8susanbakerArlynne .MisAliceILOVEANAL212LATINSBLACKXXXObedientSubToU .AllyThickLATIN11inEROTIurNightPHANTOM19SammyNJulieMDx .LINDACHRISSsweetpeggyMisEleanoraSARAsensation4u .NicolSunKellyFeiDorinaShymrSENSUALcum .xue520JustModelnovinhosafadoCamiloHardSM .Amateus9SARAsensation4uSARAsensation4uMilenaLane .AyanEliasSofiHinesJACKgreyHOTAyanElias .BlondeMelissaJolenSmithHayleyRayquennsex .
AyanEliasFloridaZAyanEliasSARAsensation4u .CuteEricaForUAlyssonPervAlisaSexyBushginnalee .QueenAriaAlisaSexyBushGoddessATHENAxxxviviannaR .MisEleanoradanielahottyObedientSubToUNicolSun .viviannaRHornyBrunette20CatlynSofiHines .Antosphere18leandrew11SunnyReginaAgathaG .mrSENSUALcumandersonFlowHayleyRayCamiloHardSM .MasterDeviancequennsexBlondeMelissaHornyBrunette20 .JolenSmithAlyCruzObedientSubToUginnalee .DELICIOSSAmrSENSUALcumCLARISandJACEImania .AsianBeausweetpeggyHornyBrunette20AlyCruz .


text:
In alternative In Indie In Rock Pop In USA
Jim Loeffler's Electric Orbit - 'Six Ways From Someday'
'Six Ways From Someday' is a melodic entity driving emotions from Jim Loeffler's naturally canorous voice. You will discover a flavour of nostalgia deeply rooted in the musical rendition and poetic lyricism. The composition is easygoing and easy to follow making the hook of the song a capstone of catchy and addictive features.
Harmonious layers of vocals ranging toward higher octaves, piano and acoustic guitar holding hands together raising the tunefulness, and warm bass with subtle wideness sum up the great synchronization that makes this song mellifluent and foot tapping.
The gentle sound of strings on one side coordinating with the chords and vocals displays true dedication to making listeners feel the meaning behind this song. It evolves from a mellow start and hits the climax with a sky-high performance upscaling the expectation filled with surprises.
Every instrument is played with intricacy and detailing which ups the engagement and involvement of listeners. Everything feels seamless and focused, ready to be one of your favourites.
Definitely listen to 'Six Ways From Someday' by Jim Loeffler's Electric Orbit, releasing on 26th December 2022.
About Jim Loeffler's Electric Orbit:
"Jim is a self-taught multi-instrumentalist/singer-songwriter who produces his own music. He lives in Pittsburgh, where he was born and raised and comes from a very musical family. He released his first album, Shootout at the Straw Man Factory, in September 2021. A disciple of the Big Four bands in the Sixties - The Beatles, The Rolling Stones, The Kinks and The Who - his influences also include Deep Purple, Oasis, and The Fratellis. His songs make for an eclectic blend of rock, pop, and jazz."
Website | Twitter | Instagram | Facebook | Apple Music | Spotify
Tags: alternative, Indie, Rock Pop, USA


text:
Animation World Animation World New animated logo for DreamWorks Animation studios
New animated logo for DreamWorks Animation studios
American animation studios DreamWorks Animation present the new logo that will open the next films in theaters. Find the video below.
Founded in 1994 by director and producer Steven Spielberg, former Disney executive Jeffrey Katzenberg and music producer David Geffen, the studios DreamWorks Animation produced 42 films but also had a troubled past that brought them under the (current) wing of the Universal Pictures studios.
The new logo that we will see in theaters from next month, along with copies of the film Puss In Boots: The Last Wish [news] is the longest ever produced, about 30 seconds, running through the major studio franchises.
Here the video:
[ Fra ]
Golden Globes for best feature to Guillermo del Toro's Pinocchio
In the midst of the award season, we begin to reckon with the awarded and non-awarded films. Last weekend it was the turn of the Golden Globes which saw the film Pinocchio triumph in the animation section.
Netflix cancels Sergio Pablos new film Ember
The well-known streaming platform Netflix resizes its schedule of animated productions by canceling some projects including the new film by Sergio Pablos.
Kung Fu Panda: The Dragon Knight is ready for season two
After the first season released this summer, DreamWorks Animation studios present the new episodes of the series Kung Fu Panda: The Dragon Knight. Trailer to follow.
December is time to returns - Puss in boots: the last wish
The Shrek franchise takes back with a new chapter in the spin-off of the well-known Swordsman Cat. DreamWorks Animation presents the new trailer for the movie Puss In Boots: The Last Wish.
The Boss Baby goes to meet Santa Claus in the new special
The DreamWorks Animation studios present a Christmas special starring the Boss Baby who has already starred in films and series. Below the trailer.
The fourth season of DreamWorks Dragons: The Nine Realms is coming
The series dedicated to the youngest of the well-known franchise starring Vikings and dragons from DreamWorks Animation comes into its fourth season. Below the trailer for the new episodes.
Abominable and the Invisible City is the series ispire by Abominable
Coming to streaming platforms next month, we can finally see the first trailer for the new animated series Abominable and the Invisible City from DreamWorks Animation studios.
Epic Dance Battle with Kitty Softpaws - clip from Puss in Boots 2
Return to the world of Shrek with the new DreamWorks Animation feature film. Below a long clip of Puss in Boots: The Last Wish.
Renewals: Love, Death + Robots Part 4 and Kung Fu Panda 4
Two American studios respectively announce the renewal for a new season of the Love, Death + Robots anthology series and a new cinematic chapter of the Kung Fu Panda franchise.
At the end of the month The Croods: Family Tree season 4
The adventures of the well-known cavemen born in the DreamWorks Animation studios continue with a new season of their animated series.


text:
Q: Display label outside of input in Angular Material Is there any way in Angular Material to display the mat-label in the left outside of the mat-input ?
So far, I can't find anything in the Angular Material documentation that allows me to do this.
Greetings,

A: Here is another way:
Please apply your own style:
<form style="display: flex">
    <label>Favorite food</label>
    <mat-form-field>
      <input matInput placeholder="Ex. Pizza" value="Sushi" />
    </mat-form-field>
  </form>

label css:
label {
  display: flex;
  align-items: center;
}


text:
Talk Ten Tuesdays
Exclusive ICD-11 Update: Recommendations for Immediate Action
November 23, 2021 Timothy Powell, CPA | Laurie Johnson | Eric Rubenstein, MS | Colleen Deighan, RHIA | Margaret A. Skurka, MS | Erica Remer, MD Episode 486
Nov 23, 2021 Episode 486
Timothy Powell, CPA | Laurie Johnson | Eric Rubenstein, MS | Colleen Deighan, RHIA | Margaret A. Skurka, MS | Erica Remer, MD
Like the inevitable approach of a slow-moving freight train, ICD-11 is on the horizon, heading this way. It's coming.
That's why we asked Margaret Skurka to join us for the next upcoming edition of Talk-Ten-Tuesdays: to give you an exclusive update on the new code set for America's health system. Skurka, a member of the National Committee of Vital Health Statistics (NCVHS), participated in describing for the Honorable Xavier Becerra, Secretary of the U.S. Department of Health and Human Services (HHS), recommendations regarding adoption of ICD-11 in the United States. Skurka, having served in healthcare for more than 40 years, will be make her farewell appearance during the next live edition of the weekly Internet radio broadcast.
The live broadcast will also feature these other segments:
Special Report: Outpatient CDI and E&M: Outpatient clinical documention integrity (CDI) expert Colleen Deighan will return to continue her popular series on a subject that continues to generate listener interest and questions. Deighan will also conduct a listener's survey and report on revised documentation requirements related to office-visit evaluation and management (E&M) services.
Tuesday Focus: Former HHS Office of Inspector General (OIG) Special Agent Eric Rubenstein will report on the constellation of new claims audits. Rubenstein is now director of litigation for Advize Health, LLC.
The Coding Report: Laurie Johnson will report on the latest coding news that has appeared on her radar screen.
News Desk: Timothy Powell, compliance expert and ICD10monitor national correspondent, will anchor the Talk Ten Tuesdays News Desk.
TalkBack: Erica Remer, MD, founder and president of Erica Remer, MD, Inc., and Talk Ten Tuesdays co-host, will report on a subject that has caught her attention during her popular segment.
All content © 2022 Talk Ten Tuesdays.


text:
Neste Oyj – fińskie przedsiębiorstwo paliwowe prowadzące sieć samoobsługowych stacji paliw A24 na terenie Finlandii, Łotwy, Litwy, Estonii i Rosji, a do niedawna - Polski. Pierwsza polska stacja została otwarta w roku 1991 w Zakroczymiu (obecnie zlikwidowana), w roku 2008 uruchomiono setną stację.

W kwietniu 2013 firma Neste Polska została przejęta przez firmę Shell Polska Sp. z o.o. Oficjalnym powodem wycofania z rynku polskiego była bardzo niska marża na paliwa stosowana przez sprzedawców w Polsce, rekompensowana przez obecne na klasycznych stacjach paliw dodatkowe usługi (sklepy, myjnie itp.). W 2014 Shell Self Service sprzedał 27 samoobsługowych stacji paliw firmie BM Reflex, które od maja 2014 działają pod logiem eMILA.

Przypisy

Bibliografia
 Polska strona WWW Neste

Przedsiębiorstwa w Finlandii
Przedsiębiorstwa naftowe i gazowe


text:
Anatomy of a $500,000 credit card fraud
By Blake Ellis, staff reporterMay 3, 2011: 5:40 AM ET
NEW YORK (CNNMoney) -- Grisha Stpanov opened a credit card, charged up $20,000, but never paid it back.
That's because Stpanov doesn't exist.
Stpanov, or at least his credit profile, was the creation of Arman and Wachagan Hovhannisyan, two brothers from California who were accused of scamming 21 banks and the three major credit reporting bureaus by inventing hundreds -- possibly thousands -- of fake identities, and charging $500,000 on fraudulent credit cards.
While it may sound like the plot of a Hollywood heist movie, anyone who understands how credit works can easily game the system.
Even after the worst financial crisis since the Great Depression, banks are still doling out credit cards to any borrowers who look good on paper -- even when that's the only place they exist.
And the Hovhannisyan brothers are proof positive that most banks are still very susceptible to fraud.
It all started when the Hovhannisyan brothers joined forces with a man named Jamal Hyde, who worked in a dentist's office extending loans to patients and then reporting payments to Experian, one of the three major credit bureaus.
According to the government complaint filed in California federal court, which summarized the investigation, the brothers, along with Hyde, made up hundreds of fake social security numbers to establish false identities. The men then began reporting loan information and on-time payments for fictitious dental services to Experian.
Once the fake credit profiles had high credit scores, the men opened credit cards and took out loans, fooling issuers like Bank of America (BAC, Fortune 500), Capital One (COF, Fortune 500), Wells Fargo (WFC, Fortune 500), US Bank (USB, Fortune 500), Chase (JPM, Fortune 500) and Discover (DFS, Fortune 500). In all, the government estimated that the men duped at least 21 financial institutions.
At first, they paid off the balances on time to improve the fake scores. Eventually, they ended up with hundreds of cards with a combined $500,000 credit limit, which they used to pay their own bills and purchase two luxury automobiles, federal documents show.
Retired bus drivers lose everything in Ponzi scheme
The Hovhannisyans were eventually caught by the FBI. After pleading guilty to lesser charges, they were both sentenced to more than 20 months in prison for bank fraud and must each pay restitution of $486,143. They entered prison in March.
Hyde is scheduled to appear at his sentencing in May.
How they got caught
About a year into the scheme, Experian flagged the fake accounts, saying the loan amounts seemed unusually high for dental services and that the geographic distribution of the patients was also unusual.
A spokesman for Experian said the company did carefully vet the dental practice involved in the case, and worked with law enforcement as soon as Experian became aware of the scam.
"In [this case], the dentist's office involved was a legitimate business, which hired a rogue employee who reported the account data in question," he said.
The three men likely picked the social security numbers at random and simply made up names, addresses and dates of birth, according to the case documents.
(Even if a social security number is already in use, if the name and other information doesn't correspond when a credit bureau receives it, a new profile can be created.)
When government agents received a search warrant to check the homes of the three men, they found hundreds of documents with account numbers, drivers licenses, social security numbers and other personal information relating to the many identities they created.
Your most dangerous possession? Your smartphone
The fact that the scheme went on for a year means that it probably could have continued a lot longer if the men had been a little more careful, said John Ulzheimer, personal finance expert at SmartCredit.com.
"They got greedy," he said. "They were smart, but not smart enough -- if they used modest credit lines and were more geographically sensitive, they could have kept it going."
Why it could happen again
While this is considered a "victimless crime" since most of the "individuals" defrauded didn't exist, (though the government believes several of the identities did belong to real people), the banks ultimately recoup fraud losses from their customers, said Ulzheimer.
"The takeaway from this case is that the system isn't fool proof," said Ulzheimer. "It can be manipulated. So it's crucial that the credit bureaus do a good job making sure that folks who have credit profiles and access to reporting information are legitimate."
Tips to protect your identity
But the job of the credit bureaus is to report the information given, not necessarily to take additional measures to determine its accuracy, said Jay Foley, founder of the Identity Theft Resource Center.
"The credit reporting agency may or may not realize there's fraud, but they usually won't do anything about it. Why would they? That's not their job," said Foley.
The banks disagree.
"Banks rely on the credit reporting, so they need to count on it being reliable," said John Hall, spokesman for the American Bankers Association. "The weakest link in this case seems to be the credit reporting folks, because the product we get from them is only as good as it is accurate."
While Experian said it typically alerts lenders to potential fraud, a spokeswoman from Wells Fargo said the bank doesn't receive proactive alerts from credit bureaus. Instead, fraud risks are flagged through internal tools, network providers like Visa and MasterCard, merchants and customers.
A spokeswoman for Discover said the company advises merchants to use security processes to prevent fraud.
Capital One and US Bank could not be reached for comment, and the other major banks named in the complaint declined to comment.
0:00 /1:59Have you been hacked?
"Our country still has no method of defining exactly who the customer is, how honorable the business reporting information is, or how accurate the information on the report is," Foley said.
Creating better fraud prevention systems would be expensive, and consumers would likely end up paying, he added.
Experian said cases like this are rare. But if a more secure system isn't developed, similar schemes could easily happen, Ulzheimer warned.
"These guys are almost trailblazers, they've proven the concept works, so now it's just a matter of someone coming along and creating 25 more human beings and improving the process," he said.
No. 1 consumer complaint: Identity theft
Grandma opened a credit card in my name
Mortgage & Savings Center
Equity Loan
Overnight Avg Rate
30 yr fixed 3.80% 3.88%
5/1 ARM 3.84% 3.88%
30 yr refi 3.82% 3.93%
Find the best auto, life, home, health rates
Enter Zip code:
Select a product:
Auto Home Life Long-Term Care Health
Insurance news and resources from BankRate
Everything you need to know about Obamacare tax forms
10 things you must know before signing up for Medicare
How to fortify and protect your home against wildfires
Basic differences between Medicaid and Medicare
Rate data provided
by Bankrate.com
View rates in your area
Find personalized rates: Card type Credit type Card issuer
Today's featured rates:
30 yr fixed mtg, 0 points, Los Angeles, CA, APR 4.625%
30 yr fixed, 0 points refi, Elizabeth, NJ, APR 4.625%
15 yr fixed mtg, 0 points, Orlando, FL, APR 3.875%
5/1 ARM, 0 points, Houston, TX, APR 3.125%
30 yr jumbo, 0 points, Cleveland, OH, APR 5.500%
MMA , Los Angeles, CA, APY 1.09%
$10K MMA , Tampa, FL, APY 1.09%
6 month CD, Metro, NY, APY 1.04%
1 yr CD, Houston, TX, APY 1.27%
5 yr CD, Los Angeles, CA, APY 2.50%
CA, $30K home equity loan, APR 7.99%
TX, $50K home equity loan , APR 8.87%
PA, $75K home equity loan , APR 4.99%
NY, $30K HELOC , APR 5.24%
FL, $50K HELOC, APR 5.49%
Capital One, APR 11.9% - 19.9% (V)
Discover Card, APR 11.99%-20.99% (Variable)*
Chase, APR 11.99%-22.99% Variable*
Discover Card, APR 11.99% - 20.99% (Variable)*
Chase, APR 13.24%-19.24% (Variable)*
Capital One, APR 22.9%(V)
Chase, APR 13.24% Variable*
MetaBank, APR *
*Rates subject to change