text:
https://www.barrons.com/articles/were-using-the-future-for-a-fiscal-dumping-ground-beware-trillion-dollar-deficits-1536975444
'We're Using the Future for a Fiscal Dumping Ground.' Beware Trillion-Dollar Deficits
Jack Hough
Updated September 20, 2018 / Original September 14, 2018
New Studio
There's no snooze button on the national debt clock, though you wouldn't know it by the way public alarm has quieted as the situation grows worse.
October begins a new fiscal year for the U.S. government—and a faster ballooning of how much it owes. Barring a behavioral miracle in Congress, trillion dollar yearly budget shortfalls will return, perhaps as soon as the coming year. And unlike the ones brought by the financial crisis and Great Recession of 2007-09, these will start during a period of relative plenty, and won't end.
Debt held by the public, a conservative tally of what America owes, will swell from $15.7 trillion at the end of September, or 78% of gross domestic product, to $28.7 trillion in a decade, or 96% of GDP.
Those estimates, provided by the Congressional Budget Office, are based on reasonable assumptions about economic growth, inflation, employment, and interest rates, but they leave out some important things. They assume that the nation's need for increased infrastructure investment, estimated by the American Society of Civil Engineers at $1.4 trillion through 2025, goes unmet. They don't account for the possibility of another financial crisis, or war, or a rise in the frequency or severity of natural disasters, and they assume that some Trump tax cuts will expire in 2025.
Federal Debt Held by the Public
Percentage of GDP
War II
Source: Congressional Budget Office
There is no clear milestone that marks the moment a country loses control of its finances, but consider how the bar has already been lowered for what seems possible in Congress. Even debt scolds no longer talk seriously about America paying down what it owes, or holding the dollar amount steady. The new path of fiscal prudence involves containing debt at some manageable percentage of GDP, and the opportunity for that is slipping.
"It's a generational issue," says Robert Bixby, executive director of the Concord Coalition, a nonpartisan group focused on the debt. "We're using the future for a fiscal dumping ground."
An Alternate View of the National Debt
Stephanie Kelton Wants You to Rethink the Deficit
Just holding the line at 78% of GDP over the next three decades would require finding massive, immediate savings in the budget—$400 billion over the coming year, rising gradually to $690 billion by 2048, using 2019 dollars. In comparison, America spent $590 billion in fiscal 2017 on defense, and $610 billion on all other discretionary items. (The rest of the $4 trillion in spending went for mandatory programs, such as Social Security and Medicare, and for interest on the debt.)
This past week didn't inspire confidence. House Republicans introduced Tax Cuts 2.0—bills touted as "permanent tax relief for families and small businesses." But a fresh decline in federal revenue and the resulting increase in the deficit will hardly come as relief to the taxpayer whose share of the national debt, now $164,000 on average, is already set to top $250,000 in a decade. The 2.0 round has little chance in the Senate, and appears mostly designed to force Democrats into voting against "relief" ahead of midterm elections. Investment bank UBS forecasts a 60% likelihood that Democrats will take the House in November, with Republicans keeping the Senate, the most likely result of which will be gridlock. Here's hoping a mixed Congress can get something done, because even now, there remain plausible paths to fiscal reform.
Both Sen. Mike Enzi (R., Wyo.), chairman of the Senate Committee on the Budget, and Rep. Steve Womack (R., Ark.), chairman of the House Budget Committee, declined to talk with Barron's about the debt.
This is no panicked warning for stock and bond investors, because the chances of a debt-driven blowup appear low in the near term. In fact, the biggest risk related to markets is that placid conditions will add to complacency. With the 10-year Treasury yield near 3%—around half its average of the past half-century—it's clear that there remain eager buyers for America's debt.
The problem is that we could be wrong about the limited investment risk. "I don't think bonds adequately reflect what at some point in the future, with high probability, will be trouble in bond markets and with interest rates, due to our fiscal situation," says Robert Rubin. Treasury Secretary from 1995 until mid-1999 in the Clinton administration, he was one of the last in that position to oversee budget surpluses. Rubin points out that Greek government bond yields were modest for years before spiking past 25% in 2012, during a debt crisis.
If the party that has long branded itself as fiscally conservative—and showed off a debt clock during the 2012 Republican National Convention, in a call to action—now has little interest in containing deficits during good times, the result could be a costly backlash during the next bust. Bond guru Jeffrey Gundlach oversees more than $120 billion in investor assets as chief investment officer at DoubleLine Capital, and was early to predict Donald Trump's election win and the shift to faster debt growth. He has called the act of expanding deficits while the Federal Reserve is raising interest rates a "suicide mission."
Gundlach expects investors to buy Treasuries if the threat of deflation returns "as a Pavlovian reaction" and notes that a high short position in them could even set up a short squeeze. "After that, you might find yourself with a more radical reaction," he says. "There could be elevated acceptance of a universal basic income—just send everyone money." Already, there is a movement afoot among a some economists on the left who point out that governments that borrow in money they print can't technically go bankrupt, and say that budget deficits are, if anything, too small.
When deficits are large, money tends to be spent on "stupid things," says Maya MacGuineas, president of the nonpartisan Committee for a Responsible Federal Budget. "If you don't have constraints, you don't think about how to spend wisely." MacGuineas calls the debt "the most predictable crisis we've ever faced," but says spotting the tipping point will be difficult, because much depends on other countries, and their appetite for our debt. "We can borrow a lot more if we're still the best-looking horse in the glue factory," she says.
The gross national debt, a figure commonly used for debt clocks, topped $21 trillion in March. We focus here on debt held by the public, which subtracts amounts owed by one part of the government to another, such as Treasuries held in the Social Security trust fund. The debt is what we owe. The deficit is the amount by which we go further into the hole each year.
Not all deficits are bad. The $1 trillion-plus deficits America ran for four years ending in 2012 helped shore up its financial system and prevent a deep recession from turning into a prolonged depression. Keynesian economics calls for deficit spending and lower taxes during economic slumps to stimulate demand, with the money recouped through surpluses during good years. That last part isn't happening, however. "Now Keynesian seems to mean you stimulate all the time," says Gundlach.
If the debt were growing more slowly than the economy—or put differently, with the deficit projected to total 4.6% of gross domestic product over the next year, if GDP were climbing faster than 4.6% in nominal terms—the burden could be said to be slowly diminishing. As it turns out, the economy is estimated to have risen faster than that on an annualized basis last quarter, but it got a boost from temporary factors, including a rush by America's trading partners to stock up on goods ahead of new tariffs.
Over the coming 10 fiscal years, the CBO estimates real annual GDP growth averaging about 1.7%, and nominal growth of 4.0%. Deficits, meanwhile, are expected to rise from here, averaging 4.9% of gross domestic product annually over the coming decade. The projected downshift in economic expansion owes in part to a widely accepted demographic challenge: the ongoing retirement of the baby boomers, which will hold back expansion of the labor force, a key determinant of GDP gains.
A few commonly prescribed fiscal remedies won't, on their own, do the job: cutting foreign aid; cracking down on waste, fraud and abuse; and reining in welfare. Foreign aid, using a broad definition that includes things like military assistance to fight terrorism, is around $50 billion a year—a sliver of needed savings. Waste, fraud and abuse are surely all lurking in the budget, but the Government Accountability Office puts improper payments for all federal entities at $141 billion in fiscal 2017, and the challenge is driving that figure lower without spending mightily on new compliance efforts. Consider welfare a catchall term for means-tested programs that are part of mandatory spending, like Medicaid; the earned-income tax credit; and the Supplemental Nutrition Assistance Program, sometimes still referred to as food stamps. Then the combined dollar amount is significant—an estimated $742 billion this fiscal year. But it is dwarfed by the $2.1 trillion that will be spent on mandatory programs that aren't means-tested, like Social Security, military retirement programs, and most of Medicare.
"There's no low-hanging fruit, politically," says Concord Coalition's Bixby. "It's the entitlement programs, and the baby boomers have already begun to collect." The boomers are sometimes described as a metaphorical pig in a python, but Bixby points out that while Social Security's deteriorating fiscal condition could stabilize after the boomers retire, it will not reverse, and that Medicare's challenges will keep growing. "It's more like a telephone pole in a python," he says.
Should we care about the growing deficit and total debt? Write us at mail@barrons.com and we may publish your take. Find out more at barrons.com/mailbag.
Like Bixby, former Treasury Secretary Rubin points to cutting Medicare cost growth and raising federal revenue as jobs 1 and 2 in fixing the deficit. "You need comprehensive health-care reform that is focused on costs," says Rubin. "If you can reduce cost growth in Medicare and Medicaid, even without cutting entitlements, you're halfway there," he says. The other half is revenue. During the last, brief flirtation with budget surpluses, from 1998 through 2001, yearly federal receipts were 19% to 20% of GDP. Over the next several years, that figure is expected to bottom at 16.4% before beginning to rebound—if certain tax cuts expire.
There is little consensus around the theory that deficit-fueled tax cuts goose growth enough to pay for themselves over time. But there is every reason to believe that fiscal reform will be good for growth, as interest costs are contained and private investment takes the place of government borrowing. Even under the scenario of merely holding the debt to 78% of GDP for the next 30 years, the CBO estimates that gross national product per person would end up 4.5%—or about $4,100—higher, compared with baseline assumptions.
The last bold effort to deal with the debt was the Simpson-Bowles plan drafted by a bipartisan commission appointed by President Obama in 2010, when debt was 61% of GDP. It called for nearly $4 trillion in deficit reductions through 2020, with big cuts to discretionary spending, changes for Social Security and Medicare, and a lowering of personal and corporate tax rates, combined with purging the tax code of breaks. That would have put debt on a course toward an estimated 40% of gross domestic product by 2035. The final draft, titled "The Moment of Truth," didn't win enough support to come to a vote in Congress.
Dwindling Choices
A breakdown of government outlays shows that a shrinking portion of spending comes from discretionary programs.
NET INTEREST
The last big fiscal success, the "Clinton surpluses" of 1998-2001, can be traced in part to the efforts of President George H.W. Bush. He was faced with a dangerous combination of a weakening economy and high interest rates. To convince the Federal Reserve to lower rates, he needed smaller budget deficits. A Democratic Congress wouldn't agree to spending cuts without higher tax revenue. But Bush had famously promised, "Read my lips, no new taxes" during the 1988 Republican Convention. In the end, he reached a bipartisan deal that included about $2 in spending cuts for each $1 in added revenues, including from a tax hike on high earners. That deal helped cost Bush re-election in 1992. President Clinton followed up with a deficit-cutting budget in 1993.
The deficit fell from 4.5% of gross domestic product in 1992 to near-breakeven five years later, before swinging to surpluses. The lesson of what might rightly be called the Bush-Clinton surpluses is that budget reform isn't a job for narcissists or glory seekers, because the public outrage forms immediately, and the benefits don't become clear until much later, by which time others will have arrived to help collect the high-fives.
The good news is that, if the courage to tackle the deficit somehow visits Capitol Hill, financial markets appear likely to cooperate, at least for a while.
In a recent analysis, economists at J.P. Morgan studied historical debt defaults, bailouts and inflation spikes since World War II in countries that resemble the U.S. economically. They found that the probability of these things occurring within any five-year period was less than 6%. Statistically, the link between debt levels and crises is surprisingly weak. That is, crises have occurred in countries with lower debt/GDP than the U.S. has now, and some countries with higher debt/GDP have avoided crises. Many crises corresponded with specific currency problems that, for the U.S., seem less relevant.
The economists' takeaway is that it's "too early to worry about a U.S. sovereign debt crisis," but also that "we should not ignore lessons from history on the fragility created by debt."
Andy McCormick, head of the U.S. taxable bond team at T. Rowe Price, is similarly confident about the near term. "The next six months to two years—no problem," he says. "When debt hits 100% of GDP, it could shake people up, but it's a little too long-term for me to put into portfolios.
If he's right, there's an opportunity, while bond yields and interest costs remain low, to put aside partisan antics and take bold action to restore fiscal order. It won't be easy, but it will never be this easy again.
Follow @jackhough
Write to Jack Hough at jack.hough@barrons.com
A warning on trillion-dollar deficits: 'We're using the future for a fiscal dumping ground.'


Mother's Day is Sunday, May 13th. Now's the time to start finding the perfect gift and planning the best lunch or dinner for mom. We all have great moms, but is yours the best? Here are the top ten signs that you've got the best mom out there.
1. Mom has been there whenever you've needed help, no matter what the cause.
2. Mom taught you how cook some of her famous family secret recipes.
3. When you did something wrong, mom was fair but never judgmental. She never called you stupid for doing something that was, well, pretty stupid in hindsight.
4. Mom was always there with a band aid and a kiss to make it all better when you crashed your bike.
5. While you probably didn't always get every toy you wanted, most moms did spoil their kids every now and then. Did mom ever give you that one awesome toy you wanted more than anything?
6. How many times did mom let your friends come over, hang out all day, and even stay for dinner? If mom didn't mind hosting all your friends, she's pretty cool.
7. When you needed to get to band practice, a sporting event, or even an after-school party, who did you turn to for a ride? Mom! If she always make time in her schedule, she's the best.
8. Even if you weren't always happy with her, in retrospect, if you see that mom always had your best interests at heart, she's definitely a great woman.
9. Mom allowed you to grow up. Some mothers treat their teens and young adults as children, but that never goes well. As we grew up, the best moms grew up with us and started treating us as independent adults.
10. Finally, the final sign that you have the best mom: she's loved you unconditionally from the moment you were born.
Show your mom how much she means to you by sending her Mother's Day flowers in McLean, VA.


text:
The University of Comilla
Academic Campus: 9/B, Polwel Carnation, Sector- 08, Uttara, Dhaka- 1230
Student Result
Student Id/Roll
Department/Program --Select a Department/Program--B.A (Hon's) in BengaliB.A (Hon's) in EnglishB.A (Hon's) in Public Administration & Policy ImplementationB.A Hon's in Islamic HistoryB.A Hon's in Islamic StudiesB.EdB.PEdB.Sc (Hon's) in ChemistryB.Sc (Hon's) in MathematicsB.Sc (Hon's) in PhysicsB.Sc (Hon's) in StatisticsB.Sc Engr.in ArchitectureB.Sc in Civil EngineeringB.Sc in Computer Science and EngineeringB.Sc in Computer Science and Information TechnologyB.Sc in Electrical and Electronics EngineeringB.Sc in Fashion Design and TechnologyB.Sc in Food Science And TechnologyB.Sc in Mechanical EngineeringB.Sc in Textile EngineeringBA (Hon's) in EconomicsBBABSS (Hon's) in Mass Media and JournalismBSS (Hon's) in Social WelfareBSS (Hon's) in Sociology and AnthropologyBSS in Hotel Management & TourismEMBAL.L.B (Hon's)L.L.MM.A in BengaliM.A in EnglishM.A in Islamic HistoryM.A in Islamic StudiesM.EdM.PEdMaster in Computer ApplicationMaster of Library and Information ScienceMasters of Disability Management & RehabilitationMasters of Environment ScienceMasters of Public HealthMBAMSS in Sociology and AnthropologyMSS in Govermment and PoliticsMSS in Social WelfarePost Graduate Diploma in Library and Information Science
https://unicedu.ac.bd/

redpajama_set_name: RedPajamaCommonCrawl


text:
from __future__ import absolute_import, print_function

import os
from commoncode.testcase import FileBasedTesting

from textcode import analysis
from textcode .analysis import Token

from licensedcode import detect
from licensedcode.detect import LicenseMatch
from licensedcode.models import Rule
from licensedcode import models
from unittest.case import skipIf

TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')

"""
Test the core license detection mechanics.
"""

class TestLicenseMatch(FileBasedTesting):
    test_data_dir = TEST_DATA_DIR

    def test_single_contained_matche_is_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=5), score=100)
        contained = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=4), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([m1, contained, m5])
        assert [m1, m5] == result

    def test_multiple_contained_matches_are_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=5), score=100)

        r2 = Rule(text_file='r2', licenses=['apache-2.0', 'gpl'])
        contained1 = LicenseMatch(rule=r2, query_position=analysis.Token(start=1, end=2), score=100)

        r3 = Rule(text_file='r3', licenses=['apache-2.0', 'gpl'])
        contained2 = LicenseMatch(rule=r3, query_position=analysis.Token(start=3, end=4), score=100)

        r5 = Rule(text_file='r5', licenses=['apache-2.0', 'gpl'])
        m5 = LicenseMatch(rule=r5, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([m1, contained1, contained2, m5])
        assert [m1, m5] == result

    def test_multiple_nested_contained_matches_are_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=5), score=100)
        contained = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=4), score=100)
        in_contained = LicenseMatch(rule=r1, query_position=analysis.Token(start=2, end=3), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([m1, contained, in_contained, m5])
        assert [m1, m5] == result

    def test_contained_matches_are_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        contained1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=5), score=100)
        same_span1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)
        same_span2 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([contained1, same_span1, same_span2])
        assert [contained1, same_span2] == result

    def test_contiguous_non_overlapping_matches_are_not_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2), score=100)
        m2 = LicenseMatch(rule=r1, query_position=analysis.Token(start=3, end=6), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m5])
        assert [m1, m5] == result

    def test_non_contiguous_matches_are_not_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2), score=100)
        m2 = LicenseMatch(rule=r1, query_position=analysis.Token(start=4, end=6), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m5])
        assert [m1, m5] == result

    def test_non_contiguous_or_overlapping_contained_matches_are_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=2), score=100)
        m2 = LicenseMatch(rule=r1, query_position=analysis.Token(start=3, end=6), score=100)
        m3 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)
        m4 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=7), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m3, m4, m5])
        assert [m4] == result

    def test_non_contiguous_or_overlapping_contained_matches_touching_boundaries_are_filtered(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2), score=100)

        r2 = Rule(text_file='r2', licenses=['apache-2.0', 'gpl'])
        m2 = LicenseMatch(rule=r2, query_position=analysis.Token(start=3, end=7), score=100)

        r3 = Rule(text_file='r3', licenses=['apache-2.0', 'gpl'])
        m3 = LicenseMatch(rule=r3, query_position=analysis.Token(start=0, end=6), score=100)

        r6 = Rule(text_file='r6', licenses=['apache-2.0', 'gpl'])
        m6 = LicenseMatch(rule=r6, query_position=analysis.Token(start=1, end=7), score=100)

        r5 = Rule(text_file='r5', licenses=['apache-2.0', 'gpl'])
        m5 = LicenseMatch(rule=r5, query_position=analysis.Token(start=1, end=6), score=100)

        r4 = Rule(text_file='r4', licenses=['apache-2.0', 'gpl'])
        m4 = LicenseMatch(rule=r4, query_position=analysis.Token(start=0, end=7), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m3, m4, m5, m6])
        assert [m4] == result

    def test_matches_with_same_span_are_filtered_if_licenses_are_different(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2), score=100)
        r2 = Rule(text_file='r2', licenses=['apache-1.1'])
        m2 = LicenseMatch(rule=r2, query_position=analysis.Token(start=0, end=2), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m5])
        assert [m2, m5] == result

    def test_matches_with_same_span_are_filtered_if_licenses_are_the_same(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        r2 = Rule(text_file='r2', licenses=['apache-2.0'])
        m2 = LicenseMatch(rule=r2, query_position=analysis.Token(start=0, end=2), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m5])
        assert [m2, m5] == result

    def test_matches_with_same_span_are_filtered_if_licenses_are_the_same_with_different_expressions(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2), score=100)
        m5 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)

        r2 = Rule(text_file='r2', licenses=['gpl', 'apache-2.0'])
        m2 = LicenseMatch(rule=r2, query_position=analysis.Token(start=0, end=2), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m5])
        assert [m2, m5] == result

    def test_matches_with_partially_overlapping_spans_are_merged_if_license_are_the_same(self):
        r1 = Rule(text_file='r1', licenses=['apache-1.1'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=10), score=100)
        m2 = LicenseMatch(rule=r1, query_position=analysis.Token(start=1, end=6), score=100)
        r2 = Rule(text_file='r2', licenses=['gpl', 'apache-2.0'])
        m3 = LicenseMatch(rule=r2, query_position=analysis.Token(start=5, end=15), score=100)

        result = detect.filter_overlapping_matches([m1, m2, m3])
        assert [m1, m3] == result

    def test_match_is_same(self):
        r1 = Rule(text_file='r1', licenses=['apache-2.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2))
        r2 = Rule(text_file='r2', licenses=['gpl', 'apache-2.0'])
        m2 = LicenseMatch(rule=r2, query_position=analysis.Token(start=0, end=2))

        assert m1.is_same(m2)
        assert m2.is_same(m1)

    def test_match_is_not_same(self):
        r1 = Rule(text_file='r1', licenses=['apache-1.0', 'gpl'])
        m1 = LicenseMatch(rule=r1, query_position=analysis.Token(start=0, end=2))
        r2 = Rule(text_file='r2', licenses=['gpl', 'apache-2.0'])
        m2 = LicenseMatch(rule=r2, query_position=analysis.Token(start=0, end=2))

        assert not m1.is_same(m2)
        assert not m2.is_same(m1)

        r3 = Rule(text_file='r3', licenses=['apache-1.0', 'gpl'])
        m3 = LicenseMatch(rule=r3, query_position=analysis.Token(start=0, end=2))

        assert m1.is_same(m3)
        assert m3.is_same(m1)

        r4 = Rule(text_file='r4', licenses=['apache-1.0', 'gpl'])
        m4 = LicenseMatch(rule=r4, query_position=analysis.Token(start=1, end=2))

        assert not m1.is_same(m4)
        assert not m4.is_same(m1)

class TestDetectLicenseRule(FileBasedTesting):
    test_data_dir = TEST_DATA_DIR

    def create_test_file(self, text):
        tf = self.get_temp_file()
        with open(tf, 'wb') as of:
            of.write(text)
        return tf

    def test_match_with_empty_query_does_not_return_matches(self):
        ftr = Rule(text_file=self.create_test_file('A one. A two. A three.'))
        index = detect.LicenseIndex([ftr])
        matches = index.match([''])
        assert [] == matches

    def test_match_does_not_return_incorrect_matches(self):
        ftr = Rule(text_file=self.create_test_file('A one. A two. A three.'))
        index = detect.LicenseIndex([ftr])
        docs = [
            u'some other path', u'some junk',
            u'some path', u'some other junk'
        ]
        for d in docs:
            matches = index.match([d])
            assert [] == matches

    def test_match_index_return_one_match_with_correct_offsets(self):
        ftr = Rule(text_file=self.create_test_file('A one. A two. A three.'))
        index = detect.LicenseIndex([ftr])
        query_doc = (u'/some/path/', u'some junk. A one. A two. A three.')
        #                              t1   t2    t3 t4  t5 t6  t7 t8
        #                                         1111111111222222222233
        #                              012345678901234567890123456789012

        matches = index.match([query_doc[1]])
        assert 1 == len(matches)
        match = matches[0]
        qpos = match.query_position
        # abs pos are zero-based
        # lines are one-based, char are zero-based on line
        expected = Token(start=2, end=7,
                         start_line=1, start_char=11,
                         end_line=1, end_char=32,)
        assert expected == qpos

    def test_simple_detection_against_same_text(self):
        tf1 = self.get_test_loc('detect/mit/mit.c')
        ftr = Rule(text_file=tf1, licenses=['mit'])
        index = detect.LicenseIndex([ftr])

        matches = index.match(tf1)
        assert 1 == len(matches)
        match = matches[0]
        assert ftr == match.rule
        assert 0 == match.span.start
        assert 86 == match.span.end

    def test_simple_detection_exact(self):
        tf1 = self.get_test_loc('detect/mit/mit.c')
        ftr = Rule(text_file=tf1, licenses=['mit'])
        index = detect.LicenseIndex([ftr])

        tf2 = self.get_test_loc('detect/mit/mit2.c')
        matches = index.match(tf2)
        assert 1 == len(matches)
        match = matches[0]
        assert ftr == match.rule
        assert 5 == match.span.start
        assert 91 == match.span.end

    def test_simple_detection_exact2(self):
        tf1 = self.get_test_loc('detect/mit/mit.c')
        ftr = Rule(text_file=tf1, licenses=['mit'])
        index = detect.LicenseIndex([ftr])

        tf2 = self.get_test_loc('detect/mit/mit3.c')
        matches = index.match(tf2)
        assert 1 == len(matches)
        match = matches[0]
        assert ftr == match.rule
        assert 0 == match.span.start
        assert 86 == match.span.end

    def test_simple_detection_exact_should_return_no_result(self):
        tf1 = self.get_test_loc('detect/mit/mit.c')
        ftr = Rule(text_file=tf1, licenses=['mit'])
        index = detect.LicenseIndex([ftr])

        tf2 = self.get_test_loc('detect/mit/mit4.c')
        matches = index.match(tf2, minimum_score=100)
        assert not matches

    def test_simple_detection_text_shorter_than_ngram_len_using_trigrams(self):
        tf1 = self.get_test_loc('detect/string/mit.txt')
        ftr = Rule(text_file=tf1, licenses=['mit'])
        index = detect.LicenseIndex([ftr])  # default to ngram_len=3

        tf2 = self.get_test_loc('detect/string/mit2.txt')
        tf3 = self.get_test_loc('detect/string/mit3.txt')
        tf4 = self.get_test_loc('detect/string/mit4.txt')

        docs = [
            (tf1, 1, [Token(start=0, start_line=1, start_char=0, end_line=1, end_char=11, end=1)]),
            (tf4, 1, [Token(start=1, start_line=1, start_char=4, end_line=1, end_char=15, end=2)]),
            (tf2, 2, [Token(start=6, start_line=1, start_char=20, end_line=1, end_char=31, end=7),
                      Token(start=8, start_line=1, start_char=32, end_line=1, end_char=43, end=9)]),
            (tf3, 2, [Token(start=6, start_line=1, start_char=20, end_line=1, end_char=31, end=7),
                      Token(start=8, start_line=2, start_char=0, end_line=2, end_char=11, end=9)]),
        ]

        for loc, expect_mlen, expect_matches_posits in docs:
            matches = list(index.match(loc))
            assert expect_mlen == len(matches)
            for i, m in enumerate(matches):
                expected_pos = expect_matches_posits[i]
                assert expected_pos == m.query_position

    def test_bsd_rule_detection(self):
        tf1 = self.get_test_loc('detect/mit/t1.txt')
        ftr = Rule(text_file=tf1, licenses=['bsd-original'])
        index = detect.LicenseIndex([ftr])

        test_doc = self.get_test_loc('detect/mit/t2.txt')
        matches = index.match(test_doc)
        assert 1 == len(matches)
        expected = Token(start=0, start_line=1, start_char=0, end_line=27, end_char=59, end=241)
        assert expected == matches[0].query_position

    def check_detection(self, doc_file, rule_file, expected_matches):
        test_rule = self.get_test_loc(rule_file)
        ftr = Rule(text_file=test_rule, licenses=['mit'])
        index = detect.LicenseIndex([ftr])

        test_doc = self.get_test_loc(doc_file)
        matches = index.match(test_doc)
        assert 1 == len(matches)
        assert expected_matches == matches[0].query_position

    def test_comment_format_1(self):
        expected = Token(start=0, start_line=1, start_char=2, end_line=9, end_char=52, end=86)
        self.check_detection('detect/commentformat/license2.txt', 'detect/commentformat/license1.txt', expected)

    def test_comment_format_2(self):
        expected = Token(start=0, start_line=1, start_char=3, end_line=9, end_char=53, end=86)
        self.check_detection('detect/commentformat/license3.txt', 'detect/commentformat/license1.txt', expected)

    def test_comment_format_3(self):
        expected = Token(start=0, start_line=1, start_char=3, end_line=9, end_char=53, end=86)
        self.check_detection('detect/commentformat/license4.txt', 'detect/commentformat/license1.txt', expected)

    def test_comment_format_4(self):
        expected = Token(start=0, start_line=1, start_char=0, end_line=10, end_char=50, end=86)
        self.check_detection('detect/commentformat/license5.txt', 'detect/commentformat/license1.txt', expected)

    def test_comment_format_5(self):
        expected = Token(start=0, start_line=1, start_char=2, end_line=9, end_char=52, end=86)
        self.check_detection('detect/commentformat/license6.txt', 'detect/commentformat/license1.txt', expected)

    def test_comment_format_6(self):
        expected = Token(start=0, start_line=1, start_char=2, end_line=9, end_char=52, end=86)
        self.check_detection('detect/commentformat/license6.txt', 'detect/commentformat/license3.txt', expected)

    def test_special_characters_detection(self):
        tf1 = self.get_test_loc('detect/specialcharacter/kerberos.txt')
        tf2 = self.get_test_loc('detect/specialcharacter/kerberos1.txt')
        tf3 = self.get_test_loc('detect/specialcharacter/kerberos2.txt')
        tf4 = self.get_test_loc('detect/specialcharacter/kerberos3.txt')
        docs = [
            tf1,
            tf2,
            tf3,
            tf4
        ]

        for loc in docs:
            ftr = Rule(text_file=loc, licenses=['kerberos'])
            index = detect.LicenseIndex([ftr])
            matches = index.match(loc)
            assert 1 == len(matches)

    def test_overlap_detection(self):
        #  test this containment relationship between test and index licenses:
        #   * Index licenses:
        #
        #   +-license 2 --------+
        #   |  +-license 1 --+  |
        #   |  +-------------+  |
        #   +-------------------+
        #
        #   * License texts to detect:
        #
        #   +- license 3 -----------+
        #   | +-license 2 --------+ |
        #   | |  +-license 1 --+  | |
        #   | |  +-------------+  | |
        #   | +-------------------+ |
        #   +-----------------------+
        #
        #   +-license 4 --------+
        #   |  +-license 1 --+  |
        #   |  +-------------+  |
        #   +-------------------+

        tf1 = self.get_test_loc('detect/overlap/license.txt')
        tf2 = self.get_test_loc('detect/overlap/license2.txt')
        tf3 = self.get_test_loc('detect/overlap/license3.txt')
        tf4 = self.get_test_loc('detect/overlap/license4.txt')

        # setup index
        ftr1 = Rule(text_file=tf1, licenses=['overlap_license'])
        ftr2 = Rule(text_file=tf2, licenses=['overlap_license'])
        index = detect.LicenseIndex([ftr1, ftr2])

        # test : 1 contains nothing: return 1
        matches = index.match(tf1)
        assert 1 == len(matches)
        match = matches[0]
        assert ftr1 == match.rule

        # test : 2 contains 1: return 2
        matches = index.match(tf2)
        assert 1 == len(matches)
        match = matches[0]
        assert ftr2 == match.rule

        # test : 3 contains 2 that contains 1: return 2
        matches = index.match(tf3)
        assert 1 == len(matches)
        match = matches[0]
        assert ftr2 == match.rule

        # test : 4 contains 1: return 1
        matches = index.match(tf4)
        assert 1 == len(matches)
        match = matches[0]
        assert ftr1 == match.rule

    def test_fulltext_detection_works_with_partial_overlap_from_location(self):
        # setup
        test_rule = self.get_test_loc('detect/templates/license3.txt')
        ftr = Rule(text_file=test_rule, licenses=['mylicense'])
        index = detect.LicenseIndex([ftr])
        # test
        test_doc = self.get_test_loc('detect/templates/license4.txt')
        matches = index.match(test_doc)
        assert 1 == len(matches)
        expected = Token(start=1, start_line=1, start_char=7, end_line=4, end_char=67, end=42)
        assert expected == matches[0].query_position

class TestDetectLicenseRuleTemplate(FileBasedTesting):
    test_data_dir = TEST_DATA_DIR

    def create_test_file(self, text):
        tf = self.get_temp_file()
        with open(tf, 'wb') as of:
            of.write(text)
        return tf

    def test_index_template(self):
        ttr = Rule(text_file=self.create_test_file(u'A one. A {{}}two. A three.'), template=True)
        index = detect.LicenseIndex([ttr])
        expected = {
            1: {},
            2: {},
            3: {u'two a three':
                   {0: [Token(start=3, start_line=0, start_char=13, end_line=0, end_char=25, end=5, gap=0, value=u'two a three', length=3)]
                   },
               u'a one a':
                   {0: [Token(start=0, start_line=0, start_char=0, end_line=0, end_char=8, end=2, gap=5, value=u'a one a', length=3)]}},
            4: {},
        }
        assert expected == index.license_index.indexes

    def test_index_template2(self):
        ttr = Rule(text_file=self.create_test_file(u'A one. A {{10}}two. A three.'), template=True)
        index = detect.LicenseIndex([ttr])
        expected = {
            u'a one a':
                {0: [Token(start=0, start_line=0, start_char=0, end_line=0, end_char=8, end=2, gap=10, value=u'a one a')]},
            u'two a three':
                {0: [Token(start=3, start_line=0, start_char=15, end_line=0, end_char=27, end=5, gap=0, value=u'two a three')]}
        }
        assert expected == index.license_index.indexes[3]

    def test_simple_detection_xcon_crlf_template(self):
        # setup
        tf1_text = u'''X11 License
        Copyright (C) 1996 X Consortium
        Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
        The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
        Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.
        X Window System is a trademark of X Consortium, Inc.
        '''
        ttr = Rule(text_file=self.create_test_file(tf1_text), licenses=['x-consortium'], template=True)
        index = detect.LicenseIndex([ttr])

        # test
        doc = self.get_test_loc('detect/simple_detection/x11-xconsortium_text.txt')
        matches = index.match(doc)
        expected = Token(start=0, start_line=1, start_char=0, end_line=13, end_char=51, end=216)
        assert expected == matches[0].query_position

    def test_detection_template_with_inter_gap_smaller_than_ngram_len(self):
        # in this template text there are only 2 tokens between the two
        # templates: this is smaller than the ngram_len of 3 and can never be
        # caught by this length
        tf1_text = u'''Redistributions in binary form must
        {{}} reproduce the {{}}above copyright notice'''
        ttr = Rule(text_file=self.create_test_file(tf1_text), licenses=['mylicense'], template=True)
        index = detect.LicenseIndex([ttr])  # default to ngram_len=3

        # test
        tf2 = u'''Redistributions in binary form must nexB company
        reproduce the word for word above copyright notice.'''.splitlines()
        matches = index.match(tf2)
        expected = Token(start=0, start_line=1, start_char=0, end_line=2, end_char=58, end=14)
        assert 1 == len(matches)
        assert expected == matches[0].query_position

    def test_detection_template_with_inter_gap_equal_to_ngram_len(self):
        # in this template there are 3 tokens between the two templates: len is
        # same as ngram_len of 3
        tf1_text = u'''Redistributions in binary form must
        {{}} reproduce the stipulated {{}}above copyright notice'''
        ttr = Rule(text_file=self.create_test_file(tf1_text), licenses=['mylicense'], template=True)
        index = detect.LicenseIndex([ttr])  # default to ngram_len=3

        # test
        tf2_text = (u'''Redistributions in binary form must nexB company
        reproduce the stipulated word for word above copyright notice.'''
        .splitlines())
        matches = index.match(tf2_text)
        expected = Token(start=0, start_line=1, start_char=0, end_line=2, end_char=69, end=15)
        assert 1 == len(matches)
        assert expected == matches[0].query_position

    def test_detection_template_with_inter_gap_bigger_than_ngram_len(self):
        # setup in this template there are only 4 tokens between the two
        # templates: this is bigger than the ngram_len of 3
        tf1_text = u'''Redistributions in binary form must
        {{}} reproduce as is stipulated {{}}above copyright notice'''
        ttr = Rule(text_file=self.create_test_file(tf1_text), licenses=['mylicense'], template=True)
        index = detect.LicenseIndex([ttr])  # default to ngram_len=3

        # test
        tf2_text = (u'''Redistributions in binary form must nexB company
        reproduce as is stipulated the word for word above copyright notice.'''
        .splitlines())
        matches = index.match(tf2_text)
        expected = Token(start=0, start_line=1, start_char=0, end_line=2, end_char=75, end=17)
        assert 1 == len(matches)
        assert expected == matches[0].query_position

    def test_template_detection_publicdomain(self):
        # setup
        tf5 = self.get_test_loc('detect/templates/license5.txt')
        ttr = Rule(text_file=tf5, licenses=['public-domain'], template=True)
        index = detect.LicenseIndex([ttr])

        # test
        tf6 = self.get_test_loc('detect/templates/license6.txt')
        matches = index.match(tf6)
        assert 1 == len(matches)
        expected = Token(start=82, start_line=16, start_char=0, end_line=18, end_char=67, end=118)
        assert expected == matches[0].query_position

    def test_template_detection_with_short_tokens_around_gaps(self):
        # failed when a gapped token starts at a beginning of rule and at a
        # position less than ngram length
        # setup
        tf7 = self.get_test_loc('detect/templates/license7.txt')
        ttr = Rule(text_file=tf7, template=True)

        # use quadri grams by default
        index = detect.LicenseIndex([ttr])

        # test the index
        quad_grams_index = index.license_index.indexes[4]
        assert 205 == len(quad_grams_index)
        assert u'software without prior written' in quad_grams_index

        # test
        tf8 = self.get_test_loc('detect/templates/license8.txt')
        matches = index.match(tf8)
        assert 1 == len(matches)
        expected = Token(start=0, start_line=1, start_char=0, end_line=40, end_char=34, end=276)
        assert expected == matches[0].query_position

    def test_template_detection_works_for_sun_bcl(self):
        # setup
        rule_dir = self.get_test_loc('detect/rule_template/rules')
        rules = models.load_rules(rule_dir)
        index = detect.get_license_index(rules)

        # test
        qdoc = self.get_test_loc('detect/rule_template/query.txt')
        matches = index.match(qdoc)
        assert 1 == len(matches)

def detect_license(location=None, minimum_score=100):
        for match in detect.get_license_matches(location, minimum_score=100):
            for detected_license in match.rule.licenses:
                yield (detected_license,
                       match.query_position.start_line, match.query_position.end_line,
                       match.query_position.start_char, match.query_position.end_char,
                       match.rule.identifier,
                       match.score,)

class TestMatchPositionsAccuracy(FileBasedTesting):
    test_data_dir = TEST_DATA_DIR

    def check_position(self, test_path, expected):
        """
        Check license detection in file or folder against expected result.
        """
        test_location = self.get_test_loc(test_path)
        results = []
        for match in detect.get_license_matches(test_location, minimum_score=100):
            for detected in match.rule.licenses:
                result = (detected,
                          match.query_position.start_line,
                          match.query_position.end_line,
                          match.query_position.start_char,
                          match.query_position.end_char,
                          # match.rule.identifier,
                          # match.score
                          )
                results.append(result)
        assert expected == results

    def test_match_has_correct_positions_basic(self):
        expected = [
            ('gpl-2.0', 1, 1, 0, 50),
            ('gpl-2.0', 2, 2, 0, 50),
            ('gpl-2.0', 3, 3, 0, 50)
        ]
        self.check_position('positions/license.txt', expected)

    def test_match_has_correct_positions_1(self):
        expected = [
            ('apache-2.0', 1, 2, 0, 46),
            ('apache-2.0', 3, 4, 0, 46),
            ('apache-2.0', 5, 6, 0, 46),
            ('apache-2.0', 7, 8, 0, 46),
            ('apache-2.0', 9, 10, 0, 46)
        ]
        self.check_position('positions/license1.txt', expected)

    def test_match_has_correct_positions_2(self):
        expected = [
        ]
        self.check_position('positions//license2.txt', expected)

    def test_match_has_correct_positions_3(self):
        # we had a weird error where the lines were not computed correctly
        # when we had more than one files detected at a time
        expected = [
            ('apache-2.0', 1, 2, 0, 46),
            ('apache-2.0', 3, 4, 0, 46),
            ('apache-2.0', 5, 6, 0, 46),
            ('apache-2.0', 7, 8, 0, 46),
            ('apache-2.0', 9, 10, 0, 46)
        ]
        self.check_position('positions/license3.txt', expected)

    def test_match_has_correct_positions_4(self):
        expected = [
            ('apache-2.0', 3, 4, 0, 46),
        ]
        self.check_position('positions/license4.txt', expected)

    def test_match_has_correct_positions_in_binary_lkms_1(self):
        expected = [
            ('bsd-new', 26, 26, 0, 20),
            ('gpl-2.0', 26, 26, 0, 20),
        ]
        self.check_position('positions/ath_pci.ko', expected)

    def test_match_has_correct_positions_in_binary_lkms_2(self):
        expected = [
            ('gpl-2.0', 24, 24, 0, 11),
        ]
        self.check_position('positions/eeepc_acpi.ko', expected)

    def test_match_has_correct_positions_in_binary_lkms_3(self):
        expected = [
            ('bsd-new', 3, 3, 0, 20),
            ('gpl-2.0', 3, 3, 0, 20),
        ]
        self.check_position('positions/wlan_xauth.ko', expected)

class TestToFix(FileBasedTesting):
    test_data_dir = TEST_DATA_DIR

    @skipIf(True, 'Needs review')
    def test_detection_in_complex_json(self):
        # NOTE: this test cannot pass as we do not have several of the licenses
        # listed in this JSON
        test_file = self.get_test_loc('detect/json/all.json')
        import json
        item_map = json.load(test_file)
        for item in item_map:
            itemid = item_map[item
        ]['id',
        ]
            content = itemid + ' \n ' + item_map[item
        ]['url',
        ] + ' \n ' + item_map[item
        ]['title',
        ]
            tmp_file = self.get_temp_file()
            fh = open(tmp_file, 'w')
            fh.write(content)
            fh.close()

redpajama_set_name: RedPajamaGithub


A drive thru customer got an earful from a McDonald's employee who was talking smack about her coworkers.
A McDonald's employee in Florida was caught with a hot mic spilling tea while working the drive-thru after a man pulled up to give his breakfast order at the Cross City fast-food restaurant.
Video posted to Facebook shows the man, who says he's from out of town, waiting in a McDonald's drive thru to order when he found himself getting an earful of one employee's personal conversation.
"So I was traveling to Homosassa, Florida today and stopped at the McDonald's in Cross City for some breakfast………Hot Mic !!!!! CAUTION FOUL LANGUAGE!," the post read.
The woman could be heard describing being asked to clean on her day off, and how someone owed her money among other details of her personal life. The man who took the video said that he only caught half of the story on camera while he was waiting to order and didn't want to say anything or interrupt in case his food was messed with.


Pepper Pepper is the most widely used spice in the world and is known as the "King of the Spices". Sri Lanka is one of the main pepper producers in the world.
Cinnamon Sri Lanka continues to be the leading producer of "Ceylon Cinnamon" in the world. Although it is grown in Madagascar and Seychelles (after many attempts), it does not have the same quality and pungency as that from Sri Lanka.
Garcinia Both local and foreign research prove that Garcinia (Goraka) helps to control obesity by reducing fat, also one can add it to fish curry to get the desired sour taste.
Cloves Clove is largely used as dried whole buds. Ground clove is used for curry mixtures and clove oil is used for flavoring foods and in pharmaceutical and perfumery industries.
Nutmeg Nutmeg and mace are the two main products. Oils are extracted from both nutmeg and mace. Powdered nutmeg and mace are used as curry powders. Nutmeg and mace are mainly used for culinary purposes to flavor curries and other food products such as confectionaries and bakery products. It is also used in the preparation of beverages and drinks. Nutmeg is used as an ingredient in Ayurvedeic and Chinese medicine.
Mace Mace is the dry, outer aril that firmly envelops the nutmeg kernel. Even though mace and nutmeg are derived from the same nutmeg fruit, these two are considered to be entirely two different spices. Mace possesses an intense aroma compared to the nutmeg. It also tastes more pungent and spicier than nutmeg. Although these two spices have similar uses in recipes, they are both hardly ever used together. Mace is mainly used in baking and has been playing the key role in flavoring doughnuts for centuries.
Cumin seed Cumin seed is one of the most sought-after ingredients in many popular cuisines all over the Mediterranean regions.
Cardamom Cardamom, known as the "Queen of Spices" is a perennial herbaceous plant with a pseudo stem and thick irregular shaped rhizomes.
BlackCumin Seed Black cumin seed is used as a medicine.
Ginger Ginger has a long history of use for relieving digestive problems such as nausea, loss of appetite, motion sickness and pain. The root or underground stem (rhizome) of the ginger plant can be consumed fresh, powdered, dried as a spice, in oil form or as juice.
Coriander Coriander has multiple health benefits. Coriander or cilantro is a wonderful source of dietary fiber, manganese, iron and magnesium as well. In addition, coriander leaves are rich in Vitamin C, Vitamin K and protein. They also contain small amounts of calcium, phosphorous, potassium, thiamin, niacin and carotene.
Dried chilies Dried chilies is used in cooking.


text:
Esoteric Order of Publishing
Littlest Lovecraft: The Horror Collection
Littlest Lovecraft retells three of H.P. Lovecraft's spooky short stories, Pickman's Model, The Haunter of the Dark, and The Whisperer in Darkness, in this fully illustrated adaptation. Explore a mad painter's gallery, uncover a sleepy town's dark secret, and expose the horrors that lurk in the woods and beyond. Note: This book is landscape! The download includes a 4x3 ratio... [click here for more] Esoteric Order of Publishing $4.95
Children's Writer's & Illustrator's Market 2016
THE MOST TRUSTED GUIDE TO THE WORLD OF CHILDREN'S PUBLISHING If you write or illustrate for young readers with the hope of getting published, Children's Writer's & Illustrator's Market 2016 is the trusted resource you need. Now in its 28th edition, CWIM is the definitive publishing guide for anyone who seeks to write or illustrate for kids and young adults. Inside you'll find... [click here for more] F+W Media $29.99 $14.99
The most trusted guide to the world of children's publishing! If you write or illustrate for young readers with the hope of getting published, Children's Writer's & Illustrator's Market 2017 is the trusted resource you need. Now in its 29th edition, CWIM is the definitive publishing guide for anyone who seeks to write or illustrate for kids and young adults. Inside you'll find more... [click here for more] F+W Media $29.99 $14.99
The Most Trusted Guide to the World of Children's Publishing! If you're a writer or an illustrator for young readers and your goal is to get published, Children's Writer's & Illustrator's Market 2018 is just the resource you need. Now in its 30th edition, CWIM contains more than 500 listings for children's book markets, including publishers, literary agents,... [click here for more] F+W Media $29.99 $14.99
Littlest Lovecraft: The Dreamlands Collection
Littlest Lovecraft retells three of H.P. Lovecraft's fanciful short stories, The Silver Key, The Cats of Ulthar, and The White Ship in this fully illustrated adaptation. Recover the key to the realm of dreams, learn why in Ulthar no man may kill a cat, and discover what wonders await in the Dreamlands. Note: This book is landscape! The download includes a 4x3 ratio PDF, a wide format PDF,... [click here for more] Esoteric Order of Publishing $4.95


text:
The Larrinaga Palace is an early 20th century palace located in Zaragoza, Aragon.

Description
The building has a maritime motif, with such decorations as a seaport landscape and a heraldic coat of arms, as Larrinaga and his family were sea traders, with Miguel's father (who passed away in 1888, was the founder of Basque shipping company Olano, Larrinaga & Compañía). The materials used to construct the building were Aragonese stone, brick, and ceramic.

The palace is surrounded by a large garden enclosed by an iron gate. The central square is arranged around a courtyard, which is inspired by Aragonese Renaissance palaces. It is enclosed by a dome that accentuates its centralized character. The building has 3 floors.

History
The palace was a commission by the renowned Aragonese architect Félix Navarro Pérez[es], who erected the building between 1901 and 1911. The palace was built in the old Montemolín district[es] of Zaragoza.

The basement of the building was used as a shelter during the Spanish Civil War

It was completed  in 1908, but was never inhabited as intended for the couple, Miguel Larrinaga y Luzárraga and Asunción Clavero. The couple lived in Liverpool, and had two vacation homes in San Sebastián and Málaga. It was intended for them to retire to the palace, but Clavero passed in 1939, with the palace being put up for sale in 1942. The Giesa elevator company bought the palace and its plot, building a factory adjacent to the former residence. The plot was quickly put up for sale afterwards, being bought out by the Society of Mary, who used the palace as a school. Ibercaja Bank purchased and restored the building in 1993. The building is currently used as a documentation center for storing historical information.

Zaragozan architectural historian, Jesús Martínez Verón, wrote that Larrinaga palace was "The best example of Zaragozaz eclecticism between 1885 and 1920. It is one of the best bourgeois residences erected in Aragon in terms of size and quality of execution.

Family
Ramón de Larrinaga and his wife Telesfora de Luzárraga, who were double third cousins, had five children: Félix (the eldest, who lived with Larrinaga in Liverpool), Anselma, María, Miguel (who bought the land and ordered the construction of the palace) and Domingo. When both Ramón and Telesfora died, the latter four children were minors and were left under the guardianship of several of their uncles (Miguel Antonio de Luzárraga and José de Larrinaga).

When Miguel was 15 years old, he studied law in order to take over his father's company. He traveled to Zaragoza to do so, and at the Basilica del Pilar, he met Clavero, a native of Albalate del Arzobispo, who he would later betroth, during the Fiestas del Pilar.

After Miguel's studies, he traveled to Liverpool and married Clavero. In 1898, he took over Olano, which was renamed Miguel de Larrinaga Steamship Co. Ltd. In 1900, Miguel traveled back to Zaragoza and achired a piece of land for the purpose of settlement, which he titled "Villa Asunción". After the Civil War and upon the death of Clavero in 1939, Miguel sold the land to Giesa.

Current usage
At the present time, the Larrinaga Palace is open to scheduled visits from groups of tourists and schoolchildren. Parts of the building are also used as rentable venue.

See Also

 Palacio de Larrinaga de Zaragoza - YouTube

References

Architecture in Spain
20th-century architecture in Spain
Buildings and structures in Aragon
Palaces in Aragon
Heritage buildings and structures in Spain

redpajama_set_name: RedPajamaWikipedia


text:
What Is a Web Database?
By Meg North
Web databases can organize personal or business data.
A Web database is a database application designed to be managed and accessed through the Internet. Website operators can manage this collection of data and present analytical results based on the data in the Web database application. Databases first appeared in the 1990s, and have been an asset for businesses, allowing the collection of seemingly infinite amounts of data from infinite amounts of customers.
Data Organization
Web databases enable collected data to be organized and cataloged thoroughly within hundreds of parameters. The Web database does not require advanced computer skills, and many database software programs provide an easy "click-and-create" style with no complicated coding. Fill in the fields and save each record. Organize the data however you choose, such as chronologically, alphabetically or by a specific set of parameters.
Web Database Software
Web database software programs are found within desktop publishing programs, such as Microsoft Office Access and OpenOffice Base. Other programs include the Webex WebOffice database and FormLogix Web database. The most advanced software applications can set up data collection forms, polls, feedback forms and present data analysis in real time.
Applicable Uses
Businesses both large and small can use Web databases to create website polls, feedback forms, client or customer and inventory lists. Personal Web database use can range from storing personal email accounts to a home inventory to personal website analytics. The Web database is entirely customizable to an individual's or business's needs.
Often in the world of Web databases, MySQL (structured query language) will be mentioned. This is a relational database management system that manages different Web databases. It operates as a server, and is an open source project. MySQL is often included with Web hosting for managing either personal or business website databases. It is a programming language, so is a more difficult to work with than a straight Web database software program.
What Are Database Applications?
How to Sell Server Space
How to Make a Web Bot
How to Login to Squirrel Mail
What Are the Functions of the Search Engines?
The Disadvantages of a Microsoft SQL Server


Earthbound Farm Coupon: Free Organic Carrots at Walmart!
The Earthbound Farm coupon is back! Print and get organic carrots for free to $0.13 at Walmart (prices vary depending on region). Even though it looks like the coupon is only for organic spring mix, it is actually valid on any Earthbound Farm Organic product.


Back in November 2010 Leah asked Rachel if we'd shoot her wedding. As Leah had been a warden at our wedding, how could we not? The wedding was for the 30th of July so we met up the month before to chat about the day and timings of the big day.
Rachel wanted to cover Leah in the morning with me covering Neil.
When I turned up at the flat, I found Neil and his groomsmen outside making their button holes! Neil had been growing all the flowers in preperation for the wedding and was just finishing when I arrived.
I couldn't resist it and had to use the left over flowers for the ring shots.
Meanwhile Rachel was with Leah and her family preparing for the day.
The boys were pretty relaxed in the morning with the chaos going on all around them.
I love the organ at St Marys, the shape and colours are great.
Leah's friends from The Royal School of Church Music in Salisbury were kind enough to supply the music and choir (which Leah also is part of).
After the speeches we were in for a treat, some of Leah's friends are Morris Dancers and they put on a small display which also included Leah and Neil.
In this traditional dance, the bride and groom are kept apart by the figure of eight pattern performed by the Morris Dancers.
After the cutting of the cake, we whisked Lean and Neil off to Knowlton Church for some couples shots. I also grabbed some frames with my Mamiya RB67 which was pretty exciting!
This image was captured with my Mamiya RB67 medium format film camera. While I am happy with the outcome, I did warn Leah and Neil that they might not come out as expected.. I still have much to learn when it comes to shooting with this beast. The scanned film comes in at just over 800 megabytes per shot.
After the couple shots we hot tailed it back to the reception where the disco was in full swing, ready for the first dance from the bride and groom.
Thank you Leah and Neil for allowing Rachel and I to capture your big day. It was a blast!


text:
As colleges get more and more selective about the students they admit, high schoolers and their parents...
Team Aldea Educativa - enero 27, 2023
The 2023 Hispanic Scholarship Fund (HSF) Scholar Program Application is Now Open and Closes on February 15, 2023
The 2023 Hispanic Scholarship Fund (HSF) Scholar Program Application is now open and closes on February 15,...
Colaboradores - enero 25, 2023
COMMUNITY NEWS BLAST January 23, 2023 HOT TOPIC Family Supports 2023 RFP The CSC expects to budget up to $20 million in FY 23/24 for...
Children Services Council of Broward County - enero 24, 2023
Everything you Want to Know About Financial Aid but Were Afraid to Ask
Qualify to Win $ 40,000 just by Planning your Future
January is here and believe it or not, now is the time to start planning for summer....
International College Counselors - enero 20, 2023
Community News Blast -Children Services Council of Broward County
COMMUNITY NEWS BLAST January 17, 2023 HOT TOPICS Family Supports 2023 RFP The CSC is expecting to budget up to $20 million in FY 23/24...


Can chiropractors in Jacksonville help with knee pain?
Knee pain is an increasingly more common problem in our society and as a result, we see more and more patients with knee problems in our centers. Knee pain is commonly caused by muscle imbalances and structural misalignment around the hip, knee, and ankle joints brought on by poor posture, overuse & repetitive stress, and physical trauma. Chiropractor For Knee Pain in Jacksonville includes a thorough examination of the muscles, ligaments, joints, posture, and gait, as well as discussing past injuries and lifestyle habits that may be contributing to your condition. In fact, there are more than 150 techniques that good chiropractor in Florida use to manually adjust the spine, joints, and muscles with varying degrees of force. The vast array of knee problems and their symptoms are far too numerous to go over here.
Is physio better than a chiropractor care in Jacksonville, Florida?
Chiropractic treatment is also very effective for many other knee problems. The initial treatment for a patellar problem begins by decreasing the inflammation in the knee. Chiropractors in Duval County 32202 can help sore knees and are most effective when combined with complementary corrective exercise. All these different causes of knee pain result in slightly different kinds of pain that can require very different types of treatment. Balanced and coordinated motion of all of these structures allows the knee to move optimally and pain-free. While an athlete with lower back pain may benefit from a high-velocity spinal adjustment, you would receive care specific to your needs. Those that do, usually require the help of an orthopedic surgeon. You do not have to decide to live with the pain, reduce your activity level, or start taking more pain medication. The knee is a complex joint that relies heavily on ligaments and muscles for stability.
Do chiropractors in Jacksonville work on hips?
The most common complaints in Jacksonville relate to 'wear and tear" or osteoarthritis and although a condition such as osteoarthritis is not curable, the symptoms can be reduced and the progression of the problem can be helped thanks to our unique approach to treatment. Chiropractic therapists can help in the early stages by decreasing pain and inflammation. This can alleviate joint stress, reduce inflammation, and facilitate healing of the joint and surrounding soft tissue. These injuries are usually traumatic, and occur after the foot is planted on the ground and the knee twisted too far. This can happen from injury, overly tight muscles, joint degeneration and even from foot, ankle or hip problems that shift the way the knee is used. A chiropractor may gently manipulate your soft tissue to stop muscle spasms and relieve tenderness.
While many medical doctors in Jacksonville, Florida will listen to your symptoms and provide medications that may temporarily relieve pain. A knee pain chiropractor focuses on the relationships between structure and function, explains Robert Hayden, DC, Ph.D., a spokesperson for the American Chiropractic Association who has been in private practice for 22 years. One area where doctors must make that distinction quite often is with conditions of the knee. There are usually several angles of approach when it comes to treating knee pain this way. Therefore to resolve the knee pain, we may also treat other areas, to maximize long-term improvement.


text:
Q: NDK build error (error: linker command failed with exit code 1 (use -v to see invocation)) Application.mk
APP_STL := gnustl_static
APP_ABI := all

Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libz
LOCAL_SRC_FILES := ../prebuild/libz.a
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include/
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libssl
LOCAL_SRC_FILES := ../prebuild/libssl.a
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto
LOCAL_SRC_FILES := ../prebuild/libcrypto.a
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libjson-c
LOCAL_SRC_FILES := ../prebuild/libjson-c.a
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcurl
LOCAL_SRC_FILES := ../prebuild/include/libcurlall/$(TARGET_ARCH_ABI)/libcurl.a
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := curl-ndk
LOCAL_SRC_FILES := ../cpp/curl-http.cpp
LOCAL_STATIC_LIBRARIES := libcurl libssl libcrypto libz libjson-c
LOCAL_LDLIBS := -lz -llog -ljnigraphics
include $(BUILD_SHARED_LIBRARY)

clean project and I'm trying to cross compile NDK then show given below error:
/Volumes/Work/Android/Projects/app/src/main/jni/../prebuild/libz.a: error adding symbols: File in wrong format
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/Volumes/Work/Android/Projects/app/src/main/obj/local/arm64-v8a/libcurl-ndk.so] Error 1

Its working on 32 bits fine but 64 bit its show error
Thanks in advance

A: You're using one prebuilt for all ABIs. You need one prebuilt for each ABI you target. The typical way to write a prebuilt module is like this:
include $(CLEAR_VARS)
LOCAL_MODULE := libz
LOCAL_SRC_FILES := ../prebuild/$(TARGET_ARCH_ABI)/libz.a
LOCAL_EXPORT_C_INCLUDES := ../prebuild/include/
include $(PREBUILT_STATIC_LIBRARY)

Then you can have prebuild/armeabi-v7a/libz.a, prebuild/arm64-v8a/libz.a, etc. Disable ABIs you don't want to build for (or don't have prebuilts for) using APP_ABI in your Application.mk.

redpajama_set_name: RedPajamaStackExchange


You are reading me because Jamie is off doing what Jamie does. She is helping make life a little better for children who really need life to be a little better. Jamie asked me and others to write about something she loves. While others will no doubt write about baking, gadgets, baking gadgets, and naps, I will write about one of the things we have in common.
Jamie is a person of deep faith. She is a disciple of Jesus and all that comes with it. The work she does for children in need of "forever families" is not a career. It is a calling. She does this because she believes this is what Jesus would do.
But her faith dictates the steps of her life. She is an Emory educated woman who will work a long time in her current field to make what was spent on her education. Callings are funny that way and God has a sense of humor that will get your goat sometimes. Having said all that, you are reading her blog and hopefully you will be a better person for it.
I absolutely love how different people picture Jesus. Try this one day. Google "Jesus," then hit "images." You will see Korean Jesus, black Jesus, velvet Jesus (or is that Willie Nelson?), NRA Jesus, woman Jesus, and many others. I am waiting on Twilight Jesus as he "sparkles" coming out of the tomb and into the sunlight.
But I have a favorite image. It is the White American Republican Jesus. There he is with his Roman nose, luxuriant straight brown hair, and light olive complexion. I don't think the world is quite ready for the Scotch-Irish Jesus in a kilt, playing Amazing Grace on the bag-pipes. But this would be the Jesus were I to create Him in my own image.
Jesus is confounding to people who attempt to define him. When I read the Gospels, I see a man that did pretty radical things. Many have reduced him to an image closer to Mr. Rogers than what is the truth.
We have made him nice.
Last time I checked, nice guys don't throw a city into an uproar with their presence and die hanging on a cross surrounded by thieves and enemies. Nice just doesn't fit.
What really sticks out to me when I read the Matthew, Mark, Luke, and John is the way he walked in the world. He used common images and simple stories to tell cosmic truth. The people he chose to follow him were screwed up. He did not seem at all interested in what people thought about him. When the crowds that followed got too large he would turn and say the most ridiculous things. Things like, "If you want to follow me you have to eat my flesh and drink my blood." Or my personal favorite, "If you love me then you have to hate your mother, father, brothers, and sisters." In his circle of 12 were tax-collectors (the ancient equivalent of ambulance chasing personal injury lawyers), revolutionaries, and foul mouthed fishermen.
He had infinite patience with sinners. He had no patience with self righteous religious leaders and hypocrites. "He laughed and shared stories with the thief and the whore." (Thank you Bethany Dillon) He heaped burning coals (figurative of course) on the heads of those who would look down their noses at those "sinners." He would answer honest questions with grace. He would answer dishonest questions with more questions. He was infuriating to those who sought to trap him and living water to those who sought him. He loved people whom no one else loved. He liked wedding parties. He loved his friends and said no greater love can be shown in this world than when you are willing to give your life for them.
This man was good news to a world that needed good news. He talked about God's love for the world and then showed the world that love.
Vaya con Dios my friends.
Joseph writes regularly at Joseph's Blog-O-Log. It is one of Jamie's favorite things to read - second only to Entertainment Weekly.
Marvelously written Mr. Kinnaird - per usual.


Your quality leather furniture wasn't cheap to buy, so you won't want to take risks over it's care. Regular, professional leather furniture cleaning can help to prevent any undue wear and keep your beautiful leather upholstery looking great for years to come.
Leather furniture in your home provides comfort and beauty and evokes a sense of prestige. With a reputation for great durability and a long life, your leather furniture can be a part of your home furnishings for a lifetime. So don't let the colour fade or appearance deteriorate beyond repair. Our team in London Borough of Havering are experts in Leather Furniture Cleaning and so are able to offer the best range of repair and restoration services available in the industry.
Unfortunately over time, accidents happen, leather is susceptible to scuffs, scratches, cuts, fading and other damage. As an owner of leather furniture you are bound to experience some of the common problems associated with this kind of furniture. Oils and grease, dust, soil, dyes and ink can all mark your leather.
Many cleaning products currently on the market are not suitable for cleaning leather, and may break down leather finishes, promoting dryness and cracking. You can rest assured that all our leather cleaning products are safe and effective. We have over 300 tanneries and manufacturers that endorse these products.
In between professional cleanings you can maintain the health and beauty of your leather furniture by cleaning with Chem-Dry® Soft Cleaner and rejuvenating the protection with Chem-Dry® Protection Cream. Both products can be purchased in the Buy Products section of the website.


Compensation Statement - General Motors Corp. and G.R. Wagoner Jr.
I acknowledge that there are no other oral or written understandings or agreements in effect regarding my salary, nature or duration of employment, or the other matters set forth in this Compensation Statement.


text:
La Casa Senyorial de Mālpils (en letó: Mālpils muižas pils) és una mansió a la regió històrica de Vidzeme, al municipi de Mālpils del nord de Letònia.

Història
Un castell militar (en alemany: Schloß Lemburg) va ser construït a la segona meitat del  i demolit després de la guerra de 1626. No va ser substituït fins a la segona meitat del segle XVIII, quan una nova finca va ser construïda a la vora de les ruïnes del castell.La mansió es va cremar el 1905 i va ser reconstruïda entre 1907 i 1911 pel mestre d'obres Jānis Meņģelis d'acord amb un disseny de l'arquitecte Wilhelm Bockslaff.

De 1949 a 1965 va ser la seu d'una escola de tecnologia de reg. Després de 1980 va allotjar un museu sobre l'agricultura i el reg, que mostra el primer mapa de Letònia dibuixat el 1688 per enginyers suecs. L'edifici va ser privatitzat i renovat després de 2006 i ara allotja un restaurant i un hotel amb sales per a conferències.

Referències

Bibliografia

Vegeu també
 Llista de palaus i cases senyorials de Letònia

Mālpils
Vidzeme


text:
AGEPI became part of the EURAXESS-Moldova Services Network as EURAXESS Local Contact Point
EURAXESS-Moldova Services Network in is part of the European network that connects more than 200 service centers for researchers, who joined the EURAXESS Services Commitment. EURAXESS Services Network is an initiative of the European Commission and the countries participating in the research programs of the European Union. Through the EURAXESS Network is provided information and assistance to foreign researchers who wish to come to the Republic of Moldova, and to those looking for jobs in research in other European countries throughEURAXESS portal and with the support of the National EURAXESS Services Centres and the EURAXESS Local Contact Points. EURAXESS objective is to contribute to removing barriers to the mobility of researchers.EURAXESS-Moldova Services Network in provides free counseling services to researchers from abroad who wish to engage in universities, research institutes or among other companies of the Republic of Moldova.For more information on services provided by the EURAXESS Services Network, available jobs in the research sector, and information about living in another European country, you can contact the national EURAXESS portals of the 40 partner countries and EURAXESS Services Centres.


Have great fun with this brightly colored football. Its shape makes it easy for your dog to catch it, grab it and run with it! No two sides of the football is the same color. All footballs are an array of three of the four following colors: red, orange, blue or yellow.
All Katie's Bumpers toys are intended as interactive play toys, not as chew toys.
Visible on snow, water, or land.
Intended as interactive play toys.
They are not intended as chew toys.


Protecting your Apple iPad is easy with this durable rugged case. This is a special corner cushioned case. It consists of a tough polycarbonate frame covered by a thick shock absorbing silicone with extra protection at each corner. A screen protector seals the display surface. A built-in kickstand is provided to hold the case in various positions. Works with iPad 2, 3, and 4.
Click the button below to add the Rugged Case for iPad 2, 3, 4 to your wish list.


text:
package master

import (
	"k8s.io/kubernetes/pkg/api/rest"
	"k8s.io/kubernetes/pkg/apis/batch"
	batchapiv1 "k8s.io/kubernetes/pkg/apis/batch/v1"
	batchapiv2alpha1 "k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
	"k8s.io/kubernetes/pkg/genericapiserver"
	jobetcd "k8s.io/kubernetes/pkg/registry/job/etcd"
)

type BatchRESTStorageProvider struct{}

var _ RESTStorageProvider = &BatchRESTStorageProvider{}

func (p BatchRESTStorageProvider) NewRESTStorage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter RESTOptionsGetter) (genericapiserver.APIGroupInfo, bool) {
	apiGroupInfo := genericapiserver.NewDefaultAPIGroupInfo(batch.GroupName)

	if apiResourceConfigSource.AnyResourcesForVersionEnabled(batchapiv2alpha1.SchemeGroupVersion) {
		apiGroupInfo.VersionedResourcesStorageMap[batchapiv2alpha1.SchemeGroupVersion.Version] = p.v2alpha1Storage(apiResourceConfigSource, restOptionsGetter)
		apiGroupInfo.GroupMeta.GroupVersion = batchapiv2alpha1.SchemeGroupVersion
	}
	if apiResourceConfigSource.AnyResourcesForVersionEnabled(batchapiv1.SchemeGroupVersion) {
		apiGroupInfo.VersionedResourcesStorageMap[batchapiv1.SchemeGroupVersion.Version] = p.v1Storage(apiResourceConfigSource, restOptionsGetter)
		apiGroupInfo.GroupMeta.GroupVersion = batchapiv1.SchemeGroupVersion
	}

	return apiGroupInfo, true
}

func (p BatchRESTStorageProvider) v1Storage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter RESTOptionsGetter) map[string]rest.Storage {
	version := batchapiv1.SchemeGroupVersion

	storage := map[string]rest.Storage{}
	if apiResourceConfigSource.ResourceEnabled(version.WithResource("jobs")) {
		jobsStorage, jobsStatusStorage := jobetcd.NewREST(restOptionsGetter(batch.Resource("jobs")))
		storage["jobs"] = jobsStorage
		storage["jobs/status"] = jobsStatusStorage
	}
	return storage
}

func (p BatchRESTStorageProvider) v2alpha1Storage(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter RESTOptionsGetter) map[string]rest.Storage {
	version := batchapiv2alpha1.SchemeGroupVersion

	storage := map[string]rest.Storage{}
	if apiResourceConfigSource.ResourceEnabled(version.WithResource("jobs")) {
		jobsStorage, jobsStatusStorage := jobetcd.NewREST(restOptionsGetter(batch.Resource("jobs")))
		storage["jobs"] = jobsStorage
		storage["jobs/status"] = jobsStatusStorage
	}
	return storage
}


text:
A new year's resolution for the legal profession: to look like the country it serves
For too many people, justice is delivered by a class they cannot join that neither looks nor sounds like them.
By Gloria De Piero
The end of the year is always a chance to look back and reflect on people you have met over the past months. In my role as shadow justice minister, I have a lot to be thankful for. I've been lucky enough to work with a range of people with an interest in the law – from lawyers who have supported me with policy development, to victims who have bravely spoken out so we can demand action from the government, to charities who are tirelessly working to stem the tide of negative consequences from the government's disastrous record of cuts to everything from policing to prisons to legal aid.
But this new year I will be thinking of one incredible young woman in particular, who reminds me just how much there is to do to make sure that those responsible for our justice system look like the country they serve.
Earlier this year I met 18 year old Bryony Toon, a care leaver who receives free school meals at Quarrydale School in my former coalfields constituency. She was part of the Sutton Trust's excellent Pathways scheme, designed to support young people from disadvantaged backgrounds to access the professions.
Despite Bryony's difficult start in life, she has a monumental drive to succeed. After her post-16 advisor suggested she use her sharp mind, outstanding grades and "strengths in arguing" to explore a career in the law, she set out to seize every opportunity available. She landed work experience at top law firm Clifford Chance, and applied for Oxford University.
This was certainly a smart move. The statistics show your chances of doing almost any job at the top of the legal sector are significantly enhanced if you come from a wealthy background – one thing Bryony cannot achieve through hard work alone.
The Sutton Trust say that 71 per cent of top QCs, 74 per cent of judges and 51 per cent of partners in top law firms had attended an independent school – an astonishing state of affairs given that just seven per cent of children are educated privately. Even amongst less elite legal roles like solicitors, a whopping 27 per cent go to private school, according to figures from the Law Society.
Bryony can certainly try to get herself some elite credentials by applying for Oxford. After all, three quarters of judges, and 80 per cent of top QCs went to Oxbridge, so it's virtually a pre-requisite.
But it seems that it just isn't that easy.
She had an interview at Brasenose College earlier this month, and diligently prepared for every possible question she could be asked. But when it came down to it, no amount of preparation could change the fact that she just didn't feel she belonged. She was left feeling totally out of place after meeting other candidates and students who seemed to be from a different world.
"I felt massively marginalised and left out from 'posh' people," she said. "Even if I get an offer, I'm now not sure Oxford is for me."
This month I also spoke to some other amazing young women from non-traditional backgrounds, who are further along in their career journey.
Deeba Syed, Chair of Young Labour Lawyers, told me, "There is a culture of white middle-class etiquette. Our Christmas party is a black-tie event – I've never been to a black-tie event before. If you are talking about your life and reveal you're from a different social strata, I think it can affect your performance and happiness."
Another, who grew up on a council estate on free school meals, found she couldn't get an interview, even after years of rigorous and expensive training. Feeling thoroughly demoralised, she decided to change her "Muslim-sounding" surname on the application – only to find responses from law firms rolling in. She is now a qualified solicitor, but is still angry that her background was "definitely to my detriment."
We are now entering 2019. How can it be possible that talented young women are having to conceal their names and their backgrounds, to pursue a career in something as fundamental to our social fabric as the justice system?
Being in court is traumatic enough without being represented and judged by a cast of professionals from lawyers to justices who might as well come from a different planet.
Our legal system must start to look like the country it serves. Until there is true diversity at every stage of the pipeline to the top, some of our best and brightest will continue to feel that law is not for 'people like them'.
Some great work is already underway, like the Sutton Trust scheme Bryony is benefitting from, and from top firms like Clifford Chance who have introduced name-blind applications, significantly increasing the numbers of non-traditional applicants they accept.
But it is clear that we have a long way to go. The Sutton Trust find it hard to provide opportunities outside London, and local firms outside London are some of the worst offenders for unpaid internships. We need to see more transparency from law firms at every level about who they are accepting.
The Inns that house the next generation of barristers are all in London. Couldn't they establish regional centres, to draw on the full talent of the country, rather than requiring young people to leave their homes and head for the alien and expensive capital? They urgently need to expand their scholarship and bursary programmes and increase their diversity.
Oxford are taking some steps to improve access for less privileged students – Bryony took advantage of their Law Faculty scheme to give state school students a taste of what studying law is like. But the cultural barriers she faces are just enormous, and her experience at interview has made her question if this is the right place for her, even if she is accepted.
I have no doubt that Bryony will achieve her dream of becoming a human rights lawyer – her sheer determination and talent mean that the sky is the limit for her. But it is impossible to ignore the fact that Bryony's background will make her a very rare breed at the top of the legal profession.
I want everyone working at every level of the legal sector to make it their new year's resolution to find more people like Bryony, do everything they can to nurture their talents, and create a climate where everyone feels welcome – so that we have a truly representative justice system.
› We need a "1945 moment" to deliver prosperity and justice for all in the 21st century
Gloria De Piero is Labour MP for Ashfield and shadow justice minister.
Labour MPs who want a Brexit deal are in a mess of their own making