- NACo has launched a specific COVID-19 resource section on their website.
- Almost all the state association of counties have built resource pages for their state.
- NACo is cataloging all of the state and county disaster declarations and they are available by right-clicking on the County Explorer page to see the declaration and date.
- These declarations can assist counties with language and serve as a boilerplate for best practices.
- NACo has also included information on their federal advocacy efforts for the federal aid packages.
NACo is currently working on the following federal advocacy efforts:
- Requesting that the 3rd aid package include more testing equipment and personal protective equipment.
- More clarification on FEMA assistance; additional funding.
- Stressing the importance of county behavioral health services that were already stretched and may be exacerbated by the current situation.
- Calling on Health & Human Services to delay the match requirements for the non-federal share of Medicaid and nutrition programs for children and the elderly.
- Stressed the importance of the Department of Labor waiving requirements on pensions so counties can bring back retirees if needed for resources.
- Requesting assistance with funding for municipal bonds and the ability to redeploy some revenue for immediate needs.
Tips for Federal Aid
- Most federal funding flows form the federal government to the state and then to the local level.
- Counties need to be working with your state association, community partners, Health & Human Services, and the Center for Disease Control to access funds.
- If you are involved in Medicaid, please work with your health agencies on the cost and reimbursement for counties.
- Currently, the largest source for reimbursement is through the FEMA Disaster Relief Fund – FEMA Public Assistance Program.
- Health & Human Services and FEMA are currently evaluating what is eligible and how it is determined under the Stafford Act which governs FEMA Programs, which have traditionally focused on disasters, but is eligible for pandemic types of emergencies.
- Counties who have been through disasters know how critical it is to document and have vast experience on lessons learned. NACo can also help connect you to those with more experience.
- You must have appropriate financial controls to segregate and document your expenses related to the emergency declarations.
Cyber Security Attacks
- There has been an increase in cybersecurity attacks.
- The Department of Health & Human Services was hacked on Twitter with false information proclaiming a national government lockdown.
- Counties must work with employees and their IT departments to be on guard for fake emails, false information, etc. especially while working remotely.Yangs got some great ideas and different perspective which is great. I personally would like to see him as a cabinet pick or some similar post because he is really policy focused (and I think he has a bright political future but he needs a bit of experience under his belt imo). With all this talk of candidate field shrink i am most interested in how Yang fairs. Him getting a boost and joining that top 4/5 conversation could be a game changer, or if he does leave the race his support is large enough and committed enough he could shift the balance in a super close race. Despite views on all the candidates the Dems have a strong crop with good/great choices all around.In this task, you are given a sentence in Arabic, and your task is to translate it into English.
One example is below.
Q: أمي - سأعود بالحال -
A: Mommy will be right back.
Rationale: This is a good example. The above sentence is correctly translated from Arabic to English.
Q: هو... طبعا هذا العرض لا يزال قائما.
A:
Of course the offer still stands.package rove

import (
	"bufio"
	"errors"
	"fmt"
	"io"
	"os"
	"path"
	"path/filepath"
	"strings"

	"github.com/josephspurrier/rove/pkg/changeset"
)

const (
	elementChangeset   = "--changeset "
	elementRollback    = "--rollback "
	elementInclude     = "--include "
	elementDescription = "--description "
	elementMemory      = "memory"
)

var (
	// ErrInvalidFormat is when a changeset is not found.
	ErrInvalidFormat = errors.New("invalid changeset format")
)

// parseFileToArray will parse a file into changesets.
func parseFileToArray(filename string) ([]changeset.Record, error) {
	f, err := os.Open(filename)
	if err!= nil {
		return nil, err
	}
	defer f.Close()

	return parseToArray(f, filename)
}

// parseToArray will split the migration into an ordered array.
func parseToArray(r io.Reader, filename string) ([]changeset.Record, error) {
	scanner := bufio.NewScanner(r)
	scanner.Split(bufio.ScanLines)

	// Array of changesets.
	arr := make([]changeset.Record, 0)

	for scanner.Scan() {
		// Get the line without leading or trailing spaces.
		line := strings.TrimSpace(scanner.Text())

		// Skip blank lines or liquibase header.
		if len(line) == 0 || strings.HasPrefix(line, "--liquibase") {
			continue
		}

		// Determine if the line is an `include`.
		if strings.HasPrefix(line, elementInclude) {
			// Load the file and add to the array.
			fp := strings.TrimPrefix(line, elementInclude)
			rfp := filepath.Join(filepath.Dir(filename), fp)
			cs, err := parseFileToArray(rfp)
			if err!= nil {
				return nil, err
			}
			arr = append(arr, cs...)
			continue
		}

		// Start recording the changeset.
		if strings.HasPrefix(line, elementChangeset) {
			// Create a new changeset.
			cs := new(changeset.Record)
			cs.ParseHeader(strings.TrimPrefix(line, elementChangeset))
			cs.SetFileInfo(path.Base(filename), appVersion)
			arr = append(arr, *cs)
			continue
		}

		// If the length of the array is 0, then the first changeset is missing.
		if len(arr) == 0 {
			return nil, ErrInvalidFormat
		}

		// Determine if the line is a rollback.
		if strings.HasPrefix(line, elementRollback) {
			arr[len(arr)-1].AddRollback(strings.TrimPrefix(line, elementRollback))
			continue
		}

		// Determine if the line is a description.
		if strings.HasPrefix(line, elementDescription) {
			arr[len(arr)-1].AddDescription(strings.TrimPrefix(line, elementDescription))
			continue
		}

		// Determine if the line is comment, ignore it.
		if strings.HasPrefix(line, "--") {
			continue
		}

		// Add the line as a changeset.
		arr[len(arr)-1].AddChange(line)
	}

	// Perform a verification check on duplicates.
	_, err := parseArrayToMap(arr)

	return arr, err
}

// parseFileToMap will parse a file into a map.
func parseFileToMap(filename string) (map[string]changeset.Record, error) {
	f, err := os.Open(filename)
	if err!= nil {
		return nil, err
	}
	defer f.Close()

	return parseReaderToMap(f, filename)
}

// parseReaderToMap will parse a reader to a map.
func parseReaderToMap(r io.Reader, filename string) (map[string]changeset.Record, error) {
	arr, err := parseToArray(r, filename)
	if err!= nil {
		return nil, err
	}

	return parseArrayToMap(arr)
}

// parseArrayToMap will convert an array of changesets to a map of changesets.
func parseArrayToMap(arr []changeset.Record) (map[string]changeset.Record, error) {
	m := make(map[string]changeset.Record)

	for _, cs := range arr {
		id := fmt.Sprintf("%v:%v:%v", cs.Author, cs.ID, cs.Filename)
		if _, found := m[id]; found {
			return nil, errors.New("duplicate entry found: " + id)
		}

		m[id] = cs
	}

	return m, nil
}

// loadChangesets will get the changesets based on the type of migration
// specified during the creation of the Rove object.
func (r *Rove) loadChangesets() (map[string]changeset.Record, error) {
	// Use the file to get the changesets