text:
package org.bson;

import org.bson.types.ObjectId;

import java.io.Closeable;
import java.util.Arrays;
import java.util.Stack;

import static java.lang.String.format;

/**
 * Represents a BSON writer for some external format (see subclasses).
 *
 * @since 3.0
 */
public abstract class AbstractBsonWriter implements BsonWriter, Closeable {
    private final BsonWriterSettings settings;
    private final Stack<FieldNameValidator> fieldNameValidatorStack = new Stack<FieldNameValidator>();
    private State state;
    private Context context;
    private int serializationDepth;
    private boolean closed;

    /**
     * Initializes a new instance of the BsonWriter class.
     *
     * @param settings The writer settings.
     */
    protected AbstractBsonWriter(final BsonWriterSettings settings) {
        this(settings, new NoOpFieldNameValidator());
    }

    /**
     * Initializes a new instance of the BsonWriter class.
     *
     * @param settings  The writer settings.
     * @param validator the field name validator
     */
    protected AbstractBsonWriter(final BsonWriterSettings settings, final FieldNameValidator validator) {
        if (validator == null) {
            throw new IllegalArgumentException("Validator can not be null");
        }
        this.settings = settings;
        fieldNameValidatorStack.push(validator);
        state = State.INITIAL;
    }

    /**
     * The name of the field being written.
     *
     * @return the name of the field
     */
    protected String getName() {
        return context.name;
    }

    /**
     * Returns whether this writer has been closed.
     *
     * @return true if the {@link #close()} method has been called.
     */
    protected boolean isClosed() {
        return closed;
    }

    /**
     * Sets the current state of the writer. The current state determines what sort of actions are valid for this writer at this time.
     *
     * @param state the state to set this writer to.
     */
    protected void setState(final State state) {
        this.state = state;
    }

    /**
     * Gets the current state of this writer.  The current state determines what sort of actions are valid for this writer at this time.
     *
     * @return the current state of the writer.
     */
    protected State getState() {
        return state;
    }

    /**
     * Get the context, which will indicate which state the writer is in, for example which part of a document it's currently writing.
     *
     * @return the current context.
     */
    protected Context getContext() {
        return context;
    }

    /**
     * Set the context, which will indicate which state the writer is in, for example which part of a document it's currently writing.
     *
     * @param context the new context for this writer
     */
    protected void setContext(final Context context) {
        this.context = context;
    }

    /**
     * Handles the logic to start writing a document
     */
    protected abstract void doWriteStartDocument();

    /**
     * Handles the logic of writing the end of a document
     */
    protected abstract void doWriteEndDocument();

    /**
     * Handles the logic to start writing an array
     */
    protected abstract void doWriteStartArray();

    /**
     * Handles the logic of writing the end of an array
     */
    protected abstract void doWriteEndArray();

    /**
     * Handles the logic of writing a {@code BsonBinary} value
     *
     * @param value the {@code BsonBinary} value to write
     */
    protected abstract void doWriteBinaryData(BsonBinary value);

    /**
     * Handles the logic of writing a boolean value
     *
     * @param value the {@code boolean} value to write
     */
    protected abstract void doWriteBoolean(boolean value);

    /**
     * Handles the logic of writing a date time value
     *
     * @param value the {@code long} value to write
     */
    protected abstract void doWriteDateTime(long value);

    /**
     * Handles the logic of writing a DbPointer value
     *
     * @param value the {@code BsonDbPointer} value to write
     */
    protected abstract void doWriteDBPointer(BsonDbPointer value);

    /**
     * Handles the logic of writing a Double value
     *
     * @param value the {@code double} value to write
     */
    protected abstract void doWriteDouble(double value);

    /**
     * Handles the logic of writing an int32 value
     *
     * @param value the {@code int} value to write
     */
    protected abstract void doWriteInt32(int value);

    /**
     * Handles the logic of writing an int64 value
     *
     * @param value the {@code long} value to write
     */
    protected abstract void doWriteInt64(long value);

    /**
     * Handles the logic of writing a JavaScript function
     *
     * @param value the {@code String} value to write
     */
    protected abstract void doWriteJavaScript(String value);

    /**
     * Handles the logic of writing a scoped JavaScript function
     *
     * @param value the {@code boolean} value to write
     */
    protected abstract void doWriteJavaScriptWithScope(String value);

    /**
     * Handles the logic of writing a Max key
     */
    protected abstract void doWriteMaxKey();

    /**
     * Handles the logic of writing a Min key
     */
    protected abstract void doWriteMinKey();

    /**
     * Handles the logic of writing a Null value
     */
    protected abstract void doWriteNull();

    /**
     * Handles the logic of writing an ObjectId
     *
     * @param value the {@code ObjectId} value to write
     */
    protected abstract void doWriteObjectId(ObjectId value);

    /**
     * Handles the logic of writing a regular expression
     *
     * @param value the {@code BsonRegularExpression} value to write
     */
    protected abstract void doWriteRegularExpression(BsonRegularExpression value);

    /**
     * Handles the logic of writing a String
     *
     * @param value the {@code String} value to write
     */
    protected abstract void doWriteString(String value);

    /**
     * Handles the logic of writing a Symbol
     *
     * @param value the {@code boolean} value to write
     */
    protected abstract void doWriteSymbol(String value);

    /**
     * Handles the logic of writing a timestamp
     *
     * @param value the {@code BsonTimestamp} value to write
     */
    protected abstract void doWriteTimestamp(BsonTimestamp value);

    /**
     * Handles the logic of writing an Undefined  value
     */
    protected abstract void doWriteUndefined();

    @Override
    public void writeStartDocument(final String name) {
        writeName(name);
        writeStartDocument();
    }

    @Override
    public void writeStartDocument() {
        checkPreconditions("writeStartDocument", State.INITIAL, State.VALUE, State.SCOPE_DOCUMENT, State.DONE);
        if (context != null && context.name != null) {
            fieldNameValidatorStack.push(fieldNameValidatorStack.peek().getValidatorForField(getName()));
        }
        serializationDepth++;
        if (serializationDepth > settings.getMaxSerializationDepth()) {
            throw new BsonSerializationException("Maximum serialization depth exceeded (does the object being "
                                                 + "serialized have a circular reference?).");
        }

        doWriteStartDocument();
        setState(State.NAME);
    }

    @Override
    public void writeEndDocument() {
        checkPreconditions("writeEndDocument", State.NAME);

        BsonContextType contextType = getContext().getContextType();
        if (contextType != BsonContextType.DOCUMENT && contextType != BsonContextType.SCOPE_DOCUMENT) {
            throwInvalidContextType("WriteEndDocument", contextType, BsonContextType.DOCUMENT, BsonContextType.SCOPE_DOCUMENT);
        }

        if (context.getParentContext() != null && context.getParentContext().name != null) {
            fieldNameValidatorStack.pop();
        }
        serializationDepth--;

        doWriteEndDocument();

        if (getContext() == null || getContext().getContextType() == BsonContextType.TOP_LEVEL) {
            setState(State.DONE);
        } else {
            setState(getNextState());
        }
    }

    @Override
    public void writeStartArray(final String name) {
        writeName(name);
        writeStartArray();
    }

    @Override
    public void writeStartArray() {
        checkPreconditions("writeStartArray", State.VALUE);

        if (context != null && context.name != null) {
            fieldNameValidatorStack.push(fieldNameValidatorStack.peek().getValidatorForField(getName()));
        }
        serializationDepth++;
        if (serializationDepth > settings.getMaxSerializationDepth()) {
            throw new BsonSerializationException("Maximum serialization depth exceeded (does the object being "
                                                 + "serialized have a circular reference?).");
        }

        doWriteStartArray();
        setState(State.VALUE);
    }

    @Override
    public void writeEndArray() {
        checkPreconditions("writeEndArray", State.VALUE);

        if (getContext().getContextType() != BsonContextType.ARRAY) {
            throwInvalidContextType("WriteEndArray", getContext().getContextType(), BsonContextType.ARRAY);
        }

        if (context.getParentContext() != null && context.getParentContext().name != null) {
            fieldNameValidatorStack.pop();
        }
        serializationDepth--;

        doWriteEndArray();
        setState(getNextState());
    }

    @Override
    public void writeBinaryData(final String name, final BsonBinary binary) {
        writeName(name);
        writeBinaryData(binary);
    }

    @Override
    public void writeBinaryData(final BsonBinary binary) {
        checkPreconditions("writeBinaryData", State.VALUE, State.INITIAL);
        doWriteBinaryData(binary);
        setState(getNextState());
    }

    @Override
    public void writeBoolean(final String name, final boolean value) {
        writeName(name);
        writeBoolean(value);
    }

    @Override
    public void writeBoolean(final boolean value) {
        checkPreconditions("writeBoolean", State.VALUE, State.INITIAL);
        doWriteBoolean(value);
        setState(getNextState());
    }

    @Override
    public void writeDateTime(final String name, final long value) {
        writeName(name);
        writeDateTime(value);
    }

    @Override
    public void writeDateTime(final long value) {
        checkPreconditions("writeDateTime", State.VALUE, State.INITIAL);
        doWriteDateTime(value);
        setState(getNextState());
    }

    @Override
    public void writeDBPointer(final String name, final BsonDbPointer value) {
        writeName(name);
        writeDBPointer(value);
    }

    @Override
    public void writeDBPointer(final BsonDbPointer value) {
        checkPreconditions("writeDBPointer", State.VALUE, State.INITIAL);
        doWriteDBPointer(value);
        setState(getNextState());
    }

    @Override
    public void writeDouble(final String name, final double value) {
        writeName(name);
        writeDouble(value);
    }

    @Override
    public void writeDouble(final double value) {
        checkPreconditions("writeDBPointer", State.VALUE, State.INITIAL);
        doWriteDouble(value);
        setState(getNextState());
    }

    @Override
    public void writeInt32(final String name, final int value) {
        writeName(name);
        writeInt32(value);
    }

    @Override
    public void writeInt32(final int value) {
        checkPreconditions("writeInt32", State.VALUE);
        doWriteInt32(value);
        setState(getNextState());
    }

    @Override
    public void writeInt64(final String name, final long value) {
        writeName(name);
        writeInt64(value);
    }

    @Override
    public void writeInt64(final long value) {
        checkPreconditions("writeInt64", State.VALUE);
        doWriteInt64(value);
        setState(getNextState());
    }

    @Override
    public void writeJavaScript(final String name, final String code) {
        writeName(name);
        writeJavaScript(code);
    }

    @Override
    public void writeJavaScript(final String code) {
        checkPreconditions("writeJavaScript", State.VALUE);
        doWriteJavaScript(code);
        setState(getNextState());
    }

    @Override
    public void writeJavaScriptWithScope(final String name, final String code) {
        writeName(name);
        writeJavaScriptWithScope(code);
    }

    @Override
    public void writeJavaScriptWithScope(final String code) {
        checkPreconditions("writeJavaScriptWithScope", State.VALUE);
        doWriteJavaScriptWithScope(code);
        setState(State.SCOPE_DOCUMENT);
    }

    @Override
    public void writeMaxKey(final String name) {
        writeName(name);
        writeMaxKey();
    }

    @Override
    public void writeMaxKey() {
        checkPreconditions("writeMaxKey", State.VALUE);
        doWriteMaxKey();
        setState(getNextState());
    }

    @Override
    public void writeMinKey(final String name) {
        writeName(name);
        writeMinKey();
    }

    @Override
    public void writeMinKey() {
        checkPreconditions("writeMinKey", State.VALUE);
        doWriteMinKey();
        setState(getNextState());
    }

    @Override
    public void writeName(final String name) {
        if (state != State.NAME) {
            throwInvalidState("WriteName", State.NAME);
        }
        if (name == null) {
            throw new IllegalArgumentException("BSON field name can not be null");
        }
        if (!fieldNameValidatorStack.peek().validate(name)) {
            throw new IllegalArgumentException(format("Invalid BSON field name %s", name));
        }
        context.name = name;
        state = State.VALUE;
    }

    @Override
    public void writeNull(final String name) {
        writeName(name);
        writeNull();
    }

    @Override
    public void writeNull() {
        checkPreconditions("writeNull", State.VALUE);
        doWriteNull();
        setState(getNextState());
    }

    @Override
    public void writeObjectId(final String name, final ObjectId objectId) {
        writeName(name);
        writeObjectId(objectId);
    }

    @Override
    public void writeObjectId(final ObjectId objectId) {
        checkPreconditions("writeObjectId", State.VALUE);
        doWriteObjectId(objectId);
        setState(getNextState());
    }

    @Override
    public void writeRegularExpression(final String name, final BsonRegularExpression regularExpression) {
        writeName(name);
        writeRegularExpression(regularExpression);
    }

    @Override
    public void writeRegularExpression(final BsonRegularExpression regularExpression) {
        checkPreconditions("writeRegularExpression", State.VALUE);
        doWriteRegularExpression(regularExpression);
        setState(getNextState());
    }

    @Override
    public void writeString(final String name, final String value) {
        writeName(name);
        writeString(value);
    }

    @Override
    public void writeString(final String value) {
        checkPreconditions("writeString", State.VALUE);
        doWriteString(value);
        setState(getNextState());

    }

    @Override
    public void writeSymbol(final String name, final String value) {
        writeName(name);
        writeSymbol(value);
    }

    @Override
    public void writeSymbol(final String value) {
        checkPreconditions("writeSymbol", State.VALUE);
        doWriteSymbol(value);
        setState(getNextState());
    }

    @Override
    public void writeTimestamp(final String name, final BsonTimestamp value) {
        writeName(name);
        writeTimestamp(value);
    }

    @Override
    public void writeTimestamp(final BsonTimestamp value) {
        checkPreconditions("writeTimestamp", State.VALUE);
        doWriteTimestamp(value);
        setState(getNextState());
    }

    @Override
    public void writeUndefined(final String name) {
        writeName(name);
        writeUndefined();
    }

    @Override
    public void writeUndefined() {
        checkPreconditions("writeUndefined", State.VALUE);
        doWriteUndefined();
        setState(getNextState());
    }

    /**
     * Returns the next valid state for this writer.  For example, transitions from {@link State#VALUE} to {@link State#NAME} once a value
     * is written.
     *
     * @return the next {@code State}
     */
    protected State getNextState() {
        if (getContext().getContextType() == BsonContextType.ARRAY) {
            return State.VALUE;
        } else {
            return State.NAME;
        }
    }

    /**
     * Checks if this writer's current state is in the list of given states.
     *
     * @param validStates an array of {@code State}s to compare this writer's state to.
     * @return true if this writer's state is in the given list.
     */
    protected boolean checkState(final State[] validStates) {
        for (final State cur : validStates) {
            if (cur == getState()) {
                return true;
            }
        }
        return false;
    }

    /**
     * Checks the writer is in the correct state. If the writer's current state is in the list of given states, this method will complete
     * without exception.  Throws an {@link java.lang.IllegalStateException} if the writer is closed.  Throws BsonInvalidOperationException
     * if the method is trying to do something that is not permitted in the current state.
     *
     * @param methodName  the name of the method being performed that checks are being performed for
     * @param validStates the list of valid states for this operation
     * @see #throwInvalidState(String, org.bson.AbstractBsonWriter.State...)
     */
    protected void checkPreconditions(final String methodName, final State... validStates) {
        if (isClosed()) {
            throw new IllegalStateException("BsonWriter is closed");
        }

        if (!checkState(validStates)) {
            throwInvalidState(methodName, validStates);
        }
    }

    /**
     * Throws an InvalidOperationException when the method called is not valid for the current ContextType.
     *
     * @param methodName        The name of the method.
     * @param actualContextType The actual ContextType.
     * @param validContextTypes The valid ContextTypes.
     * @throws BsonInvalidOperationException when the method called is not valid for the current ContextType.
     */
    protected void throwInvalidContextType(final String methodName, final BsonContextType actualContextType,
                                           final BsonContextType... validContextTypes) {
        String validContextTypesString = StringUtils.join(" or ", Arrays.asList(validContextTypes));
        throw new BsonInvalidOperationException(format("%s can only be called when ContextType is %s, "
                                                       + "not when ContextType is %s.",
                                                       methodName, validContextTypesString, actualContextType));
    }

    /**
     * Throws a {@link BsonInvalidOperationException} when the method called is not valid for the current state.
     *
     * @param methodName  The name of the method.
     * @param validStates The valid states.
     * @throws BsonInvalidOperationException when the method called is not valid for the current state.
     */
    protected void throwInvalidState(final String methodName, final State... validStates) {
        if (state == State.INITIAL || state == State.SCOPE_DOCUMENT || state == State.DONE) {
            if (!methodName.startsWith("end") && !methodName.equals("writeName")) { // NOPMD
                //NOPMD collapsing these if statements will not aid readability
                String typeName = methodName.substring(5);
                if (typeName.startsWith("start")) {
                    typeName = typeName.substring(5);
                }
                String article = "A";
                if (Arrays.asList('A', 'E', 'I', 'O', 'U').contains(typeName.charAt(0))) {
                    article = "An";
                }
                throw new BsonInvalidOperationException(format("%s %s value cannot be written to the root level of a BSON document.",
                                                               article, typeName));
            }
        }

        String validStatesString = StringUtils.join(" or ", Arrays.asList(validStates));
        throw new BsonInvalidOperationException(format("%s can only be called when State is %s, not when State is %s",
                                                       methodName, validStatesString, state));
    }

    @Override
    public void close() {
        closed = true;
    }

    @Override
    public void pipe(final BsonReader reader) {
        pipeDocument(reader);
    }

    private void pipeDocument(final BsonReader reader) {
        reader.readStartDocument();
        writeStartDocument();
        while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
            writeName(reader.readName());
            pipeValue(reader);
        }
        reader.readEndDocument();
        writeEndDocument();
    }

    private void pipeArray(final BsonReader reader) {
        reader.readStartArray();
        writeStartArray();
        while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
            pipeValue(reader);
        }
        reader.readEndArray();
        writeEndArray();
    }

    private void pipeJavascriptWithScope(final BsonReader reader) {
        writeJavaScriptWithScope(reader.readJavaScriptWithScope());
        pipeDocument(reader);
    }

    private void pipeValue(final BsonReader reader) {
        switch (reader.getCurrentBsonType()) {
            case DOCUMENT:
                pipeDocument(reader);
                break;
            case ARRAY:
                pipeArray(reader);
                break;
            case DOUBLE:
                writeDouble(reader.readDouble());
                break;
            case STRING:
                writeString(reader.readString());
                break;
            case BINARY:
                writeBinaryData(reader.readBinaryData());
                break;
            case UNDEFINED:
                reader.readUndefined();
                writeUndefined();
                break;
            case OBJECT_ID:
                writeObjectId(reader.readObjectId());
                break;
            case BOOLEAN:
                writeBoolean(reader.readBoolean());
                break;
            case DATE_TIME:
                writeDateTime(reader.readDateTime());
                break;
            case NULL:
                reader.readNull();
                writeNull();
                break;
            case REGULAR_EXPRESSION:
                writeRegularExpression(reader.readRegularExpression());
                break;
            case JAVASCRIPT:
                writeJavaScript(reader.readJavaScript());
                break;
            case SYMBOL:
                writeSymbol(reader.readSymbol());
                break;
            case JAVASCRIPT_WITH_SCOPE:
                pipeJavascriptWithScope(reader);
                break;
            case INT32:
                writeInt32(reader.readInt32());
                break;
            case TIMESTAMP:
                writeTimestamp(reader.readTimestamp());
                break;
            case INT64:
                writeInt64(reader.readInt64());
                break;
            case MIN_KEY:
                reader.readMinKey();
                writeMinKey();
                break;
            case DB_POINTER:
                writeDBPointer(reader.readDBPointer());
                break;
            case MAX_KEY:
                reader.readMaxKey();
                writeMaxKey();
                break;
            default:
                throw new IllegalArgumentException("unhandled BSON type: " + reader.getCurrentBsonType());
        }
    }

    /**
     * The state of a writer.  Indicates where in a document the writer is.
     */
    public enum State {
        /**
         * The initial state.
         */
        INITIAL,

        /**
         * The writer is positioned to write a name.
         */
        NAME,

        /**
         * The writer is positioned to write a value.
         */
        VALUE,

        /**
         * The writer is positioned to write a scope document (call WriteStartDocument to start writing the scope document).
         */
        SCOPE_DOCUMENT,

        /**
         * The writer is done.
         */
        DONE,

        /**
         * The writer is closed.
         */
        CLOSED
    }

    /**
     * The context for the writer. Records the parent context, creating a bread crumb trail to trace back up to the root context of the
     * reader. Also records the {@link org.bson.BsonContextType}, indicating whether the writer is reading a document, array, or other
     * complex sub-structure.
     */
    public class Context {
        private final Context parentContext;
        private final BsonContextType contextType;
        private String name;

        /**
         * Creates a new instance, copying values from an existing context.
         *
         * @param from the {@code Context} to copy values from
         */
        public Context(final Context from) {
            parentContext = from.parentContext;
            contextType = from.contextType;
        }

        /**
         * Creates a new instance.
         *
         * @param parentContext the context of the parent node
         * @param contextType   the context type.
         */
        public Context(final Context parentContext, final BsonContextType contextType) {
            this.parentContext = parentContext;
            this.contextType = contextType;
        }

        /**
         * Returns the parent context.  Allows users of this context object to transition to this parent context.
         *
         * @return the context that came before this one
         */
        public Context getParentContext() {
            return parentContext;
        }

        /**
         * Gets the current context type.
         *
         * @return the current context type.
         */
        public BsonContextType getContextType() {
            return contextType;
        }

        /**
         * Copies the values from this {@code Context} into a new instance.
         *
         * @return the new instance with the same values as this context.
         */
        public Context copy() {
            return new Context(this);
        }
    }

    /**
     * Capture the current state of this writer - its {@link org.bson.AbstractBsonWriter.Context}, {@link
     * org.bson.AbstractBsonWriter.State}, field name and depth.
     */
    protected class Mark {
        private final Context markedContext;
        private final State markedState;
        private final String currentName;
        private final int serializationDepth;

        /**
         * Creates a new snapshopt of the current state.
         */
        protected Mark() {
            this.markedContext = AbstractBsonWriter.this.context.copy();
            this.markedState = AbstractBsonWriter.this.state;
            this.currentName = AbstractBsonWriter.this.context.name;
            this.serializationDepth = AbstractBsonWriter.this.serializationDepth;
        }

        /**
         * Resets the {@code AbstractBsonWriter} instance that contains this {@code Mark} to the state the writer was in when the Mark was
         * created.
         */
        protected void reset() {
            setContext(markedContext);
            setState(markedState);
            AbstractBsonWriter.this.context.name = currentName;
            AbstractBsonWriter.this.serializationDepth = serializationDepth;
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
Home News A taxing dilemma: Sales tax question to impact Wood River's future
Flooding to close lanes on U.S. 67 between river bridges
L&C to celebrate first Career Signing Day on April 23
A taxing dilemma: Sales tax question to impact Wood River's future
As election approaches, Wood River rec center, flood alleviation projects hang in the balance
by Nathan Grimm
In an attempt to illustrate the difference in sales tax between Wood River and surrounding communities, Mayor Cheryl Maguire went around and bought the same cheeseburger at McDonald's restaurants in Wood River, Alton, East Alton, Godfrey and Bethalto.
Mayor Cheryl Maguire knows it's a long road ahead, with plenty of hurdles along the way — the first and biggest coming in just a few days — but it's a road she thinks will lead the city to a better tomorrow.
Maguire and city officials are working to get the word out ahead of the April 2 consolidated election regarding the city's desire to impose a 1 percent sales tax on general merchandise. Maguire said the revenue is needed to undertake large-scale projects that the city would like to begin in the coming years, projects that can't or won't be done on the backs of homeowners.
Those projects include housing redevelopment and mandated infrastructure work, but the most notable is the discussion of a public-use recreation center on the site of the former Aquatic Center. Maguire said the space would offer year-round use and would likely include an indoor gymnasium, rooms for gymnastics and activities, and an elevated track, among other amenities.
A center that can be used year-round, rather than keeping open or rebuilding a pool that's open for 85 days a year, is the "responsible path to take," Maguire said.
"There's a reason why communities around us are building rec centers," she said. "It's a need. People want someplace to go year-round, they want someplace safe. It's just one more entity that lends to the quality of life."
And while imposing an additional sales tax isn't ideal, Maguire said the city believes it is the best option among a list of less-than-perfect alternatives.
"We felt like this was the most painless way to bring in additional revenue," Maguire said.
Big ideas, little funding
The idea began to grow last May, when Maguire was asked to speak at a meeting for local real estate agents. She talked about the growing trend of older houses in Wood River being bought and rehabilitated, but also lamented the fact that so many of the city's homes still remain in a floodplain, limiting the potential for even more progress.
Getting those 160-plus homes out of the floodplain would require millions of dollars, though — Maguire said a 2014 study estimated the cost of upgrading the retention pond near Sixth Street from a 50- to a 100-year flood level would be $4 million to $5 million — money the city doesn't have in its reserves.
"We just don't have it in the coffers," Maguire said. "So we felt like, 'Let's take it to the voters. What do you want to see?'"
Last July, the city kicked off a series of public meetings, five in all, to get citizens' input on the topic. Along with infrastructure — including alleviating flooding, and also separating the city's aging stormwater and wastewater systems as required by law — a citizens committee said they viewed housing and quality of life improvements, such as a recreation center to replace the popular, recently demolished Wood River Aquatic Center, as top priorities for the city moving forward.
A design of the proposed recreation center the city would build with revenue from the 1 percent sales tax increase.
The next question officials asked themselves was: if those improvements were to be made, how would the city pay for it? After kicking around a number of options, including seeking out grants, pursuing a public-private partnership, increasing property taxes and reducing staff, the sales tax increase was deemed the least burdensome and most fiscally responsible way to make improvements without affecting services.
The numbers, Maguire says, bear that out. Currently, 60 percent of the money spent in Wood River is by non-residents. The city also has a lower sales tax compared to neighboring municipalities — Maguire went around to local McDonald's restaurants and bought a hamburger at each one, laying out the receipts to show that, after sales tax, the same 99-cent hamburger cost a penny less in Wood River than in nearby Alton, Godfrey, East Alton and Bethalto — so the additional 1 percent tax, according to Maguire, would merely pull them even with their neighbors.
'Where does it stop?'
Not everyone is cheering the tax increase, though.
Jeremy Plank, chairman of the Madison County Republican Party and a Wood River resident since 2005, said voters should think twice before giving the thumbs up to another tax increase.
"Every time a city can't live within its means, the answer is always to pile on more taxes," Plank said. "It's bad enough that the state is trying to raise taxes, the school district raises our taxes every year, and now the city wants a new tax. Where does it stop?"
Plank cited a previous regime's failure to submit renewal paperwork on time for one of the city's TIF districts and the recent shuttering of the Aquatic Center as examples of instances where the city has taken unnecessary losses.
Plank also said he would like to see more limitations on the proposed tax "before opening our wallets."
"If there was some sort of sunset provision on this sales tax, or if the use of the funds was more restricted to a specific need, like infrastructure, I might be a little more open to the idea," Plank said. "But it looks like we're just giving the mayor a blank check and hoping past results aren't going to be an indication of future performance."
Maguire said that, on the contrary, she believes the city is demonstrating accountability by taking the question to the voters, and "not just raising sales tax on our own like other cities in our area."
"The taxpayers of Wood River are at a clear disadvantage by having a lower sales tax than our neighboring communities, by receiving less sales tax for essential projects," she said. "An increase of 1 percent would level the playing field for us with the surrounding cities.
"The city council refuses to raise property taxes for these projects and is putting a sales tax before the citizens, who have said they want infrastructure, quality of life (rec center) and redevelopment of housing. The city is being accountable and getting out accurate information to its citizens. We are looking toward the future and the progress that is possible."
Plank said he believes that while a lower sales tax might mean less money coming into the city's coffers, it offers other benefits when trying to attract businesses and residents.
"Mayor Maguire makes the argument that our sales tax being lower than surrounding communities is a bad thing. I think it's something that we should be celebrating," Plank said. "It's a competitive advantage."
If passed, the city would begin collecting the tax — Maguire said estimates conservatively project it to bring in an extra $1 million annually — but couldn't touch it for projects for the first year, per the law. The city could then bond out the projects and begin work shortly thereafter.
If it doesn't pass, the path forward is less clear. Maguire said the city will still have to do some of the projects, like the separation of the stormwater and wastewater systems, regardless of whether they receive the additional sales tax revenue. Those would likely have to be done in increments, with either the help of matching grants or by savings from other areas.
A design of the proposed recreation center, which would be on the property of the recently demolished Wood River Aquatic Center.
Other projects, such as the recreation center, would be put on hold indefinitely. What the City Council has no desire to do, Maguire said, is raise property taxes in the absence of the additional sales tax revenue.
"The council right now is totally against raising property taxes to tackle some of these projects," Maguire said.
Ultimately, the question, and the path on which the city will embark in the coming years, will be decided by the ones most greatly impacted — the city's residents. Whichever way it goes, April 2 is shaping up to be a pivotal date for the city's future.
"We can't maintain and hope for the best," Maguire said. "You have to have a plan to move forward."
Wood River, IL featured

redpajama_set_name: RedPajamaCommonCrawl


It's Hard To Grow Inside Your Comfort Zone | Femspirational Mug | Quot - Femallay Inc.
It's hard to grow inside your comfort zone.
Everything is printed on demand using high quality products and inks, and we ask that you please allow up to 5 days to print and ship. Femspirationals are processed and shipped from a separate location than our feminine wellness products.


Thread: What heart rate monitor do you use?
I'm thinking of adding a heart rate monitor. There are so many out there, I don't know where to start. I just switched to Strava to record my rides and they sell them. Anyone have it? Likes, dislikes? I'm not a racer, just trying to lose weight and get better on the bike. Thanks!
I have not used a heart rate monitor in a long time. I had a Polar monitor and cycle computer, but never really used the information from the monitor for training, so when the battery died I didn't bother to replace it.
If I got one now I would look into one from Garmin, just because I have a Garmin on my bike already.


Excellent quality and it fits perfectly!
This vest being fit to size was perfect. Extra soft.
I was satisfied with the sweater.
Functional and fantastic, this cashmere-merino vest is perfect for keeping warm and looking smart, Monday to Friday. Crafted from soft, and cozy cashmere-merino, this versatile vest feels as good as it looks! Try layering it over smart and casual shirts, and add it to chinos and jeans - it'll work well with all your stylish staples! Why not find your favorite shade and invest in classic style today?


Detroit-based muralist Ouizi explores the relationship between music and spirituality with a shrine-like installation for this year's Movement Artist-in-Residence program, in-partnership with 1xRUN. The piece is intended to be an open-ended experience, leaving the audience free to immerse themselves through Ouizi's signature artwork and masterful designs. "I do hope people feel spiritually lifted because that's what I feel when I make the work," she says. See Ouizi's installation at the amphitheater near the Pyramid Stage. The 2018 Movement Artist-in-Residence program is presented by Quicken Loans.


Furniture Storefront suggests the Front Cabinet manufactured by Sarreid furniture. From the farmhouse collection, glass front is scene stealer. We think its size will gain attention privately rejoice that the storage display areas suit you so well. fixed Distinctive home furnishing.
Copyright 2017-2019 Furniture-Storefront.com. Home redesign. All rights reserved.


We see that you are using Firefox as your browser. Here are some quick steps for setting m as your homepage! Drag the m icon up and drop it into.
Select "Yes" from the pop-up window. OR, click on Tools and select Options. Select the Main tab on the left. In the Home page text field free slot game downloads hunter online casino games for fun online enter "m". Click OK.


(JOHNS CREEK, GA) -- Johns Creek was given more money than any other newly incorporated city ever in the state of Georgia. Upon incorporation, Mayor Mike Bodker was given more power than any other Mayor in the state of Georgia.
And here we are, more than 14 months after Johns Creek became a city on Dec. 1, 2006 and Mayor Bodker has failed to build either a Fire Department or Police Department for his tax paying citizens of Johns Creek!
Another fire took place in Johns Creek yesterday; this was the third home fire in the subdivision of Rivermont in the last four months. This does not include the countless other fires that have taken place in Johns Creek that have cost Johns Creek residents their homes and unfortunately for some, their lives.
According to Lt. Greg Chambers, Fulton County Fire Department�s public information officer, Fulton Fire Rescue Engine Companies No. 8, 12 and 20 responded to the fire yesterday in Rivermont, along with Roswell�s Engine Company No. 4, and Fulton County�s Light and Air Unit 8 and Battalion Chief No. 4. Sawneee Electric was also at the scene to manage any downed electrical lines in the area. Yet there were no Johns Creek fire trucks to show up to the fire in Johns Creek.
According to a January 17 press release on the official City of Johns Creek website (www.johnscreekga.gov) the city hired its first Fire Chief, effective January 28, 2008. But according to the same press release, the new Fire Chief and Johns Creek do not expect to have its Fire Department operational until at least August of this year. This would be a full 20 months after the city of Johns Creek incorporated.
To date, the Cornetta Charitable Foundation has raised nearly $3,000 and has held three different fundraisers to assist the city of Johns Creek in developing a Fire Department. John Cornetta, owner of the Love Shack stores, has also donated more than $2,000 of his own money.
Cornetta said, ''This is getting out of control now. I remember the cry for Johns Creek to become a city. It was always �oh we�re tired of paying all of these taxes for South Fulton and to keep Grady Hospital open� things like that. The city of Johns Creek was formed and what is one of the first things this mayor does? He raises taxes and lowers basic services!
''He builds himself a town hall with nice new furniture, hires out of state legal advisers as basically hired guns, and with totally disregard to human life forgets basic services like fire and police protection. I swear this man could not manage a chicken coup. What has he ever done in his life to prepare him for this job? What? Nothing, that�s what. And his complete incompetence and arrogance are costing lives and it is beginning to piss me off.
''Mike, why don�t you spend a few more dollars attempting to close the Love Shack as obviously consenting adults watching a DVD in their home is much more dangerous to the citizens of Johns Creek than not having fire and police protection.
We have to ask Mayor Mike Bodker the hard questions. With now more than $150,000 spent by the city on out of state attorney�s and other costs, could Johns Creek have formed a fire and police department? The answer is yes.


Why Do Professional Painters Wear White?
The answer involves caulk, plaster, and 19th-century European labor unions.
Ever wonder why professional painters are almost always dressed in head-to-toe white? You're not alone. "It's one of the most commonly asked questions in the paint industry," says Craig Bunting, director of professional segment at Benjamin Moore.
While there's no one definitive answer, Bunting explains, "The general consensus is that painters began wearing whites because the vast majority of the materials they use are white—not just paint, but many of the preparation materials too, such as spackle, plaster, and caulk." (It is worth noting that nearly half of Benjamin Moore's 100 most popular colors are, in fact, white.) "Invariably, these materials find their way onto even the most meticulous painter's clothing, so the white backdrop provides the best chance to hide drips and splatter."
There's also historic precedent, Bunting notes. "White was considered a 'uniform' for some European labor unions in the 19th century, so it's safe to say that whites have been worn in the paint industry for at least 200 years."
So there you have it: 19th-century labor unions plus caulk equals white coveralls. But what if you hire a painter and he or she isn't wearing white? Should you be concerned? "Not necessarily," says Bunting. "Even though whites are standard, there's no correlation between a painter's skills and their chosen attire. It's a better bet to rely on referrals, reviews, and experience when hiring a painting contractor."


text:
Playoff Prep: Bracket for 4A South
GeneralBy Andy Hilton November 3, 2014 Leave a comment
by Andy Hilton, recruit757 There's one week of games left, for the teams that still have a game to play. Playoff positions are almost set, but there's still time for a few teams to make a move. Here's what the 4A South bracket would look like if the playoffs started this weekend: 4A South #16 Denbigh (3-7) at…
Playoff Prep: Bracket for 3A East
GeneralBy Andy Hilton November 3, 2014 1 Comment
by Andy Hilton, recruit757 There's one week of games left, for the teams that still have a game to play. Playoff positions are almost set, but there's still time for a few teams to make a move. Here's what the 3A East bracket would look like if the playoffs started this weekend: 3A East #16 Southampton (3-6) at…
by Andy Hilton, recruit757 There's one week of games left, for the teams that still have a game to play. Playoff positions are almost set, but there's still time for a few teams to make a move. Here's what the 2A East bracket would look like if the playoffs started this weekend: 2A East #16 Bruton (2-7) at…
by Andy Hilton, recruit757 There's one week of games left, for the teams that still have a game to play. Playoff positions are almost set, but there's still time for a few teams to make a move. Here's what the 1A East bracket would look like if the playoffs started this weekend: 1A East #16 Cumberland (2-7) at…
Priority Registration Extended: recruit757 Uncommitted Senior Showcase
by Andy Hilton, recruit757 This year, we're planning ahead. We hope you are too. We've extended priority registration until November 15. You can register in advance for only $50. Get in now! We had a huge success last year and we're doing it again! The recruit757 Uncommitted Senior Showcase returns to Bishop…
Travis Williams: An Example Of Talent Flow In FCS
by Jay Parchman, recruit757 For the schools fully committed to the FCS level of college football (formerly "1-AA"), a constant influx of transfer talent immediately eligible from the FBS is the norm. Former Lake Taylor Linebacker Travis Williams has now experienced both sides of that issue as the end of his fifth and final season…
Vote Now: B-Dubs Player of the Week!
GeneralBy Andy Hilton November 2, 2014
by Andy Hilton, recruit757 We're now headed into the final week of the season. We've had some great athletes win the award this year. We're not done yet! You have eight great options for player of the week, and whether you're from the Beach, Williamsburg, or anywhere in between, we think you'll find…
Ocean Lakes Football Wins Big, Then Walks For Charity
by Andy Hilton, recruit757 It was a busy day for Ocean Lakes football. Not only did the Dolphins keep their record perfect on the season with a 59-8 win over Princess Anne, but they also took time out to do a good deed. Princess Anne led by a score of 8-7 with three minutes…
Bryce Stars In Poquoson Win
by John Harvey, recruit757 YORK – Ethan Bryce's football cleats have a Captain America theme design on the heel of the shoe. The homage to the Marvel Comics superhero was apropos of his performance Saturday afternoon for Poquoson High's football team during a 26-19 victory over Grafton at Bailey Field. The senior scored a pair…
Phoebus Stumbles To Finish The Season
by Andy Hilton, recruit757 Is it a changing of the guard? Friday night, Phoebus stumbled to the finish while Kecoughtan made another step forward. Heritage may have won the now mythical Peninsula District title, but Kecoughtan has shown the most progress, running their record to 8-2 on the year. Friday night's game was far from…
23456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781
787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976
Joe Kagel - C
School:Bishop Sullivan c/o 2021
Height: 6-2 | Weight: 265 lbs.


text:
Supercard DSTWO: Multifunctional 2nd Generation Flashcard
Today DSTWO is the next generation flashcard and SuperTeam had been working for almost a year to come up with this technology. Today it has not only incorporated the benefits of DSONE to provide some extra functions. You can combine its advantage with DSiplayer that operates HD movies and tunes. It will hold high amount and exceptional purpose to play media and film games.
Supercard DSTWO is the successor of SupercardDSonei. This is second in line and has a powerful built-in CPU fixed into the cartridge. This powerful CPU can perform some of the unthinkable actions like built-in Game Boy Advance (GBA) emulator, powerful Super Nintendo Entertainment System(SNES) Emulator, AVI and DivX video playback.
2012 is going to a fascinating year as far as portable games are concerned. This time 3 DS has finally hit the stride as there are number of potential gamers that want to play games during their free time. Over the few years mobile gaming industry has changed a lot. This is because it has opened up many avenues on technical level. One can say that it is a toy box of input opportunities. Millions around the world play portable games because people like to love in virtual world.
Supercard DSTWO has an in-built CPU designed for Nintendo, DS, DS lite, DSi and DSiXL.With the help of this flashcart you can store an array of games, play media and run applications directly from device. It has a well updated flashcard which gives a new update every month. The operating system of flashcard is about 50 MB. It can emulate GPU and is known for its powerful functions.
This flashcard has become hype in gaming industry since its release in May 18, 2010. But its make has gained some controversy because of the way the cartridges have been designed. No doubt it is much sturdier than a rock. There is also a random screw which is on the right corner of the cart. DStwo can fit awkwardly into the NDS slot on Nintendo DS and Nintendo DSi. It seems as it has been forced with some vigor than normal.
By HotFunStuffs.com 0 Comments


Published 04/21/2019 09:30:04 pm at 04/21/2019 09:30:04 pm in Car Wash Degreaser.
car wash degreaser private label super clean car wash heavy duty engine surface degreaser water based foaming spray engine crc industries car wash wax supplies on sale kmart crc industries crc instasolv light duty degreaser oz aerosol can clear.
car wash business plan templates free sample example format car wash business plan sample, degreaser images stock photos vectors shutterstock closeup red car wash spraying degreaser on paint, dazzle degreaser blue tire shine tire rim cleaner car wash dazzle degreaser blue tire shine tire rim cleaner car wash , safe car wash cleaning products ml automotive engine bay safe car wash cleaning products ml automotive engine bay cleaner degreaser, expresscarwashenginedegreaserlitre shield express expresscarwashenginedegreaserlitre, simple green allpurpose cleaner and degreaser allpurpose cleaner and degreaser, best engine degreaser december stunning reviews updated best engine degreaser december stunning reviews updated bonus, tar remover truck cleaner degreaser tar and asphalt remover, welcome to best supreme car wash and detail supplies wax polishes when it comes to car wash and detailing supplies youre just on the right page, sponge tech car wash system pc wash wax sponge chamois sponge tech car wash system pc wash wax sponge chamois usa, amazoncom d yellow degreaser wheel tire cleaner gallon product description.


text:
Peter Rott (* 8. August 1968 in Ettlingen) ist ein deutscher Rechtswissenschaftler.

Leben
Nach dem 1987 Abitur studierte er von 1988 bis 1992 Rechtswissenschaft mit wirtschaftswissenschaftlicher Zusatzausbildung an der Universität Bayreuth (1993 erstes Staatsexamen/1993 Abschluss der wirtschaftswissenschaftlichen Zusatzausbildung). Nach dem Referendariat (1994–1996) am OLG Bamberg (zweites Staatsexamen 1996) war von 1996 bis 2000 wissenschaftlicher Assistent bei Hans-W. Micklitz, Lehrstuhl für Privatrecht, insbesondere Handels-, Gesellschafts- und Wirtschaftsrecht (Jean Monnet Chair), Universität Bamberg. Von 2000 bis 2003 war er Lecturer in European Private Law, University of Sheffield. Nach der Promotion 2002 an der  Universität Erlangen-Nürnberg war er von 2003 bis 2010 Juniorprofessor für Bürgerliches Recht mit dem Schwerpunkt Europäisches Privatrecht, Universität Bremen. Von 2010 bis 2014 lehrte er als Associate Professor in European Private Law, Universität Kopenhagen. Von 2014 bis 2020 war er Professor für Bürgerliches Recht, Europäisches Privatrecht und Verbraucherrecht, Universität Kassel. Von 2019 bis 2020 war er Gastprofessor an der Universität Gent. Zurzeit ist er Lehrstuhlvertreter für Bürgerliches Recht, Handels- und Wirtschaftsrecht sowie Rechtsinformatik an der Universität Oldenburg.

Seine Forschungsschwerpunkte sind europäisches Privat- und Wirtschaftsrecht, europäisches und deutsches Verbraucherrecht und internationales Privatrecht.

Schriften (Auswahl)
 Die Umsetzung der Haustürwiderrufsrichtlinie in den Mitgliedstaaten. Baden-Baden 2000, ISBN 3-7890-6652-4.
 Patentrecht und Sozialpolitik unter dem TRIPS-Abkommen. Baden-Baden 2002, ISBN 3-7890-8135-3.
 mit Axel Halfmeier und Eberhard Feess: Kollektiver Rechtsschutz im Kapitalmarktrecht. Evaluation des Kapitalanleger-Musterverfahrensgesetzes. Frankfurt am Main 2010, ISBN 978-3-940913-15-9.
 Gutachten zur Erschließung und Bewertung offener Fragen und Herausforderungen der deutschen Verbraucherrechtspolitik im 21. Jahrhundert für den Sachverständigenrat für Verbraucherfragen beim Bundesministerium der Justiz und für Verbraucherschutz. Berlin 2016.

Weblinks
 uol.de

Einzelnachweise

Rechtswissenschaftler (21. Jahrhundert)
Hochschullehrer (Universität Kassel)
Deutscher
Geboren 1968
Mann

redpajama_set_name: RedPajamaWikipedia


text:
FIX DACA NOW: Pass Bipartisan "Phase One" Bills
Trump eliminated the DACA program and his incoherent and racist policy positions are propelling the government toward a second shutdown. Bipartisan bills have been introduced in the House and Senate that can resolve the crisis. Speak out publicly in support of DACA, and tell your MoC: no more delays. Support the bipartisan "Phase One" bills and solve the DACA crisis before their time runs out.
Trump Administration & Federal Govt Working Group C2A
Update 2/9: A budget deal passed, extending the deadline until March 23, and laying the groundwork for a massive two-year spending plan. Immigration is expected to move to the Senate floor for debate next week, but what happens in the House remains unclear. We are monitoring the issue closely, and will have updated action and talking points once we learn more. Stay tuned!
Drawing worldwide condemnation for his racist remarks, Trump turned down a popular bipartisan immigration plan and propelled the government into a 3-day shutdown. The shutdown spurred an agreement that delayed the budget deadline until Feb 8, reauthorized CHIP for six years, and assured a vote to resolve DACA. Following the shutdown, the White House released its own immigration framework, which provided a path to citizenship for 1.8 million unauthorized immigrants who came to the country as children in exchange for a $25 billion border wall; shifting diversity visa lottery slots to a merit-based program; and preventing people from sponsoring their parents, adult children, or siblings to immigrate to the US. The plan was met with stiff opposition from both parties as well as from immigration rights advocates. Democrats called the cuts to legal immigration and family unification cruel, and Republicans balked at the generous number of immigrants eligible to earn citizenship. United We Dream activists decried the plan as pitting Dreamers against their parents and other immigrants. This week Senators John McCain (R-AZ) and Christopher Coons (D-DE) introduced a bipartisan bill based on the concept of the two phase approach Trump agreed to on Jan. 9, with the first phase resolving DACA and increasing border security, and the second phase tackling comprehensive immigration reform. The McCain-Coons bill mirrors the bipartisan House bill that follows the Phase One approach, HR 4796: the USA Act of 2018 introduced by Will Hurd (R-TX) and Pete Aguilar (D-CA). The USA Act currently has a sizable bipartisan group of 53 co-sponsors (Pingree and Poliquin are not currently among them). Immigration hardliner Bob Goodlatte (R-VA) has his introduced his own bill, HR 4760, that has amassed 85 co-sponsors, but has not attracted any bipartisan support. Immigrants rights groups like United We Dream continue to call for passage of a clean DREAM Act, but acknowledge that a successful bipartisan solution may take a different path.
[Please note: this action assumes that a DACA resolution will be presented as an individual bill. If it instead gets folded into the budget resolution, we will have a new set of recommendations and talking points.]
Call or write all three of your Members of Congress (see talking points below).
Speak out publicly on social media in support of Dreamers. If another shutdown happens, winning the PR battle is incredibly important, and every voice is needed in that effort. SHARE THIS VIDEO that simply and effectively explains what DACA is, and SHARE THIS VIDEO to introduce others to some of the Dreamers at risk.
Do some Click To Tweeting with help from our friends at United We Dream.
Most Importantly: Trump created this crisis when he signed the executive order ending the DACA program, and his incoherent and racist statements dashed a popular bipartisan plan and propelled our government into a shut down. Lawmakers from both parties are putting forth good faith efforts to compromise. If the government is once again forced into a shut down, Trump will have only himself to blame.
Importantly: Any serious effort to provide a solution for the Dreamers must be narrow. Ideally, it should pair the Dream Act with accountable border security. All other issues – good and bad – should be held over to a second round of discussions and debate.
For Senators: Ask them to support the McCain-Coons bill, and let them know that you still expect them to HOLD THE LINE when it comes to a final budget resolution. Without a DACA fix in place, there can be no budget.
For House Reps: Ask them to sponsor the Hurd-Aguilar USA Act. Tell Poliquin to OPPOSE HR 4760 if it comes up for vote, and thank Pingree for her vocal opposition.
Remind them that since Trump killed the DACA program, nearly 17,000 immigrant young people have lost their protection and millions who would be protected from deportation with the Dream Act have no protection at all.
Tell them that Maine's economy depends on immigrants, especially for our seasonal agricultural and tourism industries, and that we should increase, not decrease their numbers in our state.
Tell them to OPPOSE any bill that does not include a path to citizenship for Dreamers and return those who have been deported during this crisis.
Tell them OPPOSE any bill that defines border security as a physical border wall or increased ICE deportation forces.
Tell them to OPPOSE any bill that reduces legal immigration or family unification.
Tell them to OPPOSE all attempts to delay the budget vote further. NO additional continuing resolutions. DACA must be resolved before any budget can pass.


China's Ministry of Commerce (MOFCOM) on April 16, 2013�announced the clearance of the acquisition by Glencore International plc (Glencore) of Xstrata plc (Xstrata) subject to certain remedies.�The review took just over one year and appears to have been the longest review period by MOFCOM of a notification taken to conclusion.�Glencore filed the notification on April 12, 2012; MOFCOM six weeks later, on May 17, 2012, accepted the notification for review; and on June 15, 2012, extended the review beyond the 30-day Phase 1 into the 90-day Phase 2.�During the Phase 2 review, MOFCOM determined that�there were possible exclusion or restriction effects on competition in the copper, zinc and lead product markets.�Because MOFCOM and the parties could not reach a resolution of MOFCOM's concerns, MOFCOM on September 14, 2012 extended Phase 2 with Glencore's consent for an additional 60 days to November 13, 2012.
During this period, Glencore�made two proposals to address MOFCOM's concern, but they were deemed inadequate.�With the clock running out, Glencore withdrew its notification on November 6, 2012, and filed a fresh notification on November 23, 2012 to restart the clock.�MOFCOM accepted the new notification for review on November 29, 2012, but it still proved impossible to agree on remedies during the new 30-day Phase 1.�The review was therefore extended again to Phase 2 on December 28, 2012, and then again on March 29, 2013, for up to an additional 60 days before an agreement was reached to resolve MOFCOM's concerns.
MOFCOM's published decision is generally more detailed than previous decisions imposing remedies in merger reviews.�Such additional detail is welcome and provides additional guidance regarding the review process in China.�In essence, it appears that�heightened concentration in worldwide markets for production, supply and trading in the three minerals on which China is highly import-dependent aroused MOFCOM's concerns regarding the impact on end-users.�Concern was directed in particular at the potential impact on trading patterns (regarding spot contracts vs. long-term agreed quantity and price contracts, especially for copper concentrate), vertical integration (from mine to trading house) and market entry barriers in a heavily resource-focused and capital-intensive industry.
MOFCOM expressed these concerns even though the individual and combined market shares of the merger parties on a worldwide or China basis are below the thresholds that generally raise concerns regarding anticompetitive effects in other jurisdictions.�Even in copper, for which China was 68.5% dependent on imports in 2011, Glencore's worldwide market share post-merger would be only 7.0% in production, 9.3% in supply and 9.5% in trading.�Looking at China alone, the post-merger entity's market share in supply would rise only from 13.3% to 17.8%.�The effects on zinc and lead market shares would be similarly modest.
MOFCOM nevertheless - after consultations with other government departments, relevant industry associations, downstream parties, competitors and experts - decided to impose hybrid structural and behavioral remedies to reduce the market share of the combined entity.�Any pro-competitive benefits�from the merger appear to have been officially discounted because they received no mention in the published decision.
MOFCOM seems to have encountered difficulty in crafting remedies acceptable to the parties that addressed its concerns and those of its constituents in a global market characterized by a high level of competition and cyclical demand.�As a result, the remedies seem modest, particularly in light of the long review period.�The key structural issue appears to have involved production.�Glencore agreed to (i) dispose of Xstrata's Las Bambas copper mine, now under development in Peru, according to a fixed schedule at what may prove to be a below-market price, with the likely purchasers presumably including Chinese companies; (ii) guarantee a minimum supply of 900,000 tonnes of copper concentrate to Chinese purchasers through 2020, including at least 200,000 tonnes at negotiated prices; and (iii) continue through 2020 to sell zinc and lead to Chinese purchasers under both long-term and spot prices at fair and reasonable levels.
This�case shows that although MOFCOM has cleared the overwhelming majority of mergers and acquisitions without remedies, those that have an impact on major domestic economic interests may continue to encounter difficulty. Although MOFCOM has published draft regulations on�early clearance during Phase 1 of non-controversial transactions, and indeed has already done so in some instances, China is likely to continue to be the last major jurisdiction to clear a transaction, partly because of the agency's inexperience but also to wait to clear the transaction until clearances have been obtained in other jurisdictions (even if it delays closing by months).�This case also shows that in some instances, the enforcement agency, i.e. MOFCOM, may feel the need to help achieve political-economic goals through merger review, e.g. increasing Chinese access to strategic resources or preserving the long-term contract system vs. spot pricing, even if the transaction does not raise traditional competitive concerns.�The case also shows that MOFCOM may have�particular concerns about mergers between foreign parties in industries on which China depends for inputs used in products that trade globally, particularly commodities, even as the Chinese government itself promotes concentrations among domestic firms in certain key industrial sectors.�Finally, the extent to which behavioral remedies were specified reveals MOFCOM's determination to enforce such remedies, even though it has�had difficulty doing so�in the past.


Welcome to your guide for salvation and Christianity, spelled out for us common folk. Theres no catch. Theres no forcing your hand. There are no membership fees. Come along for the ride and decide for yourself.
Two britains 27 6 - 294 Excursus D British Hagiographic Literature. Vitae Sanctorum. Lives of the Saints. Bucheddau y.
John Locke was one of the most famous philosophers during the Age of Enlightenment. Locke is often referred to as The Father of Liberalism and his writings influenced other great philosophers including Voltaire and Rousseau. This edition of The Reasonableness of Christianity includes a table of contents.
Welcome to your guide for salvation and Christianity, spelled out for us common folk. There's no catch. There's no forcing your hand. There are no membership fees. Come along for the ride and decide for yourself.
The subject of the ancient celibacy not to be evaded. AA principal element of ancient Christianity, and inseparable from the system.
The truth of thofe accounts; and that they all'o fub mitted from the fame-motives to new rules of conduct 14.


Adam Gilchrist hailed Virat Kohli a great leader and said it is time for both countries to put an end to the 'cheatgate' controversy before it turns into infamous 2008 'monkeygate' episode.
Australian cricket legend Adam Gilchrist hailed Virat Kohli a great leader and said it is time for both countries to put an end to the 'cheatgate' controversy before it turns into infamous 2008 'monkeygate' episode.
"Kohli?is a great leader. He drags his team and his nation with him," Gilchirst told PTI here last night while launching the Indian?sandalwood company's new name 'Quintis'.
"But?we can all move on and I'm glad that it has not escalated to the really nasty scenario in 2008 that dragged on and on," he said.
"Everyone was frustrated and that is a?part of history between the two teams," the legendary wicket-keeper batsman said.
"It has been a wonderful series.?So many people are saying to me it is the best series they have seen in India?since 2001. That (2001) series?was extraordinary and India came out on top but who knows what lays ahead," he added.


text:
Land Forces
Territorial Defence Forces
Stay informed! Sign up for our newsletter
Everyday new information, analyses, comments and press review straight to your mailbox.
I give my consent to personal data processing by Defence24 Sp. z o.o. with its seat in Warsaw, Foksal Street 18, (00-372 Warsaw) in order to dispatch the Newsletter. The data administrator is Defence24 Sp. z o.o. Personal data is collected only to dispatch the Newsletter. Personal data shall be processed during the process of administration the dispatch the Newsletter. Personal data shall not be available for recipient of the data in accordance with article 7 point 6 of the Personal Data Protection Act. The person who is the subject of the personal data has the right to access to the content of the personal data and is allowed to correct it. Disclosure of own personal data by the persons who are the subjects of the personal data is voluntary, nevertheless without the disclosure dispatching of the Newsletter is not possible.
I declare I have read the explanation regarding the right to access to the content of my personal data and the possibility to correct it. I am fully aware that my consent may be withdrawn at any time resulting in deleting my e-mail address and discontinuation of dispatching the Newsletter.
Another Saab Seminar on Submarines: Poland in the Background
Image Credit: Saab
Maksymilian Dura
Saab Kockums
Swedish Navy
gap-filler
Orka Programme
submarines for Poland
Disclosure of the information pertaining to the three most important programmes pursued by Saab Kockums was the most expected content during this year's Saab seminar on submarines, organized on 3rd September. The programmes in question include the A26 class for the Swedish Navy, submarines for the Netherlands' Navy, and the gap filler solution for the Polish Navy. Points not mentioned would be easier to list than the issues covered during the aforesaid seminar.
Swedish Parliament Discusses the Sale of Södermanland Submarines to Poland
Webinars have become a fixed element of the Saab's undertakings these days. Usually, three separate online conferences are held, covering the priority programmes pursued by the Swedish company. In March the seminar usually covers the Gripen MRCA, the September seminar covers the submarines, while the November one covers the sensors, primarily - the radars.
This year's conference on the submarines took place on 3rd September 2020. It differed from the previous editions, as no specific information of any sort was provided. The seminar involved a brief presentation of the warship industry in post-War Sweden. Rear Admiral Eva Skoog Haslum, the commander of the Swedish Navy, also recalled the important role that the submarines play in the Swedish defence system and the methodology of putting them into use in modern navies, a movie clip was played, showcasing the Saab Kockums facility, and, finally, a general mention was made with regards to the Saab's business intentions related to:
Submarine procurement programme run by the Netherlands;
Gap-filler solutions developed for the Polish Navy;
Current Swedish programmes: A19/Gotland-class upgrades and A26/Blekinge-class development.
A26/Blekinge Programme
The reserved stance when it comes to releasing of the details on advancements of the A26/Blekinge new generation submarine programme was the most surprising thing about the conference held on 3rd September 2020, as this is the flagship program pursued by Saab Kockums. The most important innovations of this vessel have been recalled, as well as the ones implemented on the A19/Gotland submarines. The innovative solutions listed included the following elements: AIP system (Stirling engine), non-penetrating mast, and the cylindrical MMP (Multi-Mission Portal) between the torpedo tubes that expands the SOF mission capability and the range of autonomous and remotely controlled underwater vehicles that the submarine could employ.
Alongside the generally known information on those vessels, no groundbreaking data was disclosed. No references were made with regards to advancements made in the case of the first A26 vessel that was presented in a visual form back in 2019.
This could mean that the level of advancement in this programme has not changed over the last year, while the programme itself could be suffering from some delays. Furthermore, if the movie clip showcased by Saab during the seminar, on the Saab Kockums facility, was shot recently, the delay may be significant (up to a few years). The clip has only shown the integrated stern section of the submarine and assembled engine/auxiliary section. Meanwhile, it needs to be said that the first A26 sub has been in construction since the mid-2015. If we refer to the previous schedule, at the current stage the hull assembly should be completed, with the hull being subjected to finishing works, while some of the onboard systems should begin testing already.
And maybe this is why Saab decided not to answer a simple question asked by us: "Will the A26 submarines be delivered, in line with the previous announcements - between 2024 and 2025?"
Gap-Filler for the Polish Navy: A17/Södermanland-class
No answer was provided to another two questions asked by us:
Is the scope of upgrades proposed for the A17/Södermanland of the Polish Navy identical to the one implemented on the A19/Gotland vessels offered to the Swedish Navy?
The Polish Navy is planning to use the A17/Södermanland vessels bought from Sweden as a gap-filler solution for at least 10 years. Is that even possible, because the maintenance cost was too high for the Swedish Navy?
What's interesting, the former question was read out, however, ultimately, no details have been disclosed on the scope of work envisaged for the submarines for the Polish Navy. Information as such could make it possible to create a preliminary cost estimate of the whole investment - that should additionally include the cost of overhauls and repairs that would need to be done on the vessels so that they could remain in active service for at least 10 years, in line with the assumptions made by the Polish MoD.
This could be explained by a Saab representative stating that the talks are happening at the governmental level, beyond the scope of influence of the company. So far one could only assume that Södermanlands would be fitted with a package identical to the one installed on the Gotland-class submarines, with that equipment also being expected to be integrated on the Blekinge-class. This would mean that the Polish vessels would feature a new AIP system, new sonars, and a new C2 suite. Would this investment be cost-effective for vessels expected to stay in service for just 10 years?
Furthermore, the Saab representatives suggest that their involvement in the Södermanland-class upgrades would be needed in both design, as well as at the stage of production. This could mean that Saab would be the main entity dealing with the Polish gap-filler solution, without a major involvement on the part of the Polish industry.
Saab Kockums: Export Prospects
When assessing the export capacity, the Swedes have prepared two slides showing that:
More than 300 submarines with displacements ranging from 1,000 to 4,000 tonnes are operated around the world; 2/3 of those vessels are more than 2 decades old, expecting imminent replacement;
Most of those vessels are stationed in Europe and Eastern Asia.
A presentation as such may suggest that demand for diesel/electric submarines would be huge all around the world and that Saab could sell its A26 derived new submarines globally. In reality, though, the slides referred to the global market that is partially unavailable to Sweden, including China, Russia, or even North Korea. The presentation itself has not mentioned any state other than the Netherlands or Poland, where Saab would be the preferred choice when it comes to submarines, not a single market on which it would be necessary for the Swedish shipyard to compete with German, French, Korean, Russian, or Chinese shipbuilding facilities.
The difficulties are significant, as Saab needed to withdraw its offer in the tendering procedure in India, back in 2019, aimed at delivering six conventional Project 75 India (P-75I) submarines. The Walrus-class replacement procurement procedure in the Netherlands is far from its completion, despite the cooperation established by and between Saab and the Dutch Damen company.
The only new tasking for Saab could be seen in an upgrade of the Collins-class submarines operated by the Australians, only if a modernisation as such is considered.
CommentsComments: 0
This is to notify that the Controller is Defence24 Sp. z o.o. with its seat in Warsaw, Foksal Street 18, (00-372 Warsaw). Personal data was submitted voluntary and shall be used only to dispatch and upload comments, control the content of comments before their publication and refusal of their publishing without specification the reason and also to delete unlawful, rude, offensive and any other comments which the Controller shall consider unlawful, including the content which may violate the rights of third parties (inter alia copyrights). The person, who is the subject of personal data, has the right to access to the content of the data and is allowed to correct it as well as withdraw the consent by contact the Controller. More information can be found in the Privacy Policy.
Polish Ministry of Defence: Four UAV Types to be Delivered Before 2022
Tesla's Gigafactory in Poland? A Task for the Polish National Foundation
AN/TPQ-49 - US Light Counter-Fire Radar
Piorun MANPADS Missile Programme Delayed. Deliveries Expected Soon
Polish Ministry of Defence: Chwałek and Łapiński Appointed New Deputy Ministers
What to do Next with the Weapons Purchases?
Digital PIAP Gryf Robot Procured by the Katowice Airport Border Guard Unit
Polish Military Procures IFF Markers for the Army
Polish BMP-1 Upgrade Programme Goes Forward. 3 Bidders Remaining
Poland Restarts Manufacturing of Periscopes for the Legacy Fighting Vehicles
IBCS in Poland: yesterday, today, tomorrow
Polish Narew System as an Element of National Security
Harpia, Wisła, Narew, Orka Gap-Filler - Despite the Pandemic. Polish Minister of Defence: There is a pool of top military priorities
Polish VSHORAD Air Defence Systems with Counter-UAS Capabilities
Will the Presidential Election Change the US Defence Posture? Gen. Hodges: A Strong European Pillar Needed
Tweets Defence24
RSS Terms of use Privacy and Cookie Policy Contact us


2012 Republican presidential nominee Mitt Romney announced on Twitter Wednesday he is delaying his scheduled announcement about the Utah Senate race, citing the school shooting in Parkland, Florida.
"As a father and grandfather, my heart aches for the victims of today's tragic events. My prayers go out to all of the families and loved ones affected by this senseless act of violence," Romney tweeted. "Out of respect for the victims and their families, I will not be making an announcement tomorrow about the Senate race."
Romney, a former Massachusetts governor, became one of his party's most outspoken critics of President Donald Trump's candidacy during the 2016 campaign, and as Utah GOP Sen. Orrin Hatch considered retirement, speculation grew that Romney -- who resides in Utah -- would seek to fill the seat.
At the beginning of the year, Hatch said he would not seek re-election, and Romney announced he would make a statement about his own political future on February 15. His decision to delay the announcement in light of the tragedy in Florida puts on hold for the time being his expected entry into the race for Senate in the heavily Republican state.


One Moment while we gather your account details.
Payment Processing: You can pay by check, MasterCard, Visa, establish a payment plan, print a payment plan schedule, review payment history, and more.
Submit / Send Correspondence: You can upload documents, submit information online, request telephone calls to stop, print a fax or mail cover-sheet to send with your correspondence, print a transaction acknowledgment for your records, and more.
Are you responding to a written notice or telephoned message?
We are required to make the following statement: This is an attempt to collect a debt and any information obtained will be used for that purpose. This communication is from a debt collector.


Here we are in rainy November. A good time for a moist, flavorful cake, I think. This one fits the bill perfectly. I've made it for a number of years and have never been disappointed. Full of the season's flavours, it could even be considered "healthy" with the use of whole wheat flour.
Preheat oven to 350F degrees. Butter and flour an 8 cup Bundt pan.
In a large bowl, combine the flour, spices, baking soda and salt. Stir to combine and set aside.
In a smaller bowl, whisk the eggs until foamy (you could certainly use a mixer for this.) Add the sugar, then the oil and pumpkin and mix until well blended.
Add the pumpkin mixture to the flour mixture and stir just until combined. Gently stir in the cranberries. Pour batter into the prepared Bundt pan. Bake for 50 minutes, or until a toothpick inserted in the center comes out clean. Cool in pan for 15 minutes, then turn out onto a rack.
OH YUMMY, I am making this!!!


text:
From Idlib to Afrin, Erdogan's 'the last supper'
by Gokcan Aydogan 15/01/2018 15:23
According to the legend, Midas' father, Gordios, is a poor villager, who came to the Phrygian city with an ox cart and was declared king by a prophecy. After the new king is proclaimed, Gordios tied the ox cart to the temple of the Phrygian God with a knot from the cranberry branches. The node is famous throughout the region, with the rumour that the person who will untie this node will dominate all of Asia. Alexander the Great tried to untie the knot when he came to the city, but he could not. He drew his sword with arrogance and cut the knot. He died at the age of 33 on the eve of the conquest of the Persian Empire and the domination of Asia. This untimely death is interpreted as the punishment of Alexander acting arrogantly instead of wisely untying the Gordian knot.
Today, to understand the situation in Idlib, it is necessary to go back in time. Perhaps not to mythological times but the early stages of the Syrian war. Erdogan acted to take his share from Syria which was weakened by war while his "close friend" Assad transformed into "enemy" Assad.
Everyone will remember the Syrian maps of the times when the civil war was at its height. The black regions represented the Islamic State, the red regions were the forces of Assad, the blue regions were the Free Syrian Army and the small jihadist organisations, and the yellow regions referred to the Syrian Democratic Forces. Erdogan provided financial, military, and diplomatic support to the organisations that formed the Free Syrian Army and other jihadist groups such as Ahmar al-Sham, Jaish al-Islam, and the Sultan Murad Brigade to pull his share from the war. At this point, Turkey took the position as the third guarantor of Astana talks besides Russia and Iran as the representative of these organisations.
"Red" and "yellow" spreading on the Syrian map
After YPG grabbed a slice of history with the Kobane resistance which drew the attention of the whole world, the Syrian-Turkish border line was cleared from the Islamic State with the support of the International Coalition. While the territory controlled by the YPG expanded in the direction of Raqqa, Assad scored a major victory with the regaining of Aleppo as the Syrian government began to regain lost fronts with the involvement of Russia in the war.
During the war, Turkey could not persuade the U.S. to join a coalition with their elements of the Free Syrian Army and other jihadist organisations which are in coordination with Turkey to fight against Islamic State. Erdogan watched the advance of the SDF with great dissatisfaction.
At this point, the military operations of the Syrian state in the Aleppo and Hama regions were seen as a great opportunity for Turkey. Erdogan, who agreed with Putin, ensured that the jihadists in Aleppo were convinced to evacuate the city, and arranged the transfer of jihadists with buses to Idlib which is under Al Nusra's control.
Thanks to the agreement, Erdogan "got permission" for the Euphrates Shield operation including in the Al-Bab and Jarablus regions, which would cut off the Kurds' connection between Afrin and Manbij cantons. This operation was very critical for Turkey, as it would prevent the Syrian Democratic Forces from controlling all of the Turkey-Syria borders. Turkey could keep itself in the game in Syria by creating a corridor from Turkey to Syria.
Putin was happy that the jihadists had been moved to Idlib for "annihilating later" because the transfer of the jihadists from Aleppo was a chance to concentrate on more strategic points that should be taken back from Islamic State, a relatively stronger enemy.
During the Euphrates Shield operation preparations, Erdogan carried some of the jihadists transferred to Idlib to the Azez region through Turkey by using the Antioch Cilvegozu Border Gate and Kilis Oncupinar Border Gate. Turkish forces were able to take control of the territory from Turkey's Kilis to Syria's Aleppo in a short time.
When the war is nearing the end: "Black" is about to run out, now the new target is "blue"
The downing of the Russian warplane by Turkey and the diplomatic-economic crisis with Russia in its aftermath seriously damaged the relationship between Turkey and Russia. Erdogan, for his part, refused to admit that he lost the initiative in Syria. Erdogan thought that he still had a say over Syria taking into account the jihadist organisations deployed in Idlib and the territory Turkey controls after the Operation of Euphrates Shield. However, Erdogan, who is involved in the war in Syria to "stop the Kurds" and take his share from Syria, seems to be unable to succeed, just like Alexander. Idlib is the clearest example of the situation. Erdogan, who is aiming to follow "one step backwards, two steps forward" like a Janissary band even if he cannot run at full gallop in Syria, moves one step forward and goes backwards by a long chalk.
Let's try to explain the situation in Idlib without naming the groups fighting each other or specifying their political position, in order not to create any confusion. When Erdogan transferred the jihadists to Idlib and then carried them to fight in Al-Bab and Jarablus under Euphrates Shield operation, he thought "that takes care of that".
In the Astana talks between Iran, Turkey, and Russia, Idlib and the territories controlled by the jihadist groups other than IS and Al-Nusra were planned as "de-escalation zones", and the question of who controlled them was to be postponed. However, the Syrian-Russian-Iranian trio plans to not recognise the jihadist groups, and ensuring that they can get rid of these organizations just after taking back the control of the strategic points in Syria. Subsequently, there was a race between the US-led coalition and Russia-Syria-Iran-backed forces in the territories to be recaptured from IS. The most striking example is Deir al-Zor. The city is divided into two by the two coalition armies, much like Berlin after World War II.
Now, when the war against IS nearing its end, Russia and Iran pressured Erdogan to clean Idlib from Erdogan's "old friends". While "enemy" Assad is transforming back to "friend" Assad for Erdogan, he has started fighting for Syria's sovereignty and territorial integrity. Of course, this is not a simple forced operation. Erdogan is planning to get a visa to Afrin- the Syrian Democratic Forces controlled the city- in return for clearing Idlib. To succeed in his goal, he is shuttling back and forth between Tehran and Moscow. On the other hand, Russia and Iran have not given the green light to Erdogan for Afrin because Putin wants to hold the Afrin card as a bargaining chip against Syrian Democratic Forces.
The other side of the fighting forces in Syria, the United States, is also very disturbed about the Idlib operation. Just one day after the operation was initiated in Idlib, the U.S. imposed restrictions on visas from Turkey. With the S-400 air defence systems bought from Russia and current cooperation attempts with Iran, escalating tensions peaked with Idlib.
The Turkish media presents the Idlib operation as an example of the heroism of the Turkish army. However, it is unlikely that Idlib will end like a heroic tale because Idlib borders Syria's coastal cities Latakia and Tartus. Russia has plans to transfer the oil and natural gas of Syria and the region through a pipeline from these two cities to Europe via a route outside of Turkish territory. For this reason, the inevitable end for Turkey will be to surrender Idlib to Assad after it is cleared from jihadists. There is almost no chance that Erdogan's strategy in Idlib will succeed. Now, he is trying to persuade Al Nusra and other jihadist organizations of his plan using little "stimulating" attacks. He wants to collect the jihadists around his plans with as few losses as possible and to continue his existence in Syria. However, even if a part of Al Nusra agrees with Erdogan, there is a great backlash against the occupation of Idlib. It seems that the operation will not be completed without Turkey entering into a major battle in the city. When the operation is completed, Idlib will be handed over to Assad's forces. If we think that the dreams of attacking Afrin have not been rejected just yet, the situation seems underwhelming for Erdogan.
Moreover, if Al Nusra being a widespread organisation in Turkey is considered, it is very likely that war in Idlib might come to bite many cities of Turkey.
Erdogan, whose short-term plan is to break the dominance of the Syrian Democratic Forces in Afrin, seems unable to do so.
Russian Foreign Minister Sergei Lavrov on Monday said that he hopes a ceasefire will be observed in Afrin, in reaction to Turkish threats to attack Afrin in northern Syria. "As for the situation in Afrin and Syria overall ... We are seeking full compliance with the ceasefire agreements," Lavrov said. It's crystal clear that Russia is not fully convinced about abandoning the Kurds.
Putin firstly got the jihadists out of his way with the help of Erdogan and is now using the Turkish Army to clear Idlib from jihadists. Turkey bought the S-400 air defence systems from Russia as a goodwill gesture which created tensions in Turkey's relations with the U.S. and NATO. In return, Turkey only regained its right to sell tomatoes to Russia. Idlib became the last straw, and Turkey took its place alongside Iran, Libya, Somalia, Syria, Yemen, Chad, North Korea and Venezuela as countries on which the United States imposed travel restrictions.
Erdogan's vow to one day pray in Damascus' Umayyad mosque ended up with Erdogan entering the Syrian war as Alexander once did -- swaying his with anger and arrogance to untie the knot. Now, his hands are hog-tied in Idlib. Even if not as massive as Alexander's dreams, Erdogan was planning to get "his share" in the Middle East motivated by his dreams of neo-Ottomanism. However, Alexander lost his life in the 15th year of his ruling without accomplishing his dreams. Erdogan has started to make his calculations of how to hold power in his hands in the 15th year of his rule by taking the least amount of damage from the war in Syria that he got Turkey into because of his neo-Ottoman dreams.
Share Tweet Print Download
GokcanAydogan
There is nothing democratic about shaking hands with Erdogan and deporting political refugees
The battle of Kobane: Humanity defying darkness
Erdogan's efforts to solve Khashoggi case have nothing to do with press freedom
Remember pogrom against Greeks in Istanbul, don't forget one against people of Afrin
31 schools hit, 50,000 students out of school during Turkey's Afrin offensive, report


text:
Q: Sorting an integer without using string methods and without using arrays can anyone come with an idea of how to sort an integer without using an array, and without using string methods as well as sort() method?
for example
input: 642531
output: 123456
I started by writing 2 simple functions - one which checks the length of the number, the other one splits the integer at some point and switches between 2 desired numbers. Below are the 2 functions.
I got stuck with the rest of the solution...

function switchDigits(num, i) { // for input: num=642531, i = 4 returns 624135
  let temp = num;
  let rest = 0;

  for (let j = 0; j < i - 1; j++) {
    rest = rest * 10;
    rest = rest + temp % 10;
    temp = (temp - temp % 10) / 10;
  }

  let a = temp % 10;
  temp = (temp - a) / 10;
  let b = temp % 10;
  temp = (temp - b) / 10;
  temp = Math.pow(10, i - 2) * temp;
  temp = temp + 10 * a + b;
  temp = Math.pow(10, i - 1) * temp;
  temp = temp + rest;

  return temp;
}

function checkHowManyDigits(num) { //input: 642534, output: 6 (length of the integer)
  let count = 0;

  while (num > 0) {
    let a = num % 10;
    num = (num - a) / 10;
    count++;
  }

  return count;
}

let num = 642534;
let i = checkHowManyDigits(num);
console.log(switchDigits(num));

A: It actually complicated requirement and so does this answer. It's pure logic and as it is it's a question from a test you should try understanding the logic on your own as a homework.

function checkHowManyDigits(num) { //input: 642534, output: 6 (length of the integer)
  let count = 0;

  while (num > 0) {
    let a = num % 10;
    num = (num - a) / 10;
    count++;
  }

  return count;
}

function sortDigit(numOriginal) {

  let i = checkHowManyDigits(numOriginal);
  let minCount = 0;
  let min = 10;
  let num = numOriginal;

  while (num > 0) {
    let d = num % 10;
    num = (num - d) / 10;
    if (d < min) {
      min = d;
      minCount = 0;
    } else if (d === min) {
      minCount++;
    }
  }

  let result = 0;
  while (minCount >= 0) {
    result += min * Math.pow(10, i - minCount - 1);
    minCount--;
  }

  let newNum = 0;
  num = numOriginal;
  while (num > 0) {
    let d = num % 10;
    num = (num - d) / 10;
    if (d !== min) {
      newNum = newNum * 10 + d;
    }
  }

  if (newNum == 0) return result;
  else return result += sortDigit(newNum);

}

console.log(sortDigit(642531));

A: You could have a look to greater and smaller pairs, like
64
46

The delta is 18, which gets an idea if you compare other pairs, like
71
17

where the delta is 54. Basically any difference of two digits is a multiple of 9.
This in mind, you get a function for taking a single digit out of a number and a single loop who is sorting the digits by using the calculated delta and subtract the value, adjusted by the place.

function sort(number) {
    const
        getDigit = e => Math.floor(number / 10 ** e) % 10,
        l = Math.ceil(Math.log10(number)) - 1;

    let e = l;

    while (e--) {
        const
            left = getDigit(e + 1),
            right = getDigit(e);

        if (left <= right) continue;
        number += (right - left) * 9 * 10 ** e;
        e = l;
    }

    return number;
}

console.log(sort(17)); // 17
console.log(sort(71)); // 17
console.log(sort(642531)); // 123456
console.log(sort(987123654)); // 123456789

A: So eventually I found the best solution.
*This solution is based on a Java solution I found in StackOverFlow forums.
let store = 0;

function getReducedNumbr(number, digit) {

    console.log("Remove " + digit + " from " + number);

    let newNumber = 0;
    let repeateFlag = false;

    while (number>0) {
        let t = number % 10;
        if (t !== digit) {
            newNumber = (newNumber * 10) + t;
        } else if (t == digit) {
            if (repeateFlag) {
                console.log(("Repeated min digit " + t + " found. Store is : " + store));
                store = (store * 10) + t;
                console.log("Repeated min digit " + t + " added to store. Updated store is : " + store);

            } else {
                repeateFlag = true;
            }
        }
        number = Math.floor(number / 10);
    }
    console.log("Reduced number is : " + newNumber);
    return newNumber;}

function sortNum(num) {
    let number = num;
    let original = number;
    let digit;

    while (number > 0) {
        digit = number % 10;
        console.log("Last digit is : " + digit + " of number : " + number);
        temp = Math.floor(number/10);

        while (temp > 0) {
            console.log("subchunk is " + temp);
            t = temp % 10;

            if (t < digit) {
                digit = t;
            }

            temp = Math.floor(temp/10);

        }
        console.log("Smallest digit in " + number + " is " + digit);

        store = (store * 10) + digit;
        console.log("store is : " + store);

        number = getReducedNumbr(number, digit);

    }
    console.log(("Ascending order of " + original + " is " + store));
    return store;

}

console.log(sortNum(4214173));

you can see how it works here https://jsfiddle.net/9dpm14fL/1/

redpajama_set_name: RedPajamaStackExchange


text:
using oledid.SyntaxImprovement.Generators.Sql;

namespace oledid.SyntaxImprovement.Tests.Generators.Sql.TestModels
{
	public class LongTestEntity : DatabaseTable
	{
		[IsPrimaryKey]
		[IsIdentity]
		public long Id { get; set; }
		public bool IsDeleted { get; set; }

		public override string GetTableName() => nameof(LongTestEntity).RemoveFromEnd("Entity");
	}
}